Debian/Ubuntuでカーネルソースパッケージからカーネルパッケージを作成する(後半)
「Debian/Ubuntuでカーネルソースパッケージからカーネルパッケージを作成する(前半)」の続き。
ビルド
ビルドにはmake-kpkgコマンドを使用する。オプションで同時実行可能なジョブ数を指定したりパッケージのリビジョン(同一バージョンの中で区別されるバージョン)を決めたりもできる。初期RAMディスクイメージ(initrd/initramfs)を作成するためには--initrdオプションを付ける。
[linux-source-[バージョン]]$ make-kpkg --jobs [ジョブ数] --rootcmd fakeroot --initrd --revision=[リビジョン] kernel_image
ccacheを使用したい場合は環境変数MAKEFLAGSを指定して
[linux-source-[バージョン]]$ MAKEFLAGS="HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc" make-kpkg --jobs [ジョブ数] --rootcmd fakeroot --initrd --revision=[リビジョン] kernel_image
のようにする。ただ、ビルド設定の変更内容によっては高速化されない部分が出ることもある。
ビルドが正常に終了すると作業ディレクトリの上の階層にlinux-image-[カーネルのバージョン]_[リビジョン]_[アーキテクチャ名].debというファイルが作られる。
なお、ジョブ数の指定については環境変数CONCURRENCY_LEVELの指定でもよく、--jobsオプションと同様の効果が得られる。
[linux-source-[バージョン]]$ CONCURRENCY_LEVEL=[ジョブ数] MAKEFLAGS="HOSTCC=/usr/lib/ccache/gcc HOSTCXX=/usr/lib/ccache/g++ CC=/usr/lib/ccache/gcc" make-kpkg --rootcmd fakeroot --initrd --revision=[リビジョン] kernel_image
インストール
作られたlinux-image-[カーネルのバージョン]_[リビジョン]_[アーキテクチャ名].debをdpkgコマンドでインストールする。
$ sudo dpkg -i [linux-image-[カーネルのバージョン]_[リビジョン]_[アーキテクチャ名].debの場所]
インストール後にはブートローダ項目が自動的に追加(アンインストール時には削除)され、次回起動時から選択できるようになる。「UbuntuでTuxOnIceを用いる(Ubuntu 10.10時点・前半)」で扱ったTuxOnIceのパッチを当ててビルド設定を編集してビルドしたものは正常に動作している。
パッケージは「linux-image-[カーネルのバージョン]」という名前でインストールされ、後から削除する場合はこの名前のパッケージを選択して消す。動作中のカーネルのパッケージを消すのはおすすめできない。
ソースパッケージのバージョンが上がるとそれをもとにして作られるパッケージの名前(linux-image-[バージョン])も変わり、古いバージョンと共存させることができるが、古いほうは必要がなくなったら消してディスク領域の空きを作ることもできる。
関連記事:
- ccacheで再コンパイル処理を高速化
- Linuxカーネル(2.6系)のビルドの流れ
- UbuntuでTuxOnIceを用いる(Ubuntu 10.10時点・前半)
- Linux上で認識されるCPU(物理/コア/論理)の数に関するメモ(Linux 2.6.35時点)
- Debian/Ubuntuでカーネルソースパッケージからカーネルパッケージを作成する(前半)
使用したバージョン:
- linux-source 2.6.35.25.32
- kernel-package 12.033
- ccache 2.4