RPMでカスタムカーネルを直接構築したいです。私は使用しているディストリビューション(この場合はCentos)を使用しており、.config
最終カーネルのインストールサイズは2.2 Gbです。不要なドライバ/モジュールをすべて選択解除し、.configを更新しました。カーネルを作成すると、選択解除したドライバがコンパイルされていることがわかります。 .configを読んで大きなカーネルをコンパイルしたくない場合は、どのステップを見逃していますか?リポジトリのカーネルは私のカーネルに比べてほんの数Mbしかありません。
ソースコードのダウンロード
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.138.tar.xz
ソースコード抽出
tar -xf linux-5.4.138.tar.xz
elrepoで見つかった既存の構成をコピーします。
cp ~/config-5.4.138-x86_64 linux-5.4.138/.config
走る
make oldconfig
menuconfigを使用して、不要なドライバ/モジュールを設定および選択解除して保存します。
make menuconfig
ビルド速度
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カーネルパッケージ名との競合を防ぎます。ビルドの競合が発生するので注意してください。