Подключение диска Linux в WSL 2

если вы хотите получить доступ к формату диска Linux, который не поддерживается Windows, можно использовать WSL 2 для подключения диска и доступа к его содержимому. В этом учебнике рассматриваются шаги по определению диска и раздела для подключения к WSL2, их подключению и доступу.

если вы ищете рекомендации по подключению usb-устройства (устройства флэш-памяти, устройства SD card и т. д.), см. статью Подключение USB-устройства.

Примечание

Для подключения диска к WSL 2 требуется административный доступ. Команда WSL 2 mount не поддерживает подключение диска (или разделов, принадлежащих диску), которые в настоящее время используются. wsl --mount всегда присоединяет весь диск, даже если запрошен только раздел. невозможно подключить установочный диск Windows.

Предварительные требования

чтобы получить доступ к этой функции, необходимо включить Windows 11 сборки 22000 или более поздней версии. вы можете присоединиться к программе "предварительные оценки" Windows , чтобы получить последние предварительные сборки.

Подключение несекционированного диска

В этом простом случае, если у вас есть диск, на котором нет разделов, его можно подключить напрямую с помощью wsl --mount команды. Сначала необходимо опознать диск.

  1. найдите диск , чтобы вывести список доступных дисков в Windows выполните команду:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Пути к дискам доступны в столбцах "DeviceID". Обычно под \\.\PHYSICALDRIVE* форматом.

  2. Подключение диска . с помощью PowerShell можно подключить диск, используя обнаруженный выше путь к диску, выполнить:

    wsl --mount <DiskPath>
    

    Mounting a drive in WSL

Подключение секционированного диска

Если у вас есть диск, в котором нет уверенности в том, в каком формате находится файл, или какие разделы он содержит, можно выполнить следующие действия, чтобы подключить его.

  1. найдите диск , чтобы вывести список доступных дисков в Windows выполните команду:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

    Пути к дискам указываются после "DeviceID" (обычно в \\.\PHYSICALDRIVE* формате).

  2. Выведите список и выберите секции для подключения в WSL 2 . После идентификации диска запустите:

    wsl --mount <DiskPath> --bare
    

    Это сделает диск доступным в WSL 2. (В нашем примере <DiskPath>\\.\PHYSICALDRIVE* .

  3. После подключения раздел можно вывести в список, выполнив следующую команду в WSL 2:

    lsblk
    

    Будут отображены доступные блочные устройства и их разделы.

В Linux блочное устройство определяется как /dev/<Device><Partition> . Например,/dev/sdb3 — это раздел номер 3 диска sdb .

Выходные данные примера:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb      8:16   0    1G  0 disk
├─sdb2   8:18   0   50M  0 part
├─sdb3   8:19   0  873M  0 part
└─sdb1   8:17   0  100M  0 part
sdc      8:32   0  256G  0 disk /
sda      8:0    0  256G  0 disk

Определение типа файловой системы

Если вы не знакомы с типом файловой системы диска или раздела, можно использовать следующую команду:

blkid <BlockDevice>

Будет выведен обнаруженный тип файловой системы (в TYPE="<Filesystem>" формате).

Подключить выбранные секции

Определив разделы, которые необходимо подключить, выполните следующую команду в каждом разделе:

wsl --mount <DiskPath> --partition <PartitionNumber> --type <Filesystem>

Примечание

Если вы хотите подключить весь диск как один том (т. е. Если диск не секционируется), --partition можно опустить.

Если этот параметр опущен, то типом файловой системы по умолчанию будет «ext4».

Доступ к содержимому диска

После подключения доступ к диску можно получить по пути, на который указывает значение конфигурации: automount.root . Значение по умолчанию — /mnt/wsl.

с Windows доступ к диску можно получить из проводника, перейдя к: \\wsl$\\<Distro>\\<Mountpoint> (выберите любой дистрибутив Linux).

Отключение диска.

Если необходимо отключить диск от WSL 2 и отсоединить его от него, выполните команду:

wsl --unmount <DiskPath>

Подключение виртуального жесткого диска в WSL

Примечание

WSL из Microsoft Store вводит новый аргумент для непосредственного подключения виртуального жесткого диска:

Вы также можете подключить файлы виртуального жесткого диска (VHD) к WSL с помощью wsl --mount . для этого сначала необходимо подключить виртуальный жесткий диск к Windows с помощью Mount-VHD команды в Windows. Не забудьте выполнить эту команду с правами администратора. Ниже приведен пример, в котором мы используем эту команду, а также выводится путь к диску. Обязательно замените <pathToVHD> фактический путь VHD.

Write-Output "\\.\PhysicalDrive$((Mount-VHD -Path <pathToVHD> -PassThru | Get-Disk).Number)"

Вы можете использовать приведенные выше выходные данные, чтобы получить путь к диску для этого виртуального жесткого диска и подключить его к WSL, следуя инструкциям из предыдущего раздела.

Эту методику также можно использовать для подключения и взаимодействия с виртуальными жесткими дисками других WSL дистрибутивов, так как каждый WSL 2 дистрибутив хранится с помощью файла виртуального жесткого диска с именем: ext4.vhdx . По умолчанию виртуальные жесткие диски для WSL 2 дистрибутивов хранятся по этому пути: C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName] , будьте внимательны при доступе к этим системным файлам, это рабочий процесс Power User. wsl --shutdownПрежде чем использовать этот диск, убедитесь, что он не используется.

