Linux header在哪裡?絕對難不倒你

實作暑期Linux 核心課程的前置遇到問題,記錄一下

問題

目前習慣用 WSL 開發,在建立環境的第一步就遇到 WSL 環境找不到 linux-headers 的問題

如何解

apt-cache 找不到就只能到官方 Repo

  1. git clone & check

    1. clone

      1
      git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
    2. 確認自己 WSL 的 kernel

      1
      2
      uname -r
      # 4.19.128-microsoft-standard
    3. checkout 版本

      1
      2
      cd WSL2-Linux-Kernel
      git checkout 4.19.128-microsoft-standard
  2. 不想 Clone 也可以抓對應版本的 Release 下來 (optional)

    1. uname

      1
      2
      uname -r
      # 4.19.128-microsoft-standard
    2. 抓 release

      1
      wget https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/4.19.128-microsoft-standard.tar.gz
    3. 解壓縮

      1
      tar zxvf 4.19.128-microsoft-standard.tar.gz
  3. 安裝必要套件

    1
    sudo apt-get install build-essential
  4. 安裝 linux header

    從 google 上找到兩種安裝過程

    1. LINUX kernel module under WSL2

      1
      2
      3
      sudo zcat /proc/config.gz > .config
      make -j $(nproc)
      sudo make -j $(nproc) modules_install
    2. 在 WSL2 环境下安装 BPF 工具链

      1
      2
      3
      4
      5
      cp Microsoft/config-wsl .config
      make oldconfig && make prepare
      make scripts
      make modules
      make modules_install

    : 缺少套件就用 apt-get install 解決,權限不夠就 sudo 解決(誤)

後記

兩種安裝方法看不出有什麼差別,之後弄懂了再補上

參考連結

  1. 在 WSL2 环境下安装 BPF 工具链
  2. LINUX kernel module under WSL2
  3. WSL2 GitHub Repo