組込み向け Linux をやっていると、PC Linux 以上にカーネル再構築の場面に出会う。ここに備忘録を残しておく。
文字通り、OS の心臓部であるカーネルを作り直すことである。こう書くと、PC の中身すべてをひっくり返すように聞こえるかもしれないが、そうではない。カーネルは数 MB 程度の小さなプログラムであり、それを更新するに過ぎない。その他のファイルには、何の影響も及ぼさない。また、万が一失敗したカーネルを作った場合でも、以前のカーネルを利用して起動できるので、心配には及ばない。
ちなみにカーネル本体は、/boot/vmlinuz に置かれている。そして現在 OS を動かしているカーネルは、メモリ上にロードされている。また、カーネルのソースは一般的に /usr/src/linux に置かれている。このソースをもとにカーネルの再構築は行なわれる。
Linux カーネルの再構築を行なう方法は下記の通りである。
/usr/src/linux にあるソースディレクトリへ移動する。下記のコマンドで、カーネルコンフィグのメニューを表示する。
$ make menuconfig
上記の menuconfig 以外にも、config や xconfig を指定することもできる。設定のやり方が異なるだけである。
各項目(USB Support や ビデオカード設定など)について、設定する。
Y(*) | カーネルに組み込む |
M | モジュールとして組み込む |
モジュールとして組み込む場合、カーネル自体にその機能は入りません。insmod や modprobe(insmod と違い依存関係も解決) コマンドで、都度組み込む必要があります。
カーネルに組み込んだ場合
メリット | モジュール組込みの手間がかからない |
デメリット | サイズが大きくなる |
モジュール化した場合
メリット | 用途に合わせて、再構築なしにカスタマイズできる |
デメリット | 都度モジュール組込みを行なわなければならない |