Mounting WSL VHD

Справочник по командной строке

Подключение определенной файловой системы

По умолчанию WSL 2 будет пытаться подключить устройство как ext4. Чтобы указать другую файловую систему, выполните команду:

wsl --mount <DiskPath> -t <FileSystem>

Например, чтобы подключить диск в файловой системе FAT, выполните команду:

wsl --mount <Diskpath> -t vfat

Примечание

Чтобы получить список доступных файловых систем в WSL2, выполните команду: cat /proc/filesystems
если диск подключен через WSL2 (файловая система Linux), он больше не доступен для подключения через драйвер ext4 в Windowsной файловой системе.

Подключение определенного раздела

По умолчанию WSL 2 пытается подключить весь диск. Чтобы подключить конкретный раздел, выполните команду:

wsl --mount <Diskpath> -p <PartitionIndex>

Это работает только в том случае, если диск является основной загрузочной записью (MBR) или GPT (таблица разделов GUID). Узнайте о стилях разделов — MBR и GPT.

Указание параметров подключения

Чтобы указать параметры подключения, выполните:

wsl --mount <DiskPath> -o <MountOptions>

Пример

wsl --mount <DiskPath> -o "data=ordered"

Примечание

В настоящее время поддерживаются только параметры файловой системы. Универсальные параметры, такие как ro, rw, noatime, ... , не поддерживаются.

Подключение диска без подключения

Если схема диска не поддерживается ни одним из указанных выше параметров, можно подключить диск к WSL 2 без подключения к нему, выполнив:

wsl --mount <DiskPath> --bare

Это сделает блочное устройство доступным в WSL 2, чтобы его можно было подключить вручную. Используйте lsblk для перечисления доступных блочных устройств в WSL 2.

Указание имени подключения

Примечание

Этот параметр доступен только для WSL из Microsoft Store

По умолчанию имя подключения к локальной системе создается на основе имени физического диска или VHD. Это можно переопределить с помощью --name . Пример

wsl --mount <DiskPath> --name myDisk

Отсоединение диска

Чтобы отсоединить диск от WSL 2, выполните команду:

wsl --unmount [DiskPath]

Если Diskpath параметр не указан, все подключенные диски отключаются и отсоединяются.

Примечание

Если не удается отключить один диск, WSL 2 можно принудительно завершить, выполнив команду wsl --shutdown , которая отключит диск.

Ограничения

  • В настоящее время к WSL 2 можно подключить только целые диски. Это означает, что невозможно присоединить только один раздел. В частности, это означает, что невозможно использовать wsl --mount для чтения раздела на загрузочном устройстве, так как это устройство не может быть отсоединено от Windows.

  • Только системные системы, которые изначально поддерживаются в ядре, могут быть подключены wsl --mount . Это означает, что невозможно использовать установленные драйверы FileSystem (например, NTFS-3G), вызвав wsl --mount .