WSL #40:WSLからUSBメモリドライブを使いたい


WSLからUSBメモリドライブを使いたい

WindowsにてLinuxのOSイメージをUSBドライブに書き込む際、何らかのアプリケーションが必要となる。
でもWSLであればアプリケーションいあらないんじゃね、という発想かWSLからUSBドライブが使えれば問題ないのだが結構面倒。

環境

Windows 11 25H2 (26200.7922)

wsl --version
WSL バージョン: 2.6.3.0
カーネル バージョン: 6.6.87.2-1
WSLg バージョン: 1.0.71
MSRDC バージョン: 1.2.6353
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26200.7922

lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 24.04.4 LTS
Release: 24.04
Codename: noble


usbipd-winのインストール

まずは、Windows側に "uspipd-win" というものをインストールする必要がある。
USB デバイスを接続する | Microsoft Learn

usbipd-winプロジェクトページ (https://github.com/dorssel/usbipd-win/releases) よりインストーラーをダウンロードしインストールするか、
PowerShellにて以下コマンドを実行しダウンロード・インストールする。
winget install --interactive --exact dorssel.usbipd-win

利用したいUSBデバイスを調べる

Windows側で "usbipd list" というコマンドでBUSIDを調べるのだが・・・

USBメモリ接続前:
PS C:\Users\xxx> usbipd list
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-2    174c:225c  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
1-3    0789:0192  USB 大容量記憶装置                                            Not shared
1-4    174c:225c  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
2-3    13fe:4100  USB 大容量記憶装置                                            Not shared
2-14   0bda:b85c  Realtek Wireless Bluetooth Adapter                            Not shared
3-1    1532:00a3  USB 入力デバイス, Razer Cobra                                 Not shared
3-2    04d9:a0f8  USB 入力デバイス                                              Not shared
3-3    1532:026b  USB 入力デバイス, Razer Huntsman V2 Tenkeyless                Not shared
4-2    0bda:9210  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
4-3    174c:1153  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
4-4    0411:0359  USB 大容量記憶装置                                            Not shared
5-1    0bda:9210  USB 大容量記憶装置                                            Not shared

Persisted:
GUID                                  DEVICE
  
USBメモリ接続後:
Connected:
BUSID  VID:PID    DEVICE                                                        STATE
1-2    174c:225c  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
1-3    0789:0192  USB 大容量記憶装置                                            Not shared
1-4    174c:225c  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
2-2    13fe:4100  USB 大容量記憶装置                                            Not shared
2-14   0bda:b85c  Realtek Wireless Bluetooth Adapter                            Not shared
3-1    1532:00a3  USB 入力デバイス, Razer Cobra                                 Not shared
3-2    04d9:a0f8  USB 入力デバイス                                              Not shared
3-3    1532:026b  USB 入力デバイス, Razer Huntsman V2 Tenkeyless                Not shared
4-2    0bda:9210  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
4-3    174c:1153  USB 接続 SCSI (UAS) マス ストレージ デバイス                  Not shared
4-4    0411:0359  USB 大容量記憶装置                                            Not shared
5-1    0bda:9210  USB 大容量記憶装置                                            Not shared

Persisted:
GUID                                  DEVICE
  
BUSID:2-2 が増えたので、おそらくこれだろう・・ 間違えると大変なことに!

デバイスを共有する

調べたUSBメモリのデバイスを共有対象とする。
Windows側から以下コマンドを実行 (管理者権限が必要)
usbipd bind --busid (BUSID)
実行しても特に結果など表示されない
いちおう usbipd list で現在の状況を見ると BUSID:2-2 のSTATEが "Shared" に変化した。
2-2    13fe:4100  USB 大容量記憶装置                                            Shared
  

デバイスをWSLにアタッチする

次にUSBメモリをWSLにアタッチする。
WSL(Ubuntuなど)のコマンドプロンプトを立ち上げておく。
Windows側で以下コマンドを実行 (これは管理者権限不要っぽい)
usbipd attach --wsl --busid (BUSID)

実行結果:
PS C:\Users\xxx> usbipd attach --wsl --busid 2-2
usbipd: info: Using WSL distribution 'Ubuntu' to attach; the device will be available in all WSL 2 distributions.
usbipd: info: Loading vhci_hcd module.
usbipd: info: Detected networking mode 'nat'.
usbipd: info: Using IP address 192.168.80.1 to reach the host.
  

usbipd list で確認すると STATEは "Attached" へ変化した。
2-2    13fe:4100  USB 大容量記憶装置                                            Attached
  

Ubuntu側での確認

これでWSL(Ubuntu)側にUSBメモリがアタッチされたらしい。
lsusbというコマンドで確認。
xxx@hppc:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 13fe:4100 Phison Electronics Corp. Flash drive
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
  
Bus 001 Devide 002 が "Phison Electronics Corp. Flash drive" となっているのでこれだろう。
アタッチ前を見ていないのでよくわからないが・・

Ubuntu側でマウント

Ubuntu側でUSBメモリをマウントしてみる。

lsbklコマンドでストレージの確認
たぶんサイズ的に "sde1" ってのがUSBメモリかな・・?
xxx@hppc:~$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda      8:0    0 388.6M  1 disk
sdb      8:16   0   186M  1 disk
sdc      8:32   0     4G  0 disk [SWAP]
sdd      8:48   0     1T  0 disk /mnt/wslg/distro
                                 /
sde      8:64   1  14.4G  0 disk
└─sde1   8:65   1  14.4G  0 part
  

/mnt/usbでマウントポイント作成 (名前は何でもいいっぽい)
xxx@hppc:~$ sudo mkdir -p /mnt/usb
[sudo] xxx のパスワード:

/dev/sde1 を /mnt/usb へマウント
xxx@hppc:~$ sudo mount /dev/sde1 /mnt/usb
  

USBメモリの内容確認:
xxx@hppc:~$ ls /mnt/usb
'System Volume Information'    
  

ちなみにUSBメモリをWSLにアタッチした時点でWindows側からUSBメモリは見れなくなる。

使い終わったら

アンマウント
xxx@hppc:~$ sudo umount /mnt/usb
  
または
xxx@hppc:~$ sudo umount /dev/sde1
  

Windows側でアタッチを解除
PS C:\Users\xxx> usbipd detach --busid 2-2
  

共有を解除 (管理者権限が必要)
 PS C:\WINDOWS\system32> usbipd unbind --busid 2-2 
  

念のため usbipd list で確認するt STATEは "Not shared" に戻った。
2-2    13fe:4100  USB 大容量記憶装置                                            Not shared
  


WSL

0 件のコメント:

その他の記事