Как я могу смонтировать съемный USB-накопитель в WSL?

Вопрос или проблема

Итак, я прошел через этот учебник и запустил USBIPD на Windows 11 и контейнере Ubuntu WSL. Теперь, как я могу подключить USB-накопитель в WSL, чтобы Проводник мог его видеть и получить к нему доступ? USB отформатирован как ext4. Спасибо!

Я думаю, что этот гид предназначен для других типов USB-устройств, таких как SD-карты. Для подключения дисков, включая внешние USB-диски, я думаю, вам нужен этот гид. Обратитесь к разделу “Подключение DrvFs”. Следующий пример использует диск D: на Windows.

$ sudo mkdir /mnt/d
$ sudo mount -t drvfs D: /mnt/d

Я никогда не использовал его для ext4, но не вижу причин, по которым это не сработает*.

*Как указано в комментариях, это решение не будет работать для дисков, отформатированных как ext4.

Кратко: USBIPD работает, но в ядре WSL от Microsoft отсутствует драйвер для USB-накопителей, но вы можете скомпилировать собственную версию ядра WSL с поддержкой массового хранения.

Пошаговые инструкции

Чтобы подключить ext4 разделы с USB-накопителя в WSL, вы используете USBIPD и собственную сборку ядра WSL. Не беспокойтесь, сборка этого ядра занимает всего несколько команд и примерно 30 минут для загрузки и компиляции.

Эти инструкции взяты из потрясающего видеоурока от AgileDevArt, на который указал Кристоф Раквитц. Я рекомендую посмотреть его видео новичкам. Для тех, кто продолжает читать, я предполагаю, что у вас установлена обновленная дистрибуция WSL2, т.е. выполните wsl --update.

1. Компиляция ядра WSL

Выполните следующие команды в вашей существующей дистрибуции WSL. Замените VERSION=5.15.167.4 на вашу текущую версию ядра WSL, как указано в uname -a.

VERSION=5.15.167.4
sudo apt update && sudo apt upgrade -y && sudo apt install -y build-essential flex bison libgtk2.0-dev libelf-dev libncurses-dev autoconf libudev-dev libtool zip unzip v4l-utils libssl-dev python3-pip cmake git iputils-ping net-tools dwarves
sudo mkdir /usr/src
cd /usr/src
sudo git clone -b linux-msft-wsl-${VERSION} https://github.com/microsoft/WSL2-Linux-Kernel.git ${VERSION}-microsoft-standard && cd ${VERSION}-microsoft-standard
sudo cp /proc/config.gz config.gz
sudo gunzip config.gz
sudo mv config .config

Следующая команда откроет интерактивное меню конфигурации, где вы должны включить Драйверы устройств > Поддержка USB > Поддержка USB-накопителей

sudo make menuconfig
sudo make -j$(nproc)
sudo make modules_install -j$(nproc)
sudo make install -j$(nproc)

В конце мы копируем наш образ ядра в папку на хосте. Замените USERNAME на ваше имя пользователя Windows или скопируйте в другую папку.

sudo cp -rf vmlinux /mnt/c/Users/USERNAME/AppData/Local/Programs

2. Настройка WSL

  1. Выключите WSL: выполните wsl --shutdown на хосте

  2. Создайте файл по пути C:\Users\USERNAME\.wslconfig с путем к вашему образу ядра.

[wsl2]
kernel=C:\\Users\\USERNAME\\AppData\\Local\\Programs\\vmlinux

3. Установка USBIPD

  1. Установите USBIPD winget install --interactive --exact dorssel.usbipd-win

  2. Откройте сессию WSL

  3. Подключите USB-устройство (вам, возможно, потребуется перезапустить терминал)

usbipd list
usbipd bind --busid 1-4
usbipd attach --wsl --busid 1-4

4. Подтвердите, что это работает

Запустите lsblk в WSL, и вы должны увидеть ваше устройство массового хранения

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 388.4M  1 disk
sdb      8:16   0     4G  0 disk [SWAP]
sdc      8:32   0     1T  0 disk /mnt/wslg/distro
                                 /
sdd      8:48   0   2.7T  0 disk
└─sdd1   8:49   0   2.7T  0 part

Ответ или решение

Как смонтировать съемный USB-накопитель в WSL

Установка и работа с USB-накопителями в Windows Subsystem for Linux (WSL) может вызвать некоторые сложности, особенно если накопитель форматов, таких как ext4. В этой статье мы рассмотрим, как правильно смонтировать USB-накопитель, используя USBIPD и специальную сборку ядра WSL.

Введение

Для начала важно понимать, что Microsoft’s WSL kernel не имеет поддержки USB-накопителей формата ext4. Это значит, что стандартные методы монтирования (например, использование drvfs) вам не подойдут. Вместо этого, нам нужно создать собственное ядро, в котором будет поддержка USB.

Шаг 1: Компиляция ядра WSL

Откройте свой WSL-дистрибутив и выполните следующие команды (замените VERSION на актуальную версию ядра вашего WSL, которую можно узнать с помощью команды uname -a):

VERSION=5.15.167.4
sudo apt update && sudo apt upgrade -y && sudo apt install -y build-essential flex bison libgtk2.0-dev libelf-dev libncurses-dev autoconf libudev-dev libtool zip unzip v4l-utils libssl-dev python3-pip cmake git iputils-ping net-tools dwarves
sudo mkdir /usr/src
cd /usr/src
sudo git clone -b linux-msft-wsl-${VERSION} https://github.com/microsoft/WSL2-Linux-Kernel.git ${VERSION}-microsoft-standard && cd ${VERSION}-microsoft-standard
sudo cp /proc/config.gz config.gz
sudo gunzip config.gz
sudo mv config .config

Теперь запустим конфигуратор для включения поддержки USB:

sudo make menuconfig
  • Перейдите в раздел Device Drivers > USB support > USB Mass Storage support и включите его.

После этого выполните команды для сборки и установки:

sudo make -j$(nproc)
sudo make modules_install -j$(nproc)
sudo make install -j$(nproc)

Скопируйте изображение ядра в папку на хосте (замените USERNAME на ваше имя пользователя Windows):

sudo cp -rf vmlinux /mnt/c/Users/USERNAME/AppData/Local/Programs

Шаг 2: Настройка WSL

  1. Остановите WSL, выполнив команду:

    wsl --shutdown
  2. Создайте файл C:\Users\USERNAME\.wslconfig и добавьте в него путь к вашему ядру:

    [wsl2]
    kernel=C:\\Users\\USERNAME\\AppData\\Local\\Programs\\vmlinux

Шаг 3: Установка USBIPD

  1. Установите USBIPD с помощью следующей команды:

    winget install --interactive --exact dorssel.usbipd-win
  2. Откройте сессию WSL.

  3. Подключите USB-устройство (возможно, вам потребуется перезапустить терминал):

    usbipd list
    usbipd bind --busid 1-4
    usbipd attach --wsl --busid 1-4

Шаг 4: Подтверждение работоспособности

Запустите команду lsblk в WSL, и вы должны увидеть ваш USB-накопитель:

lsblk

Вывод должен содержать информацию о вашем USB-уре:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 388.4M  1 disk
sdb      8:16   0     4G  0 disk [SWAP]
sdc      8:32   0     1T  0 disk /mnt/wslg/distro
                                 /
sdd      8:48   0   2.7T  0 disk
└─sdd1   8:49   0   2.7T  0 part

Заключение

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

Если у вас возникнут вопросы или потребуются дальнейшие пояснения — не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...