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