WSL Advent Calendar 2020の12/6分です。
環境
Ubuntu-18.04 LTS
カーネルソースの入手
https://github.com/microsoft/WSL2-Linux-Kernel をクローン
$ git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
デフォルトではないブランチをビルドしたい場合はチェックアウトしておきます。
$ git checkout -b linux-msft-wsl-4.19.y origin/linux-msft-wsl-4.19.y
ビルドツールのインストール
README-Microsoft.WSL2にある通り。
$ sudo apt install build-essential flex bison libssl-dev libelf-dev
カーネルパラメータを設定する
WSL用のカーネルパラメータは ./Microsoft/config-wsl
にあるので、設定変更したい場合はこのファイルを修正します。
ビルド
$ make KCONFIG_CONFIG=./Microsoft/config-wsl
ブランチによっては、ビルド中にオプションについて聞かれることもあります。
カーネルとカーネルモジュール
カーネルモジュールは、コマンドをたたくことで /lib/modules/<version>
にインストールされます。
$ sudo make modules_install
カーネルはひと手間必要です。まずはvmlinux
をWindowsのドライブのどこかにコピーします。場所は任意ですが、下の例では %TEMP%
にします。
$ cp vmlinux /mnt/c/Users/<username>/AppData/Local/Temp
そして、WSLの設定ファイルである %USERPROFILE%\.wslconfig
にカーネルの場所を指定します。ファイルがなかったら新規作成します。
%USERPROFILE%.wslconfig
[wsl2]
kernel=C:\\Users\\<username>\\AppData\\Local\\Temp\\vmlinux
起動
一旦WSLをシャットダウンしてから起動しなおします。
> wsl.exe --shutdown
> wsl.exe
$ uname -a
Linux DESKTOP-4376RCU 4.19.128-microsoft-standard+ #2 SMP Mon Dec 7 06:37:33 JST 2020 x86_64 x86_64 x86_64 GNU/Linux