
我正在學習「缺失的學期」的教程這裡(連結中包含時間戳記)。應該有led
目錄/sys/class
。我正在使用 WSL2,但找不到任何此類目錄。 WSL 是否隱藏了某些/sys/class
位置?有沒有什麼方法可以訪問這些而無需雙重啟動我的機器?
答案1
也許會,如果你的鍵盤是USB的,但看起來即使這樣也需要一些努力。如果它是一台帶有鍵盤的筆記型電腦,透過非 USB 總線進行內部連接,那麼據我所知,這是不可能的。
WSL 有兩個版本,沒有一個版本允許這種「開箱即用」。
在較高層級上,WSL1 將 Linux 系統呼叫「轉換/翻譯」為 Windows 等效項。從這個意義上說,它是一種「反向葡萄酒」。從正面的一面來看,這做允許它直接存取某些實體硬件,但通常只能以有限的方式。
例如,
ip link
在 WSL1 中將顯示所有可用的網路介面視窗,但你不能調高或調低它們,也不能真正對它們進行任何其他控制。在 WSL1 上,我確實有一個(在視頻中的時間戳之前提到),但那裡
/sys/class/backlight
沒有。brightness
我也沒有/sys/class/backlight/led
WSL1。在 WSL1 中,微軟專注於85% 的 Linux 系統調用這將使開發人員能夠完成99% 的正常活動。不幸的是,這並不包括一些更“極端”的事情,例如設置鍵盤 LED。
WSL2 確實使用了真正的 Linux 內核,並進行了一些細微的更改(據我所知,已貢獻給上游)來支援 Windows 和 Linux 之間的互通。你可以找到回購協議這裡。
在 WSL2 下執行此操作的挑戰在於 Ubuntu 本質上是作為一組命名空間中的容器運行裡面WSL2 VM(您無法存取)。在該虛擬機器內部,對實體硬體的存取受到限制,當然包括鍵盤及其相關的 LED。 Windows本身透過[控制台/Windows終端機/WSLg/第三方X伺服器/等]向Ubuntu提供鍵盤輸入。 Ubuntu 看不到鍵盤裝置或 LED。
然而,正如 @muru 透過評論中的連結所提到的,WSL2 確實有能力透過USB/IP連接到USB設備。本質上,你安裝usbipd-win在 Windows 中,共用設備,並透過
usbip
Ubuntu 連接到它。這一切都是相當自動化的,因此您通常可以透過 Windows/PowerShell 中的單一命令來完成,然後設定兩個都為您結束連線。不幸的是,即使有了這個(我已經配置了 USB/IP),並且我的 USB 鍵盤共享到 Ubuntu,仍然沒有
/sys/class/led
.我相信這一點可能是因為WSL2核心沒有配置
CONFIG_NEW_LEDS
。您可以使用這些來源配置和編譯您自己的 WSL2 內核,但我不能肯定地告訴您這將允許您透過 USB/IP 控制 USB 鍵盤上的 LED。
也 (重要的)旁注,如果您透過 USB/IP 共用鍵盤,您可能會在 Windows 下失去對它的存取權限,這意味著您無法再進行打字。起初我沒有註意到這一點,因為我是透過遠端桌面使用 USB 鍵盤連接到系統的,但是當我返回時,我發現自己在某種程度上被「鎖定」了。只需確保您擁有 Windows 螢幕鍵盤(在工作列設定中啟用「觸控鍵盤」),以便您可以使用後備輸入進行後續操作分離來自 USB/IP 的鍵盤。