😄
[Linux]: カーネルをコンパイルしてみる
[Linux]: カーネルをコンパイルしてみる
カーネルのコンパイルをやってみたメモです。
時間はある程度必要ですが、思ったよりも流れ作業のようにできて感動しました。
再起動後カーネルパニックになるのがどうしても解決できなかったので今後調査します。
1. 現在のカーネルのバージョンの取得
$ uname -r
5.15.0-157-generic
2. 必要なパッケージのインストール
sudo apt update
sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev bc
3. カーネルのソースコードを取得する
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.12.51.tar.xz
4. ソースコードを解凍
cd /usr/local/src
sudo mv ~/linux-* .
sudo tar xvf *.tar.xz
rm -rf *.tar.xz
5. configファイルの作成
今回は学習用ということで現在のシステムをベースにする
cp /boot/config-$(uname -r) .config
make olddefconfig
6. 設定ファイルの修正とカーネルのコンパイル
以下の2行をから文字列にしないとコンパイル時にエラーになる。
$ sudo vim .config
#------------------------------
# CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"
CONFIG_SYSTEM_REVOCATION_KEYS=""
# CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
CONFIG_SYSTEM_TRUSTED_KEYS=""
この時に発生するエラー文
make[3]: *** No rule to make target 'debian/canonical-revoked-certs.pem', needed by 'certs/x509_revocation_list'. Stop.
make[2]: *** [scripts/Makefile.build:478: certs] Error 2
make[1]: *** [/usr/local/src/linux-6.12.51/Makefile:1945: .] Error 2
make: *** [Makefile:224: __sub-make] Error 2
vagrant@applewalk:/usr/local/src/linux-6.12.5
コンパイルを実行
sudo make
# 全コア利用する場合
sudo make -j$(nproc)
7. カーネルモジュールのインストール
sudo make modules_install
8. カーネルのインストール
sudo make install
コンパイルエラーが発生した場合
make clean
make mrproper # 完全にクリーンアップ
コンパイル時間をざっくり図ったところ以下のような感じでした。
マシンによってはまた違ってくるかもしれません。
| コア数 | 時間 |
|---|---|
| 1 | 約10時間 |
| 3 | 約6時間 |
| 4 | 約4時間 |
またVirtualBox上で実行したのですが、ハードディスク容量が40GBでは容量不足でカーネルのインストールができないので、余裕をもって用意する必要があります。
最後に
何か間違っていることなどあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion