試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

Mandriva Linux 2010.0のカーネルの再ビルドに関するメモ(前半)

  1. カーネルソースパッケージのインストールから起動までの流れ
    1. カーネルソースパッケージのインストール
    2. バージョン文字列の微調整
    3. ディストリのカーネルの設定を読み込む
    4. ビルドとモジュール,カーネル本体のインストール
    5. 初期RAMディスクイメージ(initrd)の作成

カーネルソースパッケージのインストールから起動までの流れ

カーネルのビルドの流れ自体は「Linuxカーネル(2.6系)のビルドの流れ」で書いたものと同様だが、Mandriva Linux(2010.0)での流れについてをまとめておく。

カーネルソースパッケージのインストール
「kernel-source-2.6.31.5-1mnb」のようなカーネルソースのパッケージ(もしくは仮想パッケージ「kernel-source-latest」)をインストールすると/usr/src/linux-2.6.31.5-1mnb/のような名前のディレクトリ以下にソースが展開され、このディレクトリに対するシンボリックリンク/usr/src/linuxも作成される。/usr/src/linux-2.6.31.5-desktop-1mnb/のようなディレクトリはディストリのカーネルの開発パッケージ(標準カーネル向けのモジュールのビルドに用いられる)を構成するもので、ソースではない。

バージョン文字列の微調整
EXTRAVERSIONの末尾が「mnbcustom」となって見づらいので
[一部]ファイル名: /usr/src/linux-2.6.31.5-1mnb/Makefile

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 31
EXTRAVERSION = .5-1mnb-custom

「-」を間に入れた。

ディストリのカーネルの設定を読み込む
ビルド設定は/boot/config-2.6.31.5-desktop-1mnbのような/boot/以下のファイルを「make menuconfig」や「make xconfig」「make gconfig」の実行時に読み込むことでディストリのカーネルと同じ設定をもとにすることができる。
しかし、そのままでは使用しないモジュールが大量にビルドされて無駄に時間がかかる上にディスク領域も食うため、それらはできるだけ省くことにした。
機能を外していくとビルドに失敗することが出たりすることもあり、それを戻したりするのを含め、繰り返しビルドすることになることが多いので、できるだけccacheを用いたほうがよい。

ビルドとモジュール,カーネル本体のインストール
ビルドからモジュールとカーネル本体のインストールまでは通常通り。
カーネルのファイルはarch/[アーキテクチャ名]/boot/bzImageにあるので、これを/boot/以下に/boot/vmlinuz-customなどとしてコピーする。

初期RAMディスクイメージ(initrd)の作成
モジュールをインストールした後mkinitrdというツールを用いることで、簡単に(Mandriva Linux向けの)初期RAMディスクイメージ(initrd)が作成できる。

# mkinitrd [出力initrdファイルの場所] [カーネルのバージョン]

下は例。出力ファイルが既に存在する場合は失敗するので先に消しておく。

$ sudo rm /boot/initrd-custom -f; sudo mkinitrd /boot/initrd-custom 2.6.31.5-1mnb-custom

使用したバージョン: