カスタムカーネルのビルドは非常に大きいです。

カスタムカーネルのビルドは非常に大きいです。

RPMでカスタムカーネルを直接構築したいです。私は使用しているディストリビューション(この場合はCentos)を使用しており、.config最終カーネルのインストールサイズは2.2 Gbです。不要なドライバ/モジュールをすべて選択解除し、.configを更新しました。カーネルを作成すると、選択解除したドライバがコンパイルされていることがわかります。 .configを読んで大きなカーネルをコンパイルしたくない場合は、どのステップを見逃していますか?リポジトリのカーネルは私のカーネルに比べてほんの数Mbしかありません。

  1. ソースコードのダウンロード

    wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.138.tar.xz

  2. ソースコード抽出

    tar -xf linux-5.4.138.tar.xz

  3. elrepoで見つかった既存の構成をコピーします。

    cp ~/config-5.4.138-x86_64 linux-5.4.138/.config

  4. 走る

    make oldconfig

  5. menuconfigを使用して、不要なドライバ/モジュールを設定および選択解除して保存します。

    make menuconfig

  6. ビルド速度

    make rpm-pkg -j4

結果:

  586.3 MiB [##########]  kernel-5.4.138-1.x86_64.rpm
  147.8 MiB [##        ]  kernel-devel-5.4.138-1.x86_64.rpm
    1.3 MiB [          ]  kernel-headers-5.4.138-1.x86_64.rpm

ヤムのインストール:

kernel          x86_64          5.4.138-1             /kernel-5.4.138-1.x86_64          2.2 G

役に立つなら、ここに私の.configがあります。https://pastebin.com/LBw6Gm1s

ベストアンサー1

必要な設定でelrepoのkernel-lt-5.4.specを再構築してください。つまり、名前にカーネルバージョン(現在のconfig-5.4.138-x86_64)があるSource1に必要な編集を行います。バージョン番号を上げてください。シミュレーションを使用して生成されたSRPMを構築します。

Red HatスタイルのRPMパッケージには、独自のスクリプトと特定の方法で分割されたサブパッケージがあります。アップストリームRPM仕様とは全く異なります。一部のデバッグシンボルが削除されず、出力が大きくなりました。

仕様を読んで、どう違うのかをご覧ください。エレポの場合、イメージ内のkernel-lt-5.4.specを参照してください。。もっと複雑なのはRed Hatスタイルのカーネル仕様です。練習の焦点であるパッチされたkernel.orgの長期バージョンはありません。make rpm-pkg一部のMakefile呼び出しを介して比較スクリプト/パッケージ/mkspec、Red Hatカーネルと全く似ていません。デバッグシンボルの削除の無効化の説明を参照してください。

ここで唯一のゴシックビットは、私たちが望むカーネルファイルからシンボルが削除されるのを防ぐためにinstall_postをオーバーライドすることです。

いいえ、サイズはバグではありません。カーネルハッカーが望むのはデバッグシンボルです。

アップストリーム(kernel.org)とダウンストリーム(Red Hat、elrepo)の両方が独自のパッケージビルドスクリプトを持っていると非常に混乱します。しかし、これは注意を払うべき詳細です。繰り返し可能なビルドとカスタムパッケージの理解のために。


elrepoはパッケージ名をkernel-ltに変更しました。(またはkernel-ml)を使用して、RHELカーネルパッケージ名との競合を防ぎます。ビルドの競合が発生するので注意してください。

おすすめ記事