Windows 11 では、Windows Subsystem for Linux に USB デバイスを接続し、直接操作することができます。
クイックリンク
- usbipd-winとは何ですか?
- Linux 用 Windows サブシステムで USB デバイスを接続する
- GUI の代替手段はありますか?
マイクロソフトが導入 Linux 用 Windows サブシステム (WSL) 少し前に、仮想マシンをセットアップすることなく、Windows インストールから Linux アプリを直接実行するためのサポートが提供されました。 非常に複雑な互換性レイヤーであるため、WSL にはいくつかの制限がありました。 初期の実装では本格的な Linux カーネルさえ使用されていなかったため、いくつかのアプリケーションは互換性の問題に直面しました。 バージョン 2 では多くの改善が加えられましたが、物理 USB デバイスの接続のサポートというものがまだ欠けていました。
あなたが Linux 用 Windows サブシステムのアクティブなユーザーで、WSL で実行されている Linux インスタンスから直接 USB デバイスにアクセスしたい場合は、 大きな進歩 この面で。 Microsoft のオープンソースへの貢献に感謝 usbipd-win プロジェクトにより、WSL で USB パススルー アクセスを楽しめるようになりました。 これは、エンド ユーザーが、Linux サブシステムではサポートされていない、Android デバイスのフラッシュなどのタスクを Linux 用 Windows サブシステムで実行できることを意味します。
usbipd-winとは何ですか?
usbipd-win プロジェクトの目的は、ローカルに接続された USB デバイスを Hyper-V ゲストや WSL2 などの他のマシンと共有するためのソリューションを作成することです。 ただし、公式の WSL2 Linux カーネルは以前はサポートされていませんでした。 USB/IPプロトコル、ユーザーが自分でカーネルを構築する必要があります。
WSL カーネル バージョン 5.10.60.1 以降、必要なパラメータはすぐに設定できるため、手動で再コンパイルする必要はありません。 Microsoft は、Windows 上で USB デバイスを共有できるようにし、WSL 内からシームレスに接続できるようにするためのコマンド ライン インターフェイスもプロジェクトに提供しました。
Linux 用 Windows サブシステムで USB デバイスを接続する
始める前に、実行していることを確認してください Windows 11 すべての WSL アップデートをインストールしました。 前述したように、これが機能するには WSL 2 Linux ディストリビューションが必要です。
- WSL 内から次のコマンドを実行します。
(以下に示すように) カーネル バージョン 5.10.60.1 以降が表示されれば、問題ありません。uname -a
- インストールされているカーネルのバージョンが 5.10.60.1 より古い場合は、次のコマンドを使用して更新できます。
wsl --shutdown
wsl --update
- インストールされているカーネルのバージョンが 5.10.60.1 より古い場合は、次のコマンドを使用して更新できます。
- usbipd-win プロジェクトの GitHub リポジトリに移動します。 それから 最新リリースをダウンロードしてインストールする.
- 最新バージョンの usbipd-win は、Windows ハードウェア互換性プログラム認定ドライバーのおかげで、ドライバーのサイレント インストールをサポートしています。 もサポートします 開発チャンネルのビルド Windows 11の。
- GitHub のリリース ページに加えて、次を使用してアプリをインストールおよび更新できます。 Windows パッケージ マネージャー CLI (別名ウィンゲット)。
winget install--interactive --exact dorssel.usbipd-win
- USB/IP 用のユーザー空間ツールと USB ハードウェア識別子のデータベースをインストールします。 WSL 上で Ubuntu を実行している場合は、次のコマンドを実行します。
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20- さまざまなメタ パッケージを選択できます (例:
linux-tools-generic
) インストールされているディストリビューションによっても異なります。 ただし、メタ パッケージのバージョン番号に応じて、次の手順でパス変数を調整する必要がある場合があります。 - 他のディストリビューションについては、関連するパッケージ管理ツールのドキュメントを参照してください。
- さまざまなメタ パッケージを選択できます (例:
- を使用してシンボリックリンクが作成された場合、
update-alternatives
前の手順のコマンドが機能しなかった場合は、sudo オプションを手動で変更して、root ユーザーがusbip
指示。 これを行うには、/etc/sudoers
ファイルを使用してsudo visudo
そして追加します/usr/lib/linux-tools/
の始まりに-generic secure_path
. 次のようになります。Defaults secure_path="/usr/lib/linux-tools/5.4.0-77-generic:/usr/local/sbin:..."
- 管理者として新しいターミナル インスタンスを開き、次のコマンドを入力して、Windows に接続されているすべての USB デバイスを一覧表示します。
usbipd wsl list
- WSL に接続する USB デバイスの BUSID 値をメモします。 次に、次のコマンドを実行して接続プロセスを開始します。 WSL により、sudo コマンドを実行するためのパスワードの入力を求められます。
たとえば、ここでは Android デバイスの Fastboot インターフェイスをホスト Windows 11 インスタンスから WSL に接続しています。usbipd wsl attach --busid <busid>
- ここで、新しい WSL 2 インスタンスを開いて、
lsusb
コマンドを使用して、利用可能な USB デバイスを確認します。 接続されているデバイスがリストされるはずです。 - それでおしまい! WSL から直接 USB デバイスを操作できるようになりました。
完了したら、以下に示すコマンドを使用してデバイスを切断できます。 もう一度、管理者として実行しているターミナル インスタンスから実行します。
usbipd wsl detach --busid <busid>
GUI の代替手段はありますか?
コマンドラインインターフェースが苦手な場合は、次のようにすることができます。 wsl-usb-gui 試してみてください。 これは、usbipd-win バイナリの非公式 GUI ラッパーで、USB デバイスのリストとホスト OS と WSL インスタンス間の相互運用性を大幅に簡素化します。
- 最新バージョンの usbipd-win がインストールされており、WSL カーネルが最新であることを確認してください。
- wsl-usb-gui の最新のインストーラーをダウンロードします。 プロジェクトの GitLab リリース ページより.
- ダウンロードした MSI ファイルを実行します。
- プログラムをインストールする前に、インストーラーは前提条件もチェックし、必要に応じてセットアップを試みます。 ただし、予期しない互換性の問題を避けるために、すべてを自分で更新し続けることをお勧めします。
- インストールが成功すると、新しく作成された次の名前のショートカットが見つかるはずです。 WSL USB スタートメニュー内。 そこからアプリを実行します。
- クリックしてください リフレッシュ ボタンをクリックして、ホスト OS に接続されている USB デバイスのリストを入力します。
- 使用 添付する そして 切り離す ボタンを使用して、USB パススルーの可能性を最大限に引き出します。
ここからは、WSL で必要なすべての USB デバイスを操作する準備が整います。 私たちの完全なガイドが途中で役立ちますが、USB パススルーが好みに設定されると、それはバックグラウンドに消えていくだけです。 さらに詳しく知りたい場合は、以下をご覧ください。 WSL での USB デバイスの接続に関する Microsoft の公式ドキュメント そして usbipd-win の GitHub Wiki セクション.
XDA シニアメンバーに感謝 Some_Random_Username ヒントのために!