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

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

Debian/Ubuntuでカーネルソースパッケージからカーネルパッケージを作成する(前半)

ここでは、Debian/Ubuntuカーネルソースパッケージからカーネルの.debパッケージを作成する作業に関してを扱う。
カーネルソースの一部を修正したものやビルド設定を変更したものをDebian/Ubuntuで使用したいとき向けで、初期RAMディスクイメージ(initrd/initramfs)も作成されてパッケージに含まれる。

必要なパッケージ

カーネルソースパッケージ(パッケージ名「linux-source-[バージョン]」)とビルド時に用いるツール「kernel-package」に加え、ビルド設定を編集する際にQt3(「xconfig」ターゲット)を使用する場合は「libqt3-mt-dev」,GTK+ 2(「gconfig」ターゲット)を使用する場合は「libgtk2.0-dev」,端末のインターフェース(「menuconfig」ターゲット)を使用する場合は「libncurses5-dev」のパッケージも必要。また、「ccacheで再コンパイル処理を高速化」で扱ったccacheで2回目からのビルドを高速化したい場合は「ccache」も必要。これらをSynapticapt-getコマンドなどでインストールしておく。

ソースの展開

カーネルソースのパッケージをインストールすると/usr/src/linux-source-[バージョン].tar.bz2というファイルが配置されるので、これを展開する。このファイルは既にディストリによる変更が行われた後の状態となっている。
ソースの一部を修正したい場合はこの段階で修正作業を行っておく。
ソースの展開を含め、ここから先の作業は全て一般ユーザ権限で行うことができる。

ビルド設定

ビルド設定とその編集については「Linuxカーネル(2.6系)のビルドの流れ」を参照。
ディストリのカーネルの設定は/boot/config-[バージョン]というファイルに保存されているので、ベースにするにはこれを開くとよい。
設定の内容によってはビルドエラーを起こすこともあり、ビルド時にエラーが出なくても、起動ができなかったり、あるいは起動ができてもディストリのカーネルの設定で有効だったものを無効にした場合に何らかの不具合を引き起こしたりする場合がある。
確実に動かしたいのなら元の設定をそのまま用いるか、もしくは「絶対に使われないと分かっているデバイスのドライバ」などを削ってビルドに必要な時間とCPU資源,使用するディスク領域を削減するとよい。
カーネルのソースツリーにパッチのみを適用してビルド設定はディストリのカーネルから変えないという場合(新しい設定項目のない場合に限る)は/boot/config-[バージョン]そのままの内容でもよい。

(「Debian/Ubuntuでカーネルソースパッケージからカーネルパッケージを作成する(後半)」に続く)

関連記事:

使用したバージョン:

  • linux-source 2.6.35.25.32
  • kernel-package 12.033