
私は「The Missing Semester」のチュートリアルに従っていましたここled
(タイムスタンプはリンクに含まれています)。にディレクトリがあるはずでした/sys/class
。私は WSL2 を使用していますが、そのようなディレクトリは見つかりませんでした。WSL は/sys/class
場所の一部を隠していますか? また、マシンをデュアル ブートせずにそれらにアクセスする方法はありますか?
答え1
まあ...そうかもしれない、もしキーボードは USB ですが、それでも多少の手間がかかりそうです。USB 以外のバスを介して内部接続するキーボードを搭載したラップトップの場合は、私の知る限り、それは不可能です。
WSL には 2 つのバージョンがあり、どちらもこれを「そのまま」使用することはできません。
高レベルでは、WSL1はLinuxのシステムコールをWindowsの同等のものに「変換/翻訳」します。その意味では「逆WINE」のようなものです。良い面としては、する一部の物理ハードウェアに直接アクセスすることを許可しますが、通常は制限された方法に限られます。
例えば
ip link
WSL1では、利用可能なすべてのネットワークインターフェースが表示されます。ウィンドウズただし、これらを上げたり下げたり、その他の制御を行うことはできません。/sys/class/backlight
WSL1 には(ビデオのタイムスタンプの直前に記載されています)がありますが、brightness
そこには何も表示されません。また、WSL1 にも がありません/sys/class/backlight/led
。WSL1では、マイクロソフトはLinux システムコールの 85%開発者が達成できる通常の活動の99%残念ながら、キーボード LED の設定など、より「特殊なケース」のものは含まれていません。
WSL2は、WindowsとLinuxの相互運用性をサポートするために、実際のLinuxカーネルをマイナーチェンジ(アップストリームから提供されたもの、私の知る限り)して使用しています。リポジトリはここ。
WSL2でこれを行う際の課題は、Ubuntuが基本的に名前空間のセット内のコンテナとして実行されることです。内部WSL2 VM (アクセスできません)。その VM 内では、キーボードやそれに関連する LED など、物理ハードウェアへのアクセスが制限されています。Windows 自体は、[コンソール / Windows ターミナル / WSLg / サードパーティの X サーバー / など] を通じて Ubuntu にキーボード入力を提供します。Ubuntu はキーボード デバイスや LED を認識しません。
しかし、@muruがコメントのリンクで言及しているように、WSL2にはUSB/IP経由でUSBデバイスに接続する基本的には、usbipd-winWindowsでデバイスを共有し、
usbip
Ubuntu経由で接続します。これはすべて自動化されており、通常はWindows/PowerShellの1つのコマンドで実行できます。両方接続を終了します。残念ながら、これを設定しても (USB/IP はすでに構成されています)、USB キーボードを Ubuntu で共有しても、まだ
/sys/class/led
.私はこれを信じている5月WSL2カーネルが構成されていないためである可能性があります
CONFIG_NEW_LEDS
。これらのソースを使用して独自の WSL2 カーネルを構成およびコンパイルすることはできますが、これによって USB/IP 経由で USB キーボードの LED を制御できるかどうかはわかりません。
また (重要) 補足として、USB/IP 経由でキーボードを共有すると、Windows ではキーボードにアクセスできなくなる可能性があります。つまり、入力できなくなります。リモート デスクトップ経由で USB キーボードを使用してシステムに接続していたため、最初はこれに気付きませんでしたが、戻ったときに、ある程度「ロックアウト」されていることに気づきました。Windows のオンスクリーン キーボード (タスクバー設定で「タッチ キーボード」を有効にする) が使用可能になっていることを確認して、後で入力できるフォールバック入力を用意してください。切り離すUSB/IP からキーボードを接続。