間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

kernel関係のパッケージ

http://debian.fam.cx/index.php?Software%2FLinuxKernel#nef2ea75

linux-image-2.6.x-ABI-SUBARCH: カーネルイメージ、カーネル本体です。
(中略)
linux-headers-2.6.x-ABI-SUBARCH: カーネルヘッダー。
カーネルイメージと同じく各アーキテクチャ内のサブアーキテクチャ毎にパッケージが作成されます。
シンボルテーブル (Module.symvers)、.config も含まれます。
通常はカーネルソースツリーに含まれていない外部カーネルモジュールの構築時に フルビルド済みカーネルソースのターゲットに代わるものとして利用されます。
(中略)
linux-libc-dev: カーネルヘッダーから不必要な情報を削除し再生成したユーザスペースヘッダー。 lenny から登場したパッケージです。 linux-2.6 ソースパッケージがビルドされる度に生成されます。
このパッケージに含まれるヘッダーはライブラリを経由せずカーネルを直接叩こうとする場合に使用されますが、 直接使用することはまれで、通常は (e)glibc のユーザ空間ヘッダーから自動的に呼び出されるようになっています。
(中略)
linux-source-2.6.x: ビルドに使用したソースコードはこのパッケージです。 make-kpkg コマンド (kernel-package) でのビルドにはこのソースを使用することが多いと思われます。
このソースには linux-patch-debian-2.6.x パッケージの全てのパッチが適用された状態でアーカイブされています。
(中略)
firmware-linux-free: DFSG フリーなファームウェアパッケージ。
(中略)
linux-kbuild-2.6 ソースパッケージ (バージョン 2.6.x)。
(中略)
重要なパッケージであるにもかかわらず、linux-kbuild-2.6.x バイナリパッケージが存在しない場合もあります。
とりわけ experimental では必要ならば自前でビルドしろというスタンス

linux-kbuild-2.6.x: Linux Kernel Kbuild インフラストラクチャ (scripts/)。
カーネルのシンボル解決用ユーティリティ genksyms, modpost も含まれるので、外部カーネルモジュール構築時に必須となります。
通常はカーネルヘッダーパッケージと同時にインストールされます。
ソースパッケージの項で説明した通り、このパッケージは linux-2.6 ソースからはビルドされず、 パッケージが存在しない場合もあります。

linux-kbuild-2.6 ソースパッケージのビルド
http://debian.fam.cx/index.php?Software%2FLinuxKernel#build_linux_kbuild_26

問題が発生するのを避けたければ毎回 linux-2.6 ソースパッケージをビルドしたら そのソースで linux-kbuild-2.6 ソースパッケージをビルドするのが無難

make-kpkgを使ったビルド
http://debian.fam.cx/index.php?Software%2FLinuxKernel#nef2ea75

linux-doc: Documentation 以下のドキュメントのパッケージ。
構築時に docbook-utils がインストールされている場合は HTML ドキュメントも作成されます。 docbook-utils が未インストールの場合生成されません。
linux-manual: Section 9 マニュアル(カーネル内関数、インターフェースに関するマニュアル)。 ただし、ビルド時に docbook-utils がインストールされている必要があります。docbook-utils が未インストールの場合構築されません。
linux-headers: カーネルヘッダー。外部カーネルモジュールのビルド時、フルビルド済みのカーネルソースがない場合に使用します。
linux-image-*-dbg: デバッグシンボル付きカーネルイメージ。
linux-source: ソースパッケージ。ビルドに使用したソースをパッケージングします。
(中略)
上記パッケージの中には Debian アーカイブにある公式パッケージ (apt で引っ張ってこれるという意味です) と 同じ名前のパッケージがありますが、互換性はありません。 例えば、linux-headers パッケージは make-kpkg で作成すると、 それ単独でフルビルド済みカーネルソースと同じ役割をしますが、公式の linux-headers はそうではありません。

make-kpkg に オプション --jobs 2 または環境変数 CONCURRENCY_LEVEL=2 を指定しておくと、make -j2 で CPU を 2 つ使ってコンパイルしてくれます。 数字は CPU 数より +1 か +2 (多くても2倍以下) にすると効率が良いでしょう。
distcc を起動しているホストがある場合は、 同様に --jobs (数字) オプションを追加することで分散コンパイルが可能となります。 全ジョブ数よりも +1 もしくは +2 (多くても2倍以下) にした数字で実行すると効率がよいでしょう。

Debian ソースパッケージの debian ディレクトリを利用する方法
http://debian.fam.cx/index.php?Software%2FLinuxKernel#gdbb95b0

要するに、通常のパッケージ構築と同じくソーストップディレクトリに debian/ を用意し、 dpkg-buildpackage を実行

ビルド中に ccache を利用できます。(環境変数または dpkg-buildpackage に DEBIAN_KERNEL_USE_CCACHE=true を渡す)
(中略)
debian/changelog が変更可能になるので、上流ソースからの変更を記述したりして、変更の把握が容易になります。
(中略)
make-kpkg コマンドの --config の様な手段はないので、事前に make *config をして .config を生成しておき、 debian/config 内の適切なディレクトリに放り込む必要があります。
make-kpkg コマンドとは異なり、ビルドディレクトリがソースのトップディレクトリではなく、debian/build ディレクトリを掘って そこに *.{k,}o や自動生成ヘッダーを溜め込む、というソース・ビルドディレクトリの分離を図っている為、 外部カーネルモジュールの再構築にはビルド済みソースが直接使用できません。 従ってカーネルヘッダーが必要ですが linux-kbuild-2.6.x パッケージがない場合はこれもビルドする必要があり、 ビルドの手間が増えます。

めも、未検証

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。