1. 程式人生 > >為升級後的Linux核心打包(適用於ubuntu)

為升級後的Linux核心打包(適用於ubuntu)

打包替換核心

打包替換新核心使用的是make-kpkg命令,所以此方法只適合支援make-kpkg命令的系統版本,一般適合Ubuntu、Debian等系統,不適合RedHat系統。

1、定製核心

#make mrprobe ,清理原始碼樹。

#make menuconfig ,配置核心。

2、打包核心

(1)拷貝.confg檔案:

執行#cp /boot/config-,然後按下Tab鍵,系統會自動填上該目錄下符合條件的檔名,然後繼續輸入 .config,目的是使用在boot目錄下的原配置檔案。

不執行這一步的話,後面make的時候會提示找不到.confg檔案。

如果在上一步配置了核心的話應該是會自動生成.

config檔案,但這裡本人只是執行了一次#make menuconfig命令並沒有配置核心。

(2)編譯打包核心

#make-kpkg --initrd - -append-to-version=-pyh - -revision=zxxiong.0716 -j 4kernel_image kernel_headers

執行完以上命令後將在上一級目錄生成兩個.deb包:

標頭檔案包:linux-headers-3.12.5-pyh_zxxiong.0716_amd64.deb

核心包:linux-image-3.12.5-pyh_zxxiong.0716_amd64.deb

【--initrd】選項會讓make-kpkg自動幫我們生成initramfs;

【--revision】會給生成的deb檔案加上一個版本資訊。這個引數只是影響到檔名,如果不指定,預設會是“10.00.Custom”;

【--append-to-version】也是一種版本資訊,它不僅出現在deb安裝包的檔名裡,也會影響到kernel的名稱,比如本例中,核心更新完成之後,用“uname -r”察看會得到“3.12.5-pyh”;

【kernel_image】表示生成核心和預設模組的安裝包。

【kernel_headers】這樣make-kpkg會生成一個核心標頭檔案的安裝包。

如果我們用普通使用者來執行make-kpkg,需要加上fakeroot執行

#fakeroot make-kpkg --initrd - -append-to-version=-pyh - -revision=zxxiong.0716 -j 4 kernel_image kernel_headers

(注:需要設定平臺 如-amd64在這裡配置檔案已經預設配置了,所以這裡不用加,選項kernel_image是生成核心.deb包,選項kernel_headers是生成標頭檔案.deb包,這兩個選項可以只使用一個)

(3)安裝核心

將上面生成的.deb包拷貝到需要替換核心的機器上,執行以下命令:

#dpkg –i linux-headers-3.12.5-pyh_zxxiong.0716_amd64.deblinux-image-3.12.5-pyh_zxxiong.0716_amd64.deb (接上一行)

或者直接在deb包所在目錄執行:#dpkg –i ./*.deb

執行命令之後則會自動更新/boot目錄下的檔案(即自動執行命令:# update-initramfs -c -k3.12.5 和#update-grub2),然後重啟系統並選定載入的核心就可以了,還可以修改/boot/grub/grub.cfg配置檔案中的 set default=”0”, 預設為0,安裝完後檢視該檔案新載入的核心是第幾項就設定為幾(從0開始),這樣則不需要在開機時選擇啟動第幾項了。

(5) 重啟系統

#reboot