このページの本文へ

前へ 1 2 次へ

Windows Info 第313回

WSL(Windows Subsystem for Linux)のカーネルは差し替えられる

2022年02月06日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回は、WSL2のカーネルをコンパイルして差し替えてみる。Linuxは自分自身でカーネルのコンパイル、差し替えができるようになっているが、いくつか準備もある。手順としては誰でも可能な方法にしているが、記事量の関係もあり、Linuxカーネル自体について細かく説明できない。Linuxカーネルのカスタマイズに関しては別途解説することとし、今回は準備と手順を解説する。

LinuxカーネルをソースコードからコンパイルしてWSL2で動かした

カーネルをコンパイルするための準備

 WSL2用には、マイクロソフトがパッチを当てたカーネルが必要だが、そのソースコードはGitHubで公開されている。このため、コンパイルに必要なパッケージをインストールしたら、gitコマンドでソースをコピー(clone)してくれば、あとはmake(Linux/Unix系のソフトウェア開発用コマンド)がなんとかしてくれる。

 まずは、必要となるパッケージのインストールだが、その前にディストリビューションを最新状態にしておく。

sudo apt update
sudo apt upgrade -y

 次に以下のちょっと長いコマンドで必要なパッケージを導入する。

sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool zip unzip v4l-utils libssl-dev python3-pip cmake git iputils-ping net-tools dwarves -y

 「sudo apt install」から最後の「-y」の間にあるのがカーネルのコンパイルに必要なパッケージだ。ここでは個々に解説できないので、何をインストールしたのか知りたければ、manやネット検索でなんとかしてほしい。

 次にカーネルのソースコードをコピーしてくる。もってくる場所はどこでもいい。一応Linuxでは、システムなどのソースコードは「/usr/src」に置くことになっている。しかし、自分のホームディレクトリでもよい。

 カーネルのソースコードをもってくるには、どのバージョンなのかを示す「タグ」を指定する必要がある。こうした情報に関しては、githubのWSL2カーネルのプロジェクトのページを見る。具体的には、以下のURLにタグの一覧がある。

●Tags · microsoft/WSL2-Linux-Kernel
 https://github.com/microsoft/WSL2-Linux-Kernel/tags

 ここを見ると原稿執筆時の最新版は「linux-msft-wsl-5.10.81.1」となっていた。今回は解説の都合上、これを使うが他のバージョンでも構わない。ただ、あまり古いものは現在の環境では動作しない可能性もある。開発は日々進んでいるので、いずれは別のタグができているはずだし、今回の記事のものはもう無くなっているかもしれない。基本的には、ページ先頭の最新ビルドのタグを探して利用すればいいはずだ。ただし、開発途上のものなので、うまく動かないなどの問題が出る可能性はゼロではない。どうやってもダメなら他のタグを試すぐらいの「根気」は必要である。

 タグが判明したら、以下のgitコマンドでソースコードを「clone(コピー)」する。

sudo git clone --branch linux-msft-wsl-5.10.81.1 https://github.com/microsoft/WSL2-Linux-Kernel.git ~/wsl2-kernel-5.10.81.1

 「--branch」の後ろがGitHubで見つけたタグであり、次は、WSL2カーネルプロジェクトのURLだ。最後の「~/wsl2-kernel-5.10.81.1」は、ソースコードのコピー先である。1.6GBほどあるので少し時間がかかる。

 Cloneが終わったら、次はカーネルの構成を指定する「.config」ファイルを作成する。これは、現在のカーネルの構成を取得して作る。現在のカーネルの.configは「/proc/config.gz」にある。procファイルシステムはカーネルが作る仮想ファイルシステムなので、実はディストリビューションに寄らず、同じconfigファイルが出てくる。

 まずはクローン先のディレクトリに移動し、以下のコマンドを使う。teeを使うのは、sudoコマンドはリダイレクトを管理者権限では実行しないため、zcatにsudoを付けてもソースコードのディレクトリに書き込みができないため。ソースコードのディレクトリ全体がrootの所有になっていて、リダイレクトは実行したユーザー権限での書き込みになるからだ。直接リダイレクトせずteeにsudoを付けることでファイルの書き込みをroot権限でしてくれる。

zcat /proc/config.gz | sudo tee .config >/dev/null

 これで基本的な準備はできたが、カーネルをコンパイルする手順が記述してあるMakefileを書き換えて、バージョン表記を変更しておくと、あとで確認が楽となる。具体的には、Makefile先頭部分にある「EXTRAVERSION」の行を書き換えて、自分が作成したカーネルであることがはっきりとわかるようにしておくとよい。

ソースコードディレクトリにあるMakefileの冒頭にバージョンを指定する変数があるので、これを変更しておくと、カーネルが変更されたことが確実にわかる。冒頭画面のunamaコマンドは、Makefileを変更して作成したもの

 次に必要に応じてカーネルのコンフィギュレーションを変更する。これには、前述の.configファイルを直接編集するか、以下のコマンドを使ってGUIのコンフィギュレーションプログラムmenuconfigを起動できる。

sudo make menuconfig

 どちらにしても、カーネルのコンフィギュレーションをするには、Linuxカーネルやデバイスドライバーなどの知識が必要で、ここ簡単に解説とはいかない。とりあえず今回は、現在動いているWSL2カーネルとまったく同じ構成にしているので、特に変更する必要なく動作するはずである。なお、デバイスドライバーを組み込みたいといった場合など、今回は自力でなんとかしてほしい。おそらくmenuconfigのDevice Driversの下に設定項目があるはずだ。

