2021年9月7日火曜日

Linux kernel build

 ドキュメントの場所

https://www.kernel.org/doc/html/v5.14/

https://kernelnewbies.org/

The Linux Documentation Project


開発ツールのインストール
sudo apt-get install libncurses5-dev gcc make git exuberant-ctags bc libssl-dev flex bison libelf-dev

linuxのkernelのソースコード取得

https://www.kernel.org/からtar ballを取得するか

gitで取得する。

Linus' treeから取得する場合
(Linusとは、有名なLinus Torvaldsのこと)
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

安定版(stable)を取得する場合
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
cd linux-stable
最新のタグを探してチェックアウトする。(手順省略)

.configをLinuxを実行中のマシンからコピー
.configには、ビルドするドライバ、モジュールなどの情報が記述されている。
cp /boot/config-`uname -r`* .config

default configを作る
make defconfig
(注意)default configは、ビルドする人にとって、必要な情報が設定されていない場合もある。


configの変更は、
make menuconfig
または、
make nconfig
で行う。

ビルドの実行
make -jX
Xは、数字 コア数に応じて変更、コア数の1.5倍くらいがよい。
例 make -j12 

インストール
sudo make modules_install install


カーネルの実行時の注意
変更前のカーネルで実行できるようにgrubの設定をしておく
 /etc/default/grubからGRUB_HIDDEN_TIMEOUT_QUIET行を削除
GRUB_TIMEOUTに適当な値を設定