Linuxカーネルのビルド
Linuxカーネルのビルドを初めてやったときは、とても感動したのを覚えています。
得体のしれないOSを御した雰囲気がしますね。単にビルドしただけなんですが、何かを成し遂げた気がしました。
慣れるとそんなに大変ではありませんが、初めてだと何をやればいいか分からないですね。
カーネルのビルド方法を説明します。
ディストリを選ぶ
製品でやるならそのディストリビューションをインストールしてください。そうでないなら、先進的なディストリビューションを選ぶのが普通です。
Debian系ならDebian testing、レッドハット系ならFedoraをインストールしてください。(UbuntuはDeban系です)
今回はDebian testingを選んだと仮定します。(2022/11時点です)
aptでパッケージをインストール
とりあえずは、build-essentialは必須です。
その他はビルドエラーが出るたびにインストールするというのでいいかと思います。
今回やってみたら、ncursesのインストールの必要がありました。
# apt install build-essential # apt install libcurses-dev
大事なのはビルドエラーが出たときに、メッセージを読む力です。
ちゃんと読めば何をしなければならないかが書いてあるものです。
ディストリビューション配布のカーネルをビルド
Debianで使われているカーネルをビルドしてみます。
linux-sourceをインストールすると/usr/srcにソースが配置されまますので、~/kernelに展開します。
# apt install linux-source $ mkdir kernel $ cd kernel $ tar xvf /usr/src/linux-source-X.X.tar.gz $ cd linux-source-X.X
configファイルをどこからか持ってくる必要があります。カーネルハッカーはビルド時間が小さくなるように自前で極小のconfigを持っているものですが、初めての人は持っていないでしょうから、配っているお手本を持ってきます。
$ unxz -c /usr/src/linux-config-X.X/config.amd64_none_amd64.xz > .config
まずmenuconfigは一回は開いておきましょう。何かを訊かれます。とりあえずEnterを押しておいてください。
$ make menuconfig
ここからビルドです。エラーとなる可能性がありますので、よくエラーの内容を読むか、エラーの内容をgoogleで検索しましょう。
$ make
このmakeが時間がかかります。気長に待ちましょう。
以下でインストールします。
# make modules_install # make install
grubの設定ができてないよ、というエラーが出た場合は、
/etc/default/grubでGRUB_DISABLE_OS_PROBER=falseを記述して(大抵はコメントをはずす)、update grubしてください。
# update-grub
これで完成です。再起動して起動してみてください。
uname -rでカーネルバージョンが上がっていれば成功です。
まとめ
はじめてのLinuxのカーネルのビルド方法を説明しました。
カーネルハッカーへの第一歩です。
コメント