WSL2でUSBメモリを物理マウントしISOイメージを書き込む方法
Windows OSにおいてUSBメモリなどのリムーバブルメディアにISOイメージを書き込む際、一般的には専用のGUIツールが用いられます。しかし、パーティション構造が特殊なデバイスや、OS標準のディスク管理ツールで操作が制限されるケースでは、Linux標準のコマンドラインツールの方が確実かつ柔軟な操作が可能です。
本記事では、Windows Subsystem for Linux 2(WSL2)環境下で、Windows側の制約をバイパスし、USBメモリを物理デバイスとして直接制御する方法を解説します。
WSL2と物理デバイスの橋渡し
WSL2は標準状態ではWindows側のファイルシステムを介したアクセスに限定されており、USBバスに接続された物理デバイスを直接認識することはできません。本作業の目標は、サードパーティ製のツールを用いてUSBデバイスをWSL2へパススルーし、Linuxカーネルから /dev/sdX として直接操作可能な状態にすることです。
目標値として、ISOイメージを dd コマンドによってブロック単位で正確に書き込み、データの整合性を保った状態で書き込みを完了させることを目指します。
リムーバブル属性によるアタッチの制限
WSL2には wsl –mount というコマンドが存在しますが、これは主にVHD(仮想ディスク)や固定ディスクを想定したものです。USBメモリのような「リムーバブルメディア」に対して実行すると、Windows側の排他制御により「指定されたファイルが見つからない」あるいは「サポートされていない操作」というエラーが発生し、アタッチできない課題があります。このOSレイヤーの制限が、Linuxネイティブなディスク操作を妨げる要因となります。
usbipd-winの導入とパススルーの実施
この課題を解決するため、USB/IPプロトコルを利用してデバイスを転送する usbipd-win を導入します。
ツールのインストールと初期設定
Windows側の管理者権限PowerShellで、以下のコマンドを実行してツールをインストールします。インストール後、設定を反映させるためにPowerShellの再起動が必要です。
PS C:\> winget.exe install usbipd 既存のパッケージが既にインストールされています。インストールされているパッケージ...をアップグレードしようとしています 見つかりました usbipd-win [dorssel.usbipd-win] バージョン 5.3.0 このアプリケーションは所有者からライセンス供与されます。 Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。 ダウンロード中 https://github.com/dorssel/usbipd-win/releases/download/v5.3.0/usbipd-win_5.3.0_x64.msi ██████████████████████████████ 4.29 MB / 4.29 MB インストーラーハッシュが正常に検証されました パッケージのインストールを開始しています... インストールが完了しました
デバイスの特定とバインド
USBメモリを接続した状態で、以下のコマンドでデバイス一覧を表示します。
PS C:\> usbipd.exe list Connected: BUSID VID:PID DEVICE STATE 1-8 8087:0032 インテル(R) ワイヤレス Bluetooth(R) Not shared 4-1 046d:c548 Logitech USB Input Device, USB 入力デバイス Not shared 4-3 0781:5580 USB 大容量記憶装置 Not shared Persisted: GUID DEVICE xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx USB 大容量記憶装置 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx USB 大容量記憶装置
対象のUSBメモリ(例: SanDisk USB Device)の左側に表示される BUSID(例: 4-3)を確認します。次に、そのデバイスを共有可能にするための「バインド」操作を行います。
usbipd.exe bind --busid 4-3
WSL2へのアタッチ
WSL2(Ubuntu等)のインスタンスを起動した状態で、以下のコマンドを実行してデバイスをLinux側に接続します。
PS C:\> usbipd.exe attach --busid 4-3 --wsl usbipd: info: Using WSL distribution 'Ubuntu-22.04' 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 172.xx.xx.x to reach the host.
これにより、Windows側からはデバイスが切り離され、WSL2側で物理デバイスとして認識されます。
Linux側での書き込みと安全な取り外し
WSL2のターミナルに切り替え、以下の手順でISOイメージの書き込みを実施します。
デバイス名の確認
lsblk コマンドを実行し、新しく認識されたディスクの名前を確認します。サイズから判断して /dev/sde などと表示されているはずです。
ddコマンドによる書き込み
確認したデバイス名(例: /dev/sde)に対し、dd コマンドでISOイメージを書き込みます。
# if=入力ファイル, of=出力先デバイス, bs=ブロックサイズ, status=進捗表示 sudo dd if=harvester-v1.7.1-amd64.iso of=/dev/sdf bs=4M status=progress conv=fdatasync 7788822528 bytes (7.8 GB, 7.3 GiB) copied, 216 s, 36.0 MB/s 1859+1 records in 1859+1 records out 7798194176 bytes (7.8 GB, 7.3 GiB) copied, 343.974 s, 22.7 MB/s
書き込み完了後、メモリ上のキャッシュを物理ディスクに完全に反映させるため、必ず sync コマンドを実行します。
sync
ソフトウェア的な切り離し
書き込みが完了したら、Windows側のPowerShellに戻り、以下のコマンドでデバイスをWSL2から切り離します。
PS C:\> usbipd.exe detach --busid 4-3
この操作により、デバイスは安全に取り外し可能な状態に戻ります。
結論と実用的な知見
WSL2と usbipd-win を組み合わせることで、Windows OSの論理的な制約に縛られることなく、Linuxの強力なディスク操作ツールをUSBメディアに対して適用可能となります。専用のライティングソフトを導入せずとも、標準的な dd コマンドによる確実なイメージ作成ができる点は、サーバー構築やシステム保守において極めて有効な手段です。
Surface Pro 5のサーバー化といった、特定のハードウェアに対するOSインストール作業においても、この手法は最も信頼性の高い選択肢の一つと言えるでしょう。