LoginSignup
5

More than 1 year has passed since last update.

posted at

updated at

WSL2でカスタムカーネルをビルドして使う

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5