WSL2編譯和安裝內核以支持驅動編譯


在編譯驅動的時候,需要內核頭文件和modules文件。

WSL2的內核是修改過的,無法使用 ubuntu上游的內核,因此,我們需要手動編譯並安裝一個版本。

主要步驟

首先應當更新WSL2的內核至最新,以保持和github上的最新代碼一致。

# 1. 下載內核代碼

git clone --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel

# 2. 編譯和安裝
# 默認情況下,從git編譯出的代碼帶有+號,可以通過軟鏈接的方式規避,也可以通過環境變量取消

cd WSL2-Linux-Kernel
LOCALVERSION= make KCONFIG_CONFIG=Microsoft/config-wsl -j8
sudo LOCALVERSION= make KCONFIG_CONFIG=Microsoft/config-wsl modules_install -j8

# 3. 安裝headers (如果ubuntu內核版本比較新,該步驟不是必須的)
sudo make headers_install ARCH=x86_64 INSTALL_HDR_PATH=/usr

安裝完成后,會在/lib/modules/目錄下生成和當前內核版本一致的文件夾:

驅動編譯

如下所示:

➜  hello make
make -C /lib/modules/5.10.74.3-microsoft-standard-WSL2/build M=/home/dw/src/drivers/study/hello modules
make[1]: Entering directory '/home/dw/src/kernel/WSL2-Linux-Kernel'
  CC [M]  /home/dw/src/drivers/study/hello/hello.o
  MODPOST /home/dw/src/drivers/study/hello/Module.symvers
  CC [M]  /home/dw/src/drivers/study/hello/hello.mod.o
  LD [M]  /home/dw/src/drivers/study/hello/hello.ko
make[1]: Leaving directory '/home/dw/src/kernel/WSL2-Linux-Kernel'
➜  hello sudo insmod ./hello.ko
➜  hello dmesg
[19254.803777] Hello World enter
➜  hello


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM