WSLからUSBメモリドライブを使いたい
WindowsにてLinuxのOSイメージをUSBドライブに書き込む際、何らかのアプリケーションが必要となる。
でもWSLであればアプリケーションいあらないんじゃね、という発想かWSLからUSBドライブが使えれば問題ないのだが結構面倒。
でもWSLであればアプリケーションいあらないんじゃね、という発想かWSLからUSBドライブが使えれば問題ないのだが結構面倒。
環境
Windows 11 25H2 (26200.7922)
wsl --version
lsb_release -a
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
カーネル バージョン: 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
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にて以下コマンドを実行しダウンロード・インストールする。
※ 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メモリ接続前:
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 DEVICEUSBメモリ接続後:
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 DEVICEBUSID:2-2 が増えたので、おそらくこれだろう・・ 間違えると大変なことに!
デバイスを共有する
調べたUSBメモリのデバイスを共有対象とする。
Windows側から以下コマンドを実行 (管理者権限が必要)
いちおう usbipd list で現在の状況を見ると BUSID:2-2 のSTATEが "Shared" に変化した。
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 list で確認すると STATEは "Attached" へ変化した。
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というコマンドで確認。
アタッチ前を見ていないのでよくわからないが・・
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 hubBus 001 Devide 002 が "Phison Electronics Corp. Flash drive" となっているのでこれだろう。
アタッチ前を見ていないのでよくわからないが・・
Ubuntu側でマウント
Ubuntu側でUSBメモリをマウントしてみる。
lsbklコマンドでストレージの確認
たぶんサイズ的に "sde1" ってのがUSBメモリかな・・?
/mnt/usbでマウントポイント作成 (名前は何でもいいっぽい)
/dev/sde1 を /mnt/usb へマウント
USBメモリの内容確認:
ちなみにUSBメモリをWSLにアタッチした時点でWindows側から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メモリは見れなくなる。
使い終わったら
アンマウント
Windows側でアタッチを解除
共有を解除 (管理者権限が必要)
念のため usbipd list で確認するt STATEは "Not shared" に戻った。
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 件のコメント:
コメントを投稿