LPIC レベル2関連-カーネルコンパイルについて
■カーネルの再構築を考慮するケース
・必要なデバイスドライバがカーネルに含まれていない
・使用しているハードウェアに最適化したカーネルを利用したい
・カーネルの最新の機能を利用したい
■カーネルコンパイル(再構築)の流れ
ハードウェアの確認
必要な機能の確認
カーネルの確認
コンパイルに必要なツールの準備
カーネルソースの入手
カーネルソースコードの展開
パッチの適用
既存カーネルの設定を反映させる
/usr/src/linuxへのシンボリックリンクを張る
カーネルを設定する
コンパイルを実行する
カーネルに動的に組み込むモジュール(ローダブル・モジュール)を/lib/modules/[カーネルバージョン]以下に格納する
カーネルに導入する
ブートローダに登録する
システムを再起動して起動を確認する
■メモ
・カーネルコンパイルの難所はカーネル・パラメータの指定内容とコンパイル時の依存関係
・静的に組み込む、組み込まない、動的に組み込むモジュールがある
・設定に迷ったらモジュールにする
・入手したカーネルは慣習として/usr/srcディレクトリに展開する
・カーネル・パラメータの設定は「menuconfig」を推奨?
・カーネルを再構築する場合はカーネルモジュールもカーネルにあわせてコンパイルしなおす必要がある
・kernel.orgで配布されているディストリビュータの手が入っていないカーネルのことをvanilla kernelという
■参考URL
Linuxカーネル・コンパイル入門 前編
Linuxカーネル・コンパイル入門 後編
The Linux Kernel Archives(カーネル開発グループが配布しているオリジナルのカーネル・ソース)
■自分でコンパイルしたログ
◇フォルダ移動 # cd /usr/src/ ◇カーネルソースの取得 # wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.60.tar.bz2 ◇ソース展開 # tar xjvf linux-2.6.32.60.tar.bz2 ◇フォルダに入る # cd linux-2.6.32.60 ◇現在のカーネルの設定をコピー # cp /boot/config-2.6.18-308.el5 .config ◇現在のカーネルの設定を新しい設定に反映させる # make oldconfig | tee oldconfig.log ◇カーネルコンフィギュレーション これやら無いと起動時にkernel panic出てびっくりした。 # make menuconfig General setup ---> [*] enable deprecated sysfs features to support old userspace too ◇設定が反映されているか確認(yになってることを確認) # cat .config | grep CONFIG_SYSFS_DEPRECATED CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED_V2=y ◇makeする(カーネルとカーネルモジュールのコンパイル) # make | tee make.log ◇カーネルモジュールのインストール # make modules_install | tee modules_install.log ◇カーネルのインストール # make install | tee install.log ◇起動の順番を変える(default値の変更) # vim /boot/grub/menu.lst ◇再起動 # reboot ◇確認 # uname -r 2.6.32.60
※LPICレベル2の順番だと出来なかったので以下のサイトを参考に実際にコンパイルを行った。
centosのkernel再構築 2.6.18→2.6.37(stable)