Fedora24でLinuxのkernelをbuildする

さて作業レポート. dockerの課題を先にやれと言われそうだが….

とりあえずKVMにあげてからの話.

まずLinuxのkernelを kernel.orgから持ってくる. …のだが,hostの都合で今回は4.8.6を使う

vm

$wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.8.6.tar.xz

バージョンは適当に変えよう. 落としてきたのはtar.xzファイルであるので解凍して展開する.

$tar  Jxfv  linux-4.9.tar.xz

(この展開している時スーパーハカー感あってすごく楽しい)

あとは公式サイトに書いてある通りにやっていく

$ dnf install fedpkg fedora-packager rpmdevtools ncurses-devel pesign 
$ dnf install ncurses-devel

はずなのだが…? これで通るはずだが,何故か1つずつやっていかないとinstall出来なかった…. しかし pesign-rh-test-certs は無いらしい.おいおい.

でめでたくbuild出来ると思いきや openssl/bio.h: No such file or directoryなエラーがmakeしてると出る. なので

dnf install openssl-devel

を行う必要がある.

履歴によると実際に僕がやったのはこの辺

    22 | install openssl-devel    | 2016-12-24 18:34 | Install        |    8   
    21 | install pesign           | 2016-12-24 18:27 | Install        |    3   
    20 | install fedora-packager  | 2016-12-24 18:23 | Install        |   86   
    19 | install kernel-devel     | 2016-12-24 18:17 | Install        |    1   
    18 | install zlib-devel       | 2016-12-24 17:07 | Install        |    1   
    17 | update                   | 2016-12-24 16:48 | E, I, U        |   86 EE
    16 | install ncurses-devel    | 2016-12-24 16:42 | Install        |    2   

ここまで行くと多分build出来るので

$make clean

$make mrproper

して設定を消去(ゴミ削除)して

$make menuconfig

する.kernel debugにチェックをいれないといけないが,実はデフォルトで入っている.そのままsaveして

$ make >& ers &
$ disown %m
exit

あたりすれば大丈夫らしい.

心配ならtmuxをinstallして起動した状態で

$ make >& ers &

を行えばバックグラウンドでmakeが行われていく筈. logはersに入っているのでmoreとかで確認すると1~2時間くらいでbuild出来ている.

続いて

make modules_install

とするのだがエラーが出る. どうも

dnf install elfutils-libelf-devel

しないとダメらしい.

あとは

make install

すればokなのだが,この後gdbで追う様の設定が結構キツイ.それはまた次回で


(追記 2017/01/15)

kernelのbuildで失敗することが多くなり(具体的には make manuconfigが出来ない)

色々試したのですが

dnf reinstall ncurses-devel

したら解決しました.コンパイラでマクロが読めてなかったのは,このライブラリ群が破損していたからだそうです.