初心者向けKernelのビルド手順

 Linuxを使っていると、カーネルの再構築が必要な場合も出てきます。かなり手順が複雑なのでメモしておきます。

★注意★
この記事では特にカーネルをいじってはいません。ただ、カーネルをビルドして入れ替えるだけの手順です。

記事の環境

以下の環境でビルドしました。

・Ubuntu17.10 Desktop
・4.13.0-16-generic(元のカーネル)
・4.13.4-10(入れ替えたカーネル)

ビルド手順

必要なパッケージのインストール

sudo apt-get -y update
sudo apt-get -y install build-essential
sudo apt-get -y install libncurses-dev
sudo apt-get -y install fakeroot
sudo apt-get -y install kernel-package
sudo apt-get -y install linux-source
sudo apt-get -y install libssl-dev

★カーネル4.16以降では下記のパッケージも必要です。

sudo apt-get -y install bison
sudo apt-get -y install flex

ソースをコピーして展開

 /usr/src/linux-source-4.13.0.tar.bz2というファイルを作業フォルダにコピーします。

mkdir ~/src
cp /usr/src/linux-source-4.13.0.tar.bz2 ~/src/

.configファイルの作成

 /bootからconfigファイルの元をコピーして下記の手順で作成します。

①フォルダを移動し、解凍

cd ~/src
tar xvf linux-source-4.13.0.tar.bz2
cd linux-source-4.13.0
cp /boot/config-4.13.0-16-generic ./.config
make oldconfig

②カーネル設定やソース変更

カーネルの設定を変更する場合は「make menuconfig」等を実行します。カーネルソースへ変更を行うのもこの段階でします。

③ビルド

 make-kpkgコマンドを実行してカーネルをビルドします。

sudo -s
# 実コア+1が良いという記事があったので5
export CONCURRENCY_LEVEL=5
# 次のコマンドが時間かかります。 
make-kpkg -j 8 --rootcmd fakeroot --initrd --append_to_version=-hoge1 --revision=001 kernel_image kernel_headers

★引数について★
-j 8
 8個のジョブを並列で実行します。マルチコアのCPUで有効です。コア数×2が良いようです。

–initrd
 作成するカーネルにinitrdを付けてくれます。これをしないと再起動後にKernel Panicを起こし起動しません。

–append_to_version -hoge1
 パッケージ名のサフィックスです。
 バージョン名は自分で分かりやすいものを付けましょう。

–revision 001
 リビジョンを指定できます。

ビルドされたカーネルをインストール

 ビルドした一つ上のディレクトリにカーネルのパッケージが作成されるのでdpkgコマンドでインストールします。

cd ..
dpkg -i linux-image-4.13.4-hoge1_001-amd64.deb
dpkg -i linux-headers-4.13.4_hoge1_001-amd64.deb

バージョンを確認

 リブートしてインストールしたカーネルで起動したか確認してください。

reboot

$uname -r

ビルド時間について

 カーネルビルド時間はPCの速度に依存します。私の場合は、Core-i7 920のPCで1時間、Atom Z8700のPCで4時間かかりました。

2回目以降のビルド

 開発時はカーネルのソースを複数回ビルドする必要がありますが、以下の手順で再構築します。

cd ~/src/linux-source-4.13.0
sudo -s
export CONCURRENCY_LEVEL=5
make-kpkg -j 8 --rootcmd fakeroot --initrd --append_to_version -hoge2 --revision=002 kernel_image kernel_headers
cd ..
dpkg -i linux-image-4.13.4-hoge2_002-amd64.deb
dpkg -i linux-headers-4.13.4_hoge2_002-amd64.deb
reboot

 というのを繰り返せばカーネルを入れ替えることができます。
★hoge2と002は適当に変えてください。

不要なカーネルパッケージの削除

 不要になったカーネルは下記の手順で削除できます。
★動作中のカーネルを間違えて削除しないように注意しましょう。

インストールされている一覧を表示

dpkg --get-selections | grep linux- | grep -v deinstall

パッケージ名を指定して削除

sudo apt-get autoremove --purge linux-headers-4.13.4-hoge1
sudo apt-get autoremove --purge linux-image-4.13.4-hoge1
reboot

リストを再確認して削除されたか確認をします。

参考にしたリンク

カーネル起動オプション
ログレベル

コメントを残す

メールアドレスが公開されることはありません。

14 − 10 =