Rpm

自定義核心建構非常大

  • August 6, 2021

我想為自己建構一個自定義核心作為 RPM。我使用了.config我正在使用的發行版,在本例中是 Centos,最終核心安裝大小為 2.2Gb。我已取消選擇所有不需要的驅動程序/模組並更新了 .config。當我製作核心時,我看到正在編譯的驅動程序被我取消選擇。我錯過了閱讀 .config 而沒有編譯大型核心的步驟?與我的相比,來自 repos 的核心是幾 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. 建構 RPM

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

使用您想要的配置重建 elrepo 的 kernel-lt-5.4.spec。也就是說,對 Source1 進行所需的編輯,名稱中包含核心版本,目前為 config-5.4.138-x86_64。增加版本號。使用 mock 建構生成的 SRPM。

Red Hat 風格的 RPM 包有自​​己的腳本,並以特定的方式拆分子包。與上游的 RPM 規範完全不同。一些調試符號沒有被剝離,導致輸出更大。

閱讀規範文件以了解它們的不同之處。對於 elrepo,請參閱 mirrors 上的 kernel-lt-5.4.spec。雖然比較複雜,但它是 Red Hat 風格的核心規範。沒有更新檔的 kernel.org 長期版本,這是練習的重點。相比之下make rpm-pkg,通過一些 Makefile 呼叫scripts/package/mkspec,它看起來一點也不像 Red Hat 核心。請注意有關禁用剝離調試符號的註釋:

這裡唯一的哥特式一點是重新定義 install_post 以避免從我們想要的核心文件中刪除符號

不,大小不是錯誤,核心黑客想要調試符號。

當上游(kernel.org)和下游(Red Hat,elrepo)都有自己的包建構腳本時,這很令人困惑。但這些是您需要注意的細節。對於可重現的建構,並了解您的自定義包。


elrepo 將其包 kernel-lt(或 kernel-ml)重命名為不與 RHEL 核心包名稱衝突。您的建構衝突,請注意。

引用自:https://unix.stackexchange.com/questions/663621