WSL2: Монтирование диска

С выходом Windows 11, WSL 2 обзавелась новой фитчей - монтирование физических носителей. Это дает возможность очень просто подключить к Windows физический диск, например в формате ext4, безо всяких драйверов и танцев с бубном. На нем можно хранить свои рабочие проекты и при необходимости использовать этот диск на физической Linux машине.

Я использую эту фитчу, что бы хранить реальные проекты на своем SSD в пол терабайта. При необходимости, я переключаюсь на Linux и обратно без лишних операций, ведь Windows не поддерживает нативно ext4. И в этом видео я покажу как настроить и смонтировать физический диск в формате ext4 к WSL так же как у меня.

Для того что бы это провернуть, нам понадобится Windows 11 с минимальным билдом 22000, свободный накопитель в формате ext4 и обновленный WSL.

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

wsl --update

Теперь нужно определить путь устройства на Windows.

GET-CimInstance -query "SELECT * from Win32_DiskDrive"

У меня это чистый \.\PHYSICALDRIVE1 размером 500GB, его я и буду монтировать к WSL с помощью опции mount. Если у вас диск готов к использованию, то пропустите шаги разбиению и форматированию диска.

wsl --mount \\.\PHYSICALDRIVE1

Теперь получим список устройств хранения и создадим раздел на новом диске с помощью parted

lsblk
sudo parted /dev/sda

В parted укажите таблицу msdos и создайте основной раздел ext4 на весь диск.

mktable msdos
mkpart primary ext4 0% 100%
print
quit

Посмотрим что получилось и выйдем, если все хорошо.

Теперь lsblk покажет новый раздел на устройстве. Укажем его для утилиты mkfs.ext4 и выйдем из WSL

lsblk
sudo mkfs.ext4 /dev/sda1
exit

Теперь необходимо демонтировать наш диск и смонтировать заново указав созданный раздел номер 1

wsl --unmount \\.\PHYSICALDRIVE1
wsl --mount \\.\PHYSICALDRIVE1 --partition 1

Зайдем обратно в WSL и убедимся что раздел смонтирован правильно. В директории /mnt/wsl/ должна быть директория с суффиксом p1

ll /mnt/wsl/

Я нашел такое размещение раздела не очень удобным, поэтому давайте добавим запись в /etc/fstab что бы привязать /mnt/wsl/PHYSICALDRIVE1p1 прямо в директорию projects домашней директории. Для этого создадим директорию ~/projects, изменим владельца директории /mnt/wsl/PHYSICALDRIVE1p1, отредактируем /etc/fstab и проверим что все работает смонтировав диск и создав тестовый файл на нем. Этот файл должен появиться в директории ~/projects

mkdir ~/projects
sudo chown zource:zource /mnt/wsl/PHYSICALDRIVE1p1
sudo nano /etc/fstab
/mnt/wsl/PHYSICALDRIVE1p1    /home/zource/projects    none    defaults,bind    0 0
touch /mnt/wsl/PHYSICALDRIVE1p1/test
sudo mount -a
ll ~/projects/

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

schtasks /create /tn "\WSL\Mount" /sc onlogon /ru Users /np /rl highest /f /tr "cmd /c wsl --mount \\.\PHYSICALDRIVE1 --partition 1"
schtasks /run /tn "\WSL\Mount"
schtasks /delete /tn "\WSL\Mount"

Краткое описание и необходимые команды можно найти по ссылке под видео. Если у вас возникли какие-то проблемы или вы хотите услышать о чем то подробнее, напишите об этом в коментариях.

Вы были на канале zource dev. Поставьте лайк и подпишитесь на канал что бы не пропустить следующий выпуск.