具體步驟:
首先在windows中安裝 USBIP 工具,在GitHub上下載安裝包并根據(jù)README文檔的說(shuō)明進(jìn)行操作
同時(shí)在 WSL Linux 端也需要安裝編譯內(nèi)核所需的庫(kù)和工具,為后續(xù)做準(zhǔn)備:
$ sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool
打開(kāi)wsl ubuntu終端使用命令:uname -r得到版本號(hào),同時(shí)根據(jù)版本號(hào)使用管理員模式新建目錄
$ sudo mkdir /usr/src/5.15.90.1-microsoft-standard-WSL2
這里的版本就是你使用命令 uname -r 得到的版本號(hào),建議可以先手動(dòng)安裝壓縮包,然后使用vscode連接wsl,把文件拖拽到wsl下
然后解壓到指定路徑下(這部分注意區(qū)分版本號(hào),不要一昧照搬命令):
$ sudo tar -xzvf WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1.tar.gz -C /usr/src/5.15.90.1-microsoft-standard-WSL2/
$ cd /usr/src/5.15.90.1-microsoft-standard-WSL2/
$ sudo mv WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1/* ./ && sudo rm -r WSL2-Linux-Kernel-linux-msft-wsl-5.15.90.1
然后將內(nèi)核的一些配置信息復(fù)制到當(dāng)前文件夾下:
$ sudo cp /proc/config.gz config.gz
$ sudo gunzip config.gz
$ sudo mv config .config
接著我們執(zhí)行menuconfig命令打開(kāi)圖形化菜單
$ sudo make menuconfig
進(jìn)入如下路徑:> Device Drivers > USB support
下面是一些必須的添加項(xiàng),一般默認(rèn)都是選中的,不過(guò)最好還是檢查下:
Device Drivers -> USB Support
Device Drivers -> USB Support -> USB announce new devices
Device Drivers -> USB Support -> USB Modem (CDC ACM) support
Device Drivers -> USB Support -> USB/IP
Device Drivers -> USB Support -> USB/IP -> VHCI HCD
Device Drivers -> USB Serial Converter Support
Device Drivers -> USB Serial Converter Support -> USB FTDI Single port Serial Driver
同時(shí)記得關(guān)閉 Device Drivers -> USB Support -> USB/IP -> Debug messages for USB/IP
這一選項(xiàng),否則調(diào)試信息會(huì)非常影響你的使用體驗(yàn)
另外也可以添加你具體所需的USB模塊勾選上,保存退出后執(zhí)行內(nèi)核編譯
$ sudo make -j8
內(nèi)核編譯期間發(fā)生報(bào)錯(cuò):
這主要是由于系統(tǒng)缺少dwarves軟件包導(dǎo)致的,我們使用apt命令安裝并繼續(xù)執(zhí)行編譯:
$ sudo apt install dwarves
$ sudo make -j8 && sudo make modules_install -j8 && sudo make install -j8
發(fā)現(xiàn)又產(chǎn)生了報(bào)錯(cuò):
查找資料似乎說(shuō)明的是這僅僅是個(gè)警告,我通過(guò)禁用BTF的調(diào)試信息解決了這個(gè)問(wèn)題
$ sudo vi .config
找到宏CONFIG_DEBUG_INFO_BTF
并將value改為 n
安裝內(nèi)核時(shí)發(fā)生報(bào)錯(cuò):
解決方式有兩種:
1.可以選擇在.config中禁用宏CONFIG_X86_X32
2.找到合適的binutils版本使其能夠編譯
我選擇的是第一種,根據(jù)我在網(wǎng)上找到的說(shuō)法是:
除非您想要它并且擁有它的用戶空間,否則 X32 并不是特別有用。請(qǐng)注意,X32 是 64 位的 x32 ABI,它是編譯為在 64 位長(zhǎng)模式下運(yùn)行的“32 位”短指針代碼,與真正的本機(jī) 32 位二進(jìn)制/ABI 支持不同。這是一種具有非常具體的利基的特殊模式。
您可以在內(nèi)核配置中禁用CONFIG_X86_X32]或獲取具有 elf32_x86_64 目標(biāo)支持的 binutils。如何獲取 binutils 取決于您的發(fā)行版。
所以我選擇禁用宏CONFIG_X86_X32,之后繼續(xù)執(zhí)行命令:
$ sudo make modules_install -j8
$ sudo make install -j8
之后就可以選擇編譯 USBIP 工具了:
$ cd tools/usb/usbip
$ sudo ./autogen.sh
$ sudo ./configure
$ sudo make install -j8
復(fù)制工具庫(kù)位置,以便 usbip 工具可以獲取到:
$ sudo cp libsrc/.libs/libusbip.so.0 /lib/libusbip.so.0
安裝 usb.ids 以便顯示 USB 設(shè)備的名稱:
$ sudo apt-get install hwdata
重啟WSL:
$ wsl --shutdown
下面進(jìn)行測(cè)試是否成功:
打開(kāi)powershell:
$ usbipd wsl list
假設(shè)我們需要在wsl使用的 usb 設(shè)備為 ST-Link Debug, USB 大容量存儲(chǔ)設(shè)備, USB 串行設(shè)備 (COM3),設(shè)備id為 0483:374b
我們使用命令附加設(shè)備到 wsl2 中
$ usbipd wsl attach --hardware-id "0483:374b"
此時(shí)我們打開(kāi)一個(gè) wsl 終端,使用命令 lsusb 即可看到附加到 wsl 的設(shè)備
然后我們?cè)俅位氐?powershell ,執(zhí)行 usbipd wsl list命令,可以看到此時(shí)的 usb 設(shè)備已經(jīng)成功添加到 wsl 了
-
USB設(shè)備
+關(guān)注
關(guān)注
0文章
57瀏覽量
16357 -
BTF
+關(guān)注
關(guān)注
0文章
4瀏覽量
7102 -
Ubuntu系統(tǒng)
+關(guān)注
關(guān)注
0文章
91瀏覽量
4000
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論