- Вопрос или проблема
- Пошаговые инструкции
- 1. Компиляция ядра WSL
- 2. Настройка WSL
- 3. Установка USBIPD
- 4. Подтвердите, что это работает
- Ответ или решение
- Как смонтировать съемный USB-накопитель в WSL
- Введение
- Шаг 1: Компиляция ядра WSL
- Шаг 2: Настройка WSL
- Шаг 3: Установка USBIPD
- Шаг 4: Подтверждение работоспособности
- Заключение
Вопрос или проблема
Итак, я прошел через этот учебник и запустил 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
-
Выключите WSL: выполните
wsl --shutdown
на хосте -
Создайте файл по пути
C:\Users\USERNAME\.wslconfig
с путем к вашему образу ядра.
[wsl2]
kernel=C:\\Users\\USERNAME\\AppData\\Local\\Programs\\vmlinux
3. Установка USBIPD
-
Установите USBIPD
winget install --interactive --exact dorssel.usbipd-win
-
Откройте сессию WSL
-
Подключите 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
-
Остановите WSL, выполнив команду:
wsl --shutdown
-
Создайте файл
C:\Users\USERNAME\.wslconfig
и добавьте в него путь к вашему ядру:[wsl2] kernel=C:\\Users\\USERNAME\\AppData\\Local\\Programs\\vmlinux
Шаг 3: Установка USBIPD
-
Установите USBIPD с помощью следующей команды:
winget install --interactive --exact dorssel.usbipd-win
-
Откройте сессию WSL.
-
Подключите 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-среде.
Если у вас возникнут вопросы или потребуются дальнейшие пояснения — не стесняйтесь задавать их!