作者:Baron
前言:
若有需要將 Driver or 增加 kernel 內的 modules 時,同時將它放入安裝的光碟當中,在安裝系統時希望即能找到並載入,以便順利安裝的過程。(如:增加未受支援的CPU,增加未受支援的磁碟(含硬碟)...)在自己不斷地嘗試下,獲得了最後的成果,當即做一紀錄。
一 首先針對需求的安裝光碟進行核心的編譯動作:
(以下內容都是在 Fedora 的安裝光碟下可執行,其餘環境尚未測試過。)
* 測試Kernel版本之.rpm包:
kernel-2.6.32.11-99.fc12.src.rpm
# rpm -Uvh kernel-2.6.32.11-99.fc12.src.rpm
它會解壓縮到 ~/rpmbuild,產生 SOURCES/ and SPECS/。
根據 Fedora 官網上表示,從 Fedora 12 之後開始不支援 i586 的 CPU架構。
如果真的需要在 fedora 12 使用 i586 CPU 該怎麼辦?!
請先行下載之前的版本,從中取出 config-i586 的設定檔:
# rpm -Uvh kernel-2.6.29.6-207.8.11.fc11.src.rpm
解壓縮完到以下路徑:
# cd ~/rpmbuild/SPECS/
到 kernel.spec 添加 config-i586 設定檔
Source30: config-x86-generic
Source31: config-i686-PAE
> Source32: config-i586
...
=================================
『註』若需添加新的 patch 到 kernel.spec 作法:
> Patch + 數字: patch_name.patch
Example: Patch13001: linux-2.6-pata_xxx.patch
> ApplyPatch: patch_name.patch
==================================
(解壓原始碼和套用修補程式) 來組建
# rpmbuild -bp --target=i586 kernel.spec
到以下目錄中:
# cd ~/rpmbuild/BUILD/kernel-ver./linux-ver./
取出 i586 核心設定檔
# cp configs/kernel-ver.i586 .config
先執行以下動作取得完整設定資源:
# make oldconfig (一路按Enter結束,即 採用預設值。)
將該 .config 複製到屬於 kernel-2.6.32 版本的 rpmbuild/SOURCES/config-i586
接下來的操作是屬於 kernel-2.6.32 版本...
# cd ~/rpmbuild/SPECS/
# rpmbuild -bp --target=i586 kernel.spec
# cd ~/rpmbuild/BUILD/kernel-ver./linux-ver./
# cp -v ~/rpmbuild/SOURCES/config-i586 .config
再進行一次取得完整設定資源的動作。(因每個不同的kernel或多或少都會有些設定不同,或增加,或減少,所以此動作必須要做!)
# make oldconfig
進行 kernel 內容的勾選
# make menuconfig
完畢後,將 .config 複製回 ~/rpmbuild/SOURCES/config-i586。
回到 ~/rpmbuild/SPECS/ 位置:
# rpmbuild -ba --target=i586 --without debuginfo --with firmware --with headers kernel.spec
過程時間漫長....約需1hr~2hr 左右。
二 增加新的 modules 到 kernel 中:
新的裝置驅動添加到 kernel 編譯環境中,除了必要的原始程式檔 (.c and .h) 外,還必須在所屬 (example: pata_rdc.c 屬於 drivers/ata/ 當中。) 增加內容到 Kconfig 以及 Makefile 當中。
相關說明請參閱我的網站內容:
「加入 driver 到 Linux Install CD」
「解開~kernel包新的driver,重新封裝成RPM的神秘面紗吧」
參考網站:
<http://fedoraproject.org/wiki/Building_a_custom_kernel>
<http://www.cnblogs.com/unicode/archive/2010/05/20/1740370.html>
<http://www.linuxsir.org/main/node/76>
沒有留言:
張貼留言