以前カーネルをビルドしただけの時から随分経ったが、今回はちょっとソースコードもいじってみる。
で、今回はFedora31にバージョンが上がっている。
前回の記事と、
Fedora 24: カーネルを再ビルドする - Narrow Escape
ここを参考に。ここを中心に。
$ sudo yum install rpmdevtools
まず、rpmdevtoolsのインストール。
$ rpmdev-setuptree
rpmdev-setuptreeの実行。
$ uname -a Linux localhost.localdomain 5.3.7-301.fc31.x86_64 #1 SMP Mon Oct 21 19:18:58 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux $
バージョン確認しておく。
$ sudo yum install koji
kojiのインストール。
$ koji download-build --arch=src kernel-5.3.7-301.fc31.x86_64
ソースのダウンロード。
$ rpm -Uvh kernel-5.3.7-301.fc31.src.rpm
パッケージ更新。
警告が出るけど、気にしない。
SPECSの下のkernel.specをバックアップとって編集。
最初は別のだったが、今回も結局".bg1"にした。。
$ rpmbuild -bp SPECS/kernel.spec
"rpmbuild -bp"したら、
make入ってなかった。
$ sudo yum install make
make入れて再度やると、
flex入ってない。
$ sudo yum install flex
flex入れた。
$ sudo yum install fedpkg fedora-packager ncurses-devel pesign grubby
ついでに前回入れてたこの辺も入れてみた。
効果あったかはわからんけど。
今度はbisonが入ってない。
$ sudo yum install bison
bison入れた。
pathfix.pyがないってどういうこと。
command-not-found.com – pathfix.py
なるほど。
$ sudo yum install python3-devel
python3は入ってたけど、"python3-devel"が必要だったみたい。
$ rpmbuild -bp SPECS/kernel.spec setting SOURCE_DATE_EPOCH=1571616000 実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.gfIMWn . . . + exit 0 $
やっと"rpmbuild -bp"が成功。
linuxから始まるソースを見ていくとgitレポジトリになってる。
addとcommitしてみる。
新しいブランチ"bg1"を作って切り替える。
init/main.cを編集。
kernel_init関数の中で、printkで"bg1 in kernel_init"と出力。
patch用のcommit。
こうやってpatchを作るらしい。
SOURCEに格納されたみたい。
作った1000-custom.patchをkernel.specの"END OF PATCH DEFINITIONS"の前に追加するらしい。
BUILDの下を空にして、"rpmbuild -bp"する。
うまくいったので、
本体ビルドしようとしたら、まだ足りなかったので、いろいろ入れる。
今度こそビルド。
数時間後に出来た。
成果物を"/usr/src/kernels"にコピー。
シンボリックリンクを貼って、
インストール。
で前回と同様に再起動してShiftキーを押すと、
こうなるので"bg1"とあるやつを選ぶ。
カーネルがbg1バージョンになってる。
さて、いじったソースがどうなってるか確認する。
dmesgすると、起動時のいろいろなものが見える。
随分と下に行くと、"bg1 in kernel_init"があった。
ということで、修正したソースコードの部分が反映されてることがわかった。