menuconfigを使うとメニュー形式でカーネルの構成を変更可能。ただし、今回解説した手順では、コンフィギュレーションを書き換える必要なしにWSL2で動作するカーネルを作ることができる

 コンフィギュレーションが終了したら(あるいは何もしなかったら)、最後に以下のコマンドでカーネルをコンパイルする。

sudo make -j$(nproc)

 「-j$(nproc)」は、makeを複数プロセスで実行するもの。「$(nproc)」部分でWSL2に割り当てられたプロセッサ数に変換される。具体的にいくつなのかはPCにより違い「echo $(nporc)」を実行すれば表示できる。また、場合によってはコンパイル中に確認メッセージが表示されるが「y」で先に進んで、まずは問題ないはずだ。

 少し時間がかかるが、コマンドが終わるとソースコードディレクトリに「vmlinux」ファイルができているはずだ。これがカーネルである。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事
1
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
【整備済み品】中古 ノートパソコン NEC VersaPro VKT16/15.6型・第8世代Core i5-8250U(最大動作3.4GHz)/快適メモリ8GB/ 高速SSD 256GB/Win11 Pro/MS Office 2019付属/テンキー付, Webカメラ, USB3.0, HDMI, VGA, 有線LAN, WIFI内蔵, Bluetooth/ACアダプター付属/180日間保証
¥26,880
2
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
【整備済み品】富士通 ノートパソコン LIFEBOOK U9310 13.3型FHD(1920x1080) 超軽薄 ノートPC/第10世代 Core i5-10310U@1.7GHz/ 8GB メモリ/高速ストレージ SSD/Webカメラ/WIFI/Type-C/HDMI/win11&MS Office 2019 搭載 ビジネス 在宅勤務向け パソコン (メモリ:8GB/SSD:256GB)
¥36,979
3
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
HP ノートパソコン 15-fd 15.6インチ インテル Core Ultra 5 125H メモリ16GB SSD512GB Windows 11 Microsoft Office 2024搭載 WPS Office搭載 カメラシャッター 指紋認証 薄型 Copilotキー搭載 ナチュラルシルバー (BJ0M7PA-AAAF)
¥134,377
4
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
Lenovo Chromebook クロームブック IdeaPad Flex 3i Gen8 12.2インチ インテル® プロセッサー N100搭載 メモリ4GB eMMC 64GB バッテリー駆動12.0時間 重量1.25kg アビスブルー 82XH001KJP
¥39,800
5
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
Apple 2025 MacBook Pro 10 コアCPU、10 コアGPU のM5 チップ搭載ノートパソコン:Apple Intelligence のために設計、14.2 インチLiquid Retina XDR ディスプレイ、24GB ユニファイドメモリ、1TBのSSD ストレージ - スペースブラック
¥296,323

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ
1
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
KIOXIA(キオクシア) 旧東芝メモリ microSD 128GB UHS-I Class10 (最大読出速度100MB/s) Nintendo Switch動作確認済 国内サポート正規品 メーカー保証5年 KLMEA128G
¥1,880
2
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
Anker PowerLine III Flow USB-C & USB-C ケーブル Anker絡まないケーブル 240W 結束バンド付き USB PD対応 シリコン素材採用 iPhone 17 / 16 / 15 / Galaxy iPad Pro MacBook Pro/Air 各種対応 (1.8m ミッドナイトブラック)
¥1,890
3
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
【Amazon.co.jp限定】バッファロー microSD 32GB 100MB/s UHS-1 U1 microSDHC【 Nintendo Switch 対応 】V10 A1 IPX7 Full HD RMSD-032U11HA/N
¥980
4
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
Anker USB Type C ケーブル PowerLine USB-C & USB-A 3.0 ケーブル iPhone 17 / 16 / 15 /Xperia/Galaxy/LG/iPad Pro/MacBook その他 Android 等 USB-C機器対応 テレワーク リモート 在宅勤務 0.9m ホワイト
¥740
5
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
Anker iPhone充電ケーブル PowerLine II ライトニングケーブル MFi認証 超高耐久 iPhone 14 / 14 Pro Max / 14 Plus / 13 / 13 Pro / 12 / 11 / X/XS/XR / 8 Plus 各種対応 (0.9m ホワイト)
¥990
6
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
【Amazon.co.jp限定】 ロジクール 静音 ワイヤレス トラックボール マウス M575SPd Bluetooth Logibolt 無線 windows mac iPad OS Chrome トラックボールマウス ブラック M575 M575SP 国内正規品 ※Amazon.co.jp限定 壁紙ダウンロード付き
¥5,280
7
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
KIOXIA(キオクシア)【日本製】USBフラッシュメモリ 32GB USB2.0 国内サポート正規品 KLU202A032GL
¥699
8
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
キヤノン Canon 純正 インクカートリッジ BCI-381(BK/C/M/Y)+380 5色マルチパック BCI-381+380/5MP 長さ:5.3cm 幅:13.9cm 高さ:10.75cm
¥5,545
9
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
バッファロー SDカード 128GB 100MB/s UHS-1 スピードクラス1 VideoSpeedClass10 IPX7 Full HD データ復旧サービス対応 RSDC-128U11HA/N
¥1,980
10
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
バッファロー USBメモリ 32GB USB3.2(Gen1)/3.1(Gen 1)/3.0/2.0 充実サポート RUF3-K32GA-BK/N
¥880

Amazonのアソシエイトとして、ASCII.jpは適格販売により収入を得ています。

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン