Прочитать на английском

Поделиться через


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

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

Если вы подключаете внешний диск и не имеете успеха с этими инструкциями по подключению, попробуйте выполнить инструкции по подключению USB-устройств. В wsl --mount настоящее время команда не поддерживает usb/флэш-накопители или средства чтения SD-карт (дополнительные сведения об этой проблеме).

Примечание

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

Необходимые компоненты

Вам потребуется использовать Windows 11 сборки 22000 или более поздней версии или запустить версию WSL в Microsoft Store. Чтобы проверить версию WSL и Windows, используйте следующую команду: wsl.exe --version

Различия между подключением внешнего диска с форматированием Windows и форматированием Linux

Внешние диски, отформатированные для Windows, обычно используют форматирование файловой системы NTFS. Внешние диски, отформатированные для Linux, обычно используют форматирование файловой системы Ext4.

Если вы подключили диск с форматом NTFS в файловой системе Windows, вы можете получить доступ к диску из дистрибутива Linux с помощью WSL, создав подключенный каталог (sudo mkdir /mnt/dзаменив "d" любым буквой диска, который вы хотите использовать), а затем с помощью подключаемого модуля взаимодействия файловой системы с помощью drvfs команды:

sudo mount -t drvfs D: /mnt/d

Дополнительные сведения о сценариях подключения.

Если у вас есть диск с форматом Ext4, его нельзя подключить в файловой системе Windows. Чтобы подключить диск с форматом Ext4 в дистрибутиве Linux с помощью WSL, можно использовать команду, приведенную wsl --mount ниже.

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

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

  1. Определите диск. Чтобы перечислить доступные диски в Windows, выполните следующую команду:

    GET-CimInstance -query "SELECT * from Win32_DiskDrive"
    

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

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

    wsl --mount <DiskPath>
    

    Подключение диска в 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. Для этого сначала необходимо подключить VHD в 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 диск не используется.

Подключение VHD WSL

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

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

По умолчанию 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.