WSL2でubuntuをインストールすると、/lib/modules以下がカラなので、PC上で仮想CAN、仮想GPIOなどのドライバが使えなかったり、ローダブルカーネルモジュール(LKM)のビルドができません。
このため、Linuxカーネルのコンフィグからこれらのオプションを有効にしたり、LKMをビルドできる環境を用意する必要があります。
まずは、WSL2のLinuxカーネルを自分でビルドして使えることを確認します。
このため、Linuxカーネルのコンフィグからこれらのオプションを有効にしたり、LKMをビルドできる環境を用意する必要があります。
まずは、WSL2のLinuxカーネルを自分でビルドして使えることを確認します。
●今回の環境
Windows10
カーネルバージョン
今回はカーネルのコンフィグはWSL2デフォルトのままビルドします。
今のカーネルバージョンが5.4.72なので、同じ5.4.72を使います。
仮想CANを有効にしたカスタムビルドは次回行います。
●ビルド手順
手順1:カーネルソースをダウンロード
カーネルのソースコードはGitHubのMicrosoft公式のものを使用します。
$ curl -OL https://github.com/microsoft/WSL2-Linux-Kernel/archive/linux-msft-5.4.72.tar.gz
→ linux-msft-5.4.72.tar.gz ファイルができる
解凍します。
$ tar -zxf linux-msft-5.4.72.tar.gz
→ WSL2-Linux-Kernel-linux-msft-5.4.72 ディレクトリができる
手順2:カーネルのビルドに必要なソフトをインストール
カーネルソース内の README-Microsoft.WSL2 ファイルの2に書かれているツールをインストールします。
ただし、これaptでインストールするのに、sudo とinstall の間に apt が抜けているので、aptを追記して実行すること(昔から抜けてる。いいかげん直しなよ。。。)
$ sudo apt install build-essential flex bison libssl-dev libelf-dev
手順3:カーネルをビルド
$ cd WSL2-Linux-Kernel-linux-msft-5.4.72 $ make KCONFIG_CONFIG=Microsoft/config-wsl
→ vmlinuxファイルができる
手順4:vmlinuxファイルをWindows側へコピー
コピー先は任意の場所を使用できるが、Windowsの領域へコピーする。
今回の例では、Windowsの%USERPROFILE%ディレクトリの下にwsl2/5.4.72-microsoft-standard-WSL2ディレクトリを作って、そこへコピーすることにします。
※(Windowsのユーザー名)は各環境で変えること
※%USERPROFILE%ディレクトリ = c:\Users\(Windowsのユーザー名) のディレクトリ
$ mkdir -p /mnt/c/Users/(Windowsのユーザー名)/wsl2/5.4.72-microsoft-standard-WSL2 $ cp vmlinux /mnt/c/Users/(Windowsのユーザー名)/wsl2/5.4.72-microsoft-standard-WSL2
手順5:.wslconfigファイルで使用するlinuxカーネルを指定する
%USERPROFILE%ディレクトリの直下に .wslconfigファイルを、以下の内容で作る。
※"\"はエスケープシーケンスになるので2つ続けること
[wsl2] kernel = c:\\Users\\(Windowsのユーザー名)\\wsl2\\5.4.72-microsoft-standard-WSL2\\vmlinux
手順6:wslをシャットダウンする
PowerShellで、wslをシャットダウンする。
PS > wsl --shutdown
手順7:wslを起動し、unameでバージョンを確認する
$ uname -a Linux earth 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Mar 17 20:42:16 JST 2021 x86_64 x86_64 x86_64 GNU/Linux
ビルド日時などから、今作ったカーネルで起動できていることを確認する。
以上で終わりです。
次回は、カーネルのカスタムビルドを行います。
0 件のコメント:
コメントを投稿