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

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

Если вы ищете рекомендации по подключению USB-устройства (флэш-накопителя, средства чтения SD-карт и т. д.), см. Подключение 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 представляет новый аргумент для прямого подключения виртуального жесткого диска:wsl --mount --vhd <pathToVHD>

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

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>

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

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

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

wsl --mount <DiskPath> --name myDisk

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

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

wsl --unmount [DiskPath]

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

Примечание

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

Ограничения

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

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

  • Файловые системы, не поддерживаемые ядром, можно подключить через --bare подключение, а затем вызвать соответствующий драйвер FUSE.