====== Монтирование физических, виртуальных и сетевых дисков в WSL2 (Windows Subsystem for Linux) ====== Windows Subsystem for Linux (WSL) предоставляет ряд удобных возможности подключения физических, виртуальных и сетевых дисков. По умолчанию в среде wsl в каталог ''/mnt/'' монтируются все логические диски, которые доступны в Windows. Кроме того, вы можете прямо из проводника Windows обратиться к файловой системе WSL по UNC пути ''\\wsl$\'' (например, ''\\wsl$\ubuntu\etc\'' ). В этой статье мы рассмотрим, как смонтировать различные типы дисков в среде WSL. {{https://telegra.ph/file/a441567ef4aec0655ced0.png?nolink&}} ==== Монтирование физических дисков Windows Subsystem for Linux 2 ==== Новая версия Windows Subsystem for Linux (WSL 2) позволяет монтировать физические диски, или отдельные разделы с файловыми системами, которые не поддерживаются в Windows (список поддерживаемых файловых систем содержится в файле ''/proc/filesystems'' ). Например, у вас есть физический на которым созданы разделы с файловой системой диск ext4, и вы хотите получить к нему доступ из WSL и Windows. Обновите свою версию WSL 2, прежде чем двигаться дальше: ''wsl –update'' Теперь нужно вывести список доступных дисковых устройств в Windows: ''wmic diskdrive list brief'' В этом примере к компьютеру подключены два физических диска. {{https://winitpro.ru/wp-content/uploads/2023/10/windows-vyvesti-spisok-fizicheskih-diskov.png?nolink&}} Windows - вывести список физических дисков Можно смонтировать в WSL диск целиком: ''wsl –mount \.PHYSICALDRIVE2'' Или только определенный раздел: ''wsl –mount \.PHYSICALDRIVE2 –partition 1'' {{https://winitpro.ru/wp-content/uploads/2023/10/wsl-mount-physicaldrive2.png?nolink&}} wsl –mount \.PHYSICALDRIVE2 Раздел физического диска был успешно смонтирован в директорию /mnt/wsl/PHYSICALDRIVE2p1. Вы можете получить доступ к файлам на этом разделе из Windows по UNC пути ''\\wsl$\ubuntu\mnt\wsl\PHYSICALDRIVE2p1'' . Проверьте, что раздел диска с файловой системой ext4 доступен в WSL: ''lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT'' {{https://winitpro.ru/wp-content/uploads/2023/10/montirovat-razdel-fizicheskogo-diska-v-wsl.png?nolink&}} Монтировать раздел физического диска в WSL Чтобы отмонтировать диск, выполните: ''wsl –umount \.PHYSICALDRIVE2 –partition 1'' Для автоматического монтирования раздела физического диска при входе пользователя в Windows, создайте с помощью PowerShell простое задание планировщика: ''$TaskName="WSL_Mount"'' ''$Trigger= New-ScheduledTaskTrigger -AtLogOn'' ''$Action= New-ScheduledTaskAction -Execute "cmd" -Argument "/c wsl –mount \.PHYSICALDRIVE2 –partition 1"'' ''Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -Action $Action -RunLevel Highest –Force''
На данный момент WSL не поддерживает монтирование USB накопителей и SD карт. Для проброса USB накопителей в WSL рекомендуется использовать пакет **usbipd-win**, который позволяет реализовать проброс устройств с помощью протокола USB over IP.
==== Как подключить (смонтировать) сетевой диск в WSL ==== Из WSL вы можете получить доступ к общим сетевым папкам или NAS устройствам. Есть два способа подключения сетевых дисков в WSL: * Можно смонтировать сетевой диск, подключенный в Windows и которому назначена буква диска * Смонитировать сетевую папку по UNC пути с помощью CIFS/SMB клиента в WSL. Допустим, вы подключили сетевую папку в виде диска с помощью команды net.exe use X: \\192.168.31.102\tools или подключили сетевой диск через GPO. Чтобы получить доступ к этому сетевому диску из WSL нужно: - Создать точку монтирования: ''$ sudo mkdir /mnt/x'' - Смонтировать диск: ''$ sudo mount -t drvfs X: /mnt/x'' - Теперь вы можете получить доступ к файлам и папкам на сетевом диске. Чтобы автоматически монтировать этот сетевой диск, добавьте следующую строку в /etc/fstab: X: /mnt/x drvfs defaults 0 0 Затем смонтируйте все файловые системы: ''$ mount -a'' {{https://winitpro.ru/wp-content/uploads/2023/10/podklyuchit-setevoj-disk-ili-papku-v-wsl.png?nolink&}} подключить сетевой диск или папку в WSL Также можно смонтировать сетевые папки через пакет CIFS: ''$ sudo apt install cifs-utils'' ''$ sudo mount -t cifs -o user={user},pass={password},iocharset=utf8,vers=3.0 //192.168.31.102/tools /mnt/tools'' '' //'' ''//''В данном примере мы явно указали что для подключения нужно использовать протокол SMB 3.0. По умолчанию используется SMBv1, который отключен в современных версиях Windows.'' //'' ==== Смонтировать виртуальный VHD/VHDX диск в WSL ==== WSL позволяет смонтировать виртуальные диски в форматах VHD/VHDX. Если на компьютере установлен роль или PowerShell модуль Hyper-V, вы можете создать новый виртуальный диск с помощью команды: ''New-VHD -Path $env:USERPROFILE\wsl_shared_disk.vhdx -Dynamic -SizeBytes 20GB'' Затем смонтируйте виртуальный VHDX диск в WSL: ''wsl –mount –vhd $env:USERPROFILE\wsl_shared_disk.vhdx –bare'' Теперь вы можете создать на виртуальном диске таблицу разделов и раздел с файловой системой ext4: ''$ lsblk $ sudo parted /dev/sdc print $ sudo parted /dev/sdc mklabel msdos $ sudo parted -a optimal /dev/sdc mkpart primary ext4 0% 100% $ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT /dev/sdc $ sudo mkfs.ext4 /dev/sdd1 '' {{https://winitpro.ru/wp-content/uploads/2023/10/smontirovat-virtualnyj-vhdx-disk-v-wsl.png?nolink&}} смонтировать виртуальный vhdx диск в WSL Чтобы смонтировать новый раздел в определенную директорию, нужно получить его UUID; ''$ sudo blkid'' ''$ sudo mount UUID= 506f6faa-1f50-4763-b8a1-975f2b1c59fe /home/sysops/vhdx'' Этот способ позволит смонтировать виртуальные диски других сред Linux, которые установлены на этом компьютере под WSL. Файловая система образов Linux WSL хранится в виртуальных дисках **ext4.vhdx** в папке ''C:\Users\[user]\AppData\Local\Packages\[distro]\LocalState\[distroPackageName]'' . Если на системном диске недостаточно места, можно перенести vhdx файл с файловой системой образа WSL на другой диск.