Linux Tips |
|
Fedora 10でカーネルを再構築するには
北浦訓行
2009/2/18 |
Fedora 8以降は、カーネルの再構築を行う手順が変わった。ここでは、Fedora 10でカーネルを再構築する方法を説明する。
最初に、rootでログインして、再構築に必要なパッケージ(rpmdevtoolsとyum-utils)をインストールしておく。
# yum install rpmdevtools yum-utils |
次に、一般ユーザーのアカウントでログインして、パッケージ再構築の準備を行う。rpmdev-setuptreeコマンドを実行すると、ホームディレクトリの下にrpmbuildディレクトリが作成され、さらにその下にBUILD、RPMS、SOURCES、SPECS、SRPMSの各サブディレクトリが作成される。
$ rpmdev-setuptree
$ ls ~/rpmbuild/
BUILD RPMS SOURCES SPECS SRPMS |
次に、yumdownloaderコマンドでカーネルソースをダウンロードする。原稿執筆時点での最新版は、kernel-2.6.27.12-170.2.5.fc10.src.rpmになる。
$ yumdownloader --source kernel
(省略)
$ ls
kernel-2.6.27.12-170.2.5.fc10.src.rpm |
カーネルソースがダウンロードできたら、rootでログインして、yum-builddepコマンドでカーネルソースの再構築に必要となるパッケージをインストールする。
$ su
パスワード: ←rootのパスワードを入力
# yum-builddep kernel-2.6.27.12-170.2.5.fc10.src.rpm
Loaded plugins: refresh-packagekit
module-init-tools-3.5-3.fc10.i386
patch-2.5.4-35.fc10.i386
(省略)
# exit
$ |
続いて、rpmコマンドでカーネルソースをインストールする。
$ rpm -Uhv kernel-2.6.27.12-170.2.5.fc10.src.rpm
1:kernel 警告: ユーザ mockbuild は存在しません - root を使用します
(省略) |
これにより、rpmdev-setuptreeコマンドによって作成された~/rpmbuildディレクトリ下にカーネルソースが展開される。続いて、カーネルソースのツリーを用意する。
$ cd ~/rpmbuild/SPECS
$ rpmbuild -bp --target=`uname -m` kernel.spec |
カーネルソースのツリーは、~/rpmbuild/BUILD/kernel-<バージョン>/linux-<バージョン>.<アーキテクチャ>ディレクトリに作成される。
$ ls ~/rpmbuild/BUILD/kernel-2.6.27/linux-2.6.27.i686
COPYING config-debug config-powerpc64 drivers net
(省略) |
もし、カーネルソースにパッチを当てるなら、ここでソースツリーをコピーして、その作業を行うことになる。
カーネルオプションを変更する場合は、カーネルソースのディレクトリに移動して、変更作業を行う。このあたりは、従来の手順とほとんど同じだ。バージョンやCPUアーキテクチャによってコピーするファイルが異なる。今回は最新カーネル(原稿執筆時点)に対して最も一般的なアーキテクチャであるi686を例にした。
$ cd ~/rpmbuild/BUILD/kernel-2.6.27/linux-2.6.27.i686
$ cp configs/kernel-2.6.27.12-i686.config .config
$ make oldconfig |
カーネルオプションを変更する際には、CUIバージョンとGUIバージョンを使用することができる。CUIの場合は、
を実行する。この場合には、以下のような画面が表示される。
|
make menuconfig実行時の画面 |
GUIの場合は、
を実行する。この場合には、以下のような画面が表示される。ただし、GUIの場合はqt3-develやlibXi-develなどのパッケージが必要となるため、あらかじめインストールしておかなければならない。
|
make xconfig実行時の画面 |
カーネルオプションの変更が完了したら、kernel.specを変更してカスタムカーネルを作成する作業を行う。~/rpmbuild/SPECSディレクトリに移動して、テキストエディタでkernel.specを開く。
$ cd ~/rpmbuild/SPECS
$ vi kernel.spec |
「#% define buildid .local」という行があるので、先頭の「#」を削除して、「.local」をユニークな名称(ここでは「.NTFS_090201」)に変更する。
↓
%define buildid .NTFS_090202 |
【注意】
今回のkernel-2.6.27.12-170.2.5.fc10.src.rpmに含まれるkernel.specの「#% define buildid .local」は、「%」と「define」の間に空白が入っている。カーネルを再構築する際には、この空白を削除しなければならない。そうしないとエラーが発生する。 |
次に、新しいカーネルをビルドする。この作業にはかなり時間がかかる。
$ rpmbuild -bb --target=`uname -m` kernel.spec |
新しいカーネルは、~/rpmbuild/RPMS/<アーキテクチャ>ディレクトリに作成される。その際には、kernel.specの「#% define buildid .local」を変更した名前が、rpmファイルの一部となる。例えば、今回は「%define buildid .NTFS_090202」としたので、以下のように、「kernel-2.6.27.12-170.2.5.NTFS_090202.fc10.i686.rpm」という名前のパッケージが作成される。
$ cd ~/rpmbuild/RPMS/i686
$ ls
kernel-2.6.27.12-170.2.5.NTFS_090202.fc10.i686.rpm
kernel-PAE-2.6.27.12-170.2.5.NTFS_090202.fc10.i686.rpm
(省略) |
あとはrpmファイルをインストールするだけだ。その際には、アップグレードオプション(-Uなど)を指定しないように注意が必要だ。
$ pwd
/home/<ユーザーアカウント>/rpmbuild/RPMS/i686
$ su
パスワード: ←rootのパスワードを入力
# rpm -ihv kernel-2.6.27.12-170.2.5.NTFS_090202.fc10.i686.rpm |
これで新しいカーネルのインストールは完了だ。GRUBにも新しいカーネルの設定が追加されるが、デフォルトではそのカーネルが起動しないようになっているので注意が必要だ。手動でカーネルを切り替える方法は「Fedora 10でGRUBの起動メニューを表示するには」を参照。
Linux Squareフォーラム Linux Tipsカテゴリ別インデックス |