1. 程式人生 > >ubuntu環境下重新編譯核心

ubuntu環境下重新編譯核心

由於除錯核心、驅動或工作需要,有可能需要對ubuntu下的核心進行重新編譯,本文對核心重新編譯過程進行簡單分析,在進行重新編譯核心前你可以通過uname -a來確認你的linux系統的當前版本。

1.根據你的需要獲取核心原始碼,獲取核心原始碼有兩種方式,一種是直接到http://www.kernel.org/下載你要的原始碼,另一種是通過在terminal中輸入shell命令 sudo apt-get install linux-source-xx來獲取核心原始碼。如果是通過網站下載的,你可以選擇你存放原始碼的路徑,如果是通過apt-get方式獲取的,一般原始碼是在/usr/src目錄下以linux-source-3.7.0.tar.bz2形式存在。

2. 進入到原始碼存放的路徑:cd /usr/src,對原始碼進行解壓縮;tar -xvf  linux-source-3.7.0.tar.bz2,然後進入到解壓縮後的原始碼路徑裡。

3. 原始碼中有兩個x86 config檔案,你可以通過當前系統來確定用那個配置config檔案,當前系統的配置檔案一般在/usr/src/目錄下,這個目錄下有可能存在多個linux-headers-xx目錄 ,你可以通過uname -a來確定是那個目錄,確定好後,通過vi .config來檢視當前系統的config檔案,像我的系統config檔案裡有CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig“這一項,由此可以確定我的系統用了i386_defconfig這個config,確定好後,回到原始碼路徑上。

4.根據步驟3確定的config檔案,對原始碼進行初始化配置:make i386_defconfig.

5.配置成功後,根據你的需求對核心進行裁剪,可能通過make menuconfig命令進入核心裁剪鍵面,每個人需求不同,這裡就不進行細說了。

6.裁剪好核心後,接下來要生成用於核心啟動的影像檔案vmlinux,這個檔案可以通過make bzImage生成,這個過程所需時間比較長。

7.生成vmlinux後,對需要動態載入的模組進行編譯,通過命令make modules實現;

8.通過make modules_install 安裝核心模組,安裝目錄預設為/lib/modules下,像我這邊執行完後在/lib/modules目錄下有3.7.0-rc2目錄,這就表示核心模組安裝成功;當然這個目錄也是可以通過使用者指定的export INSTALL_MOD_PATH="".

9.make install安裝核心,這一步會將由make bzImage產生的System.map, vmlinux,config,initrd.img檔案拷貝到用於存放系統啟動影像的目錄/boot/下,當然這些檔案會根據你的核心原始碼的版本生成不同的檔名,這裡如果沒有initrd.img生成,則可以通過mkinitramfs生成;

10. 如果系統是通過grub方式引導系統啟動的, 則需要對grub啟動影像進行配置,在目錄/boot/grub/grub.cfg檔案裡。其實執行完make install後會自動修改grub.cfg檔案,如果沒有自動 修改你可以手動去修改這個檔案。或者可執行命令來自動修改:$ update-grub2

到這裡為止,已經完成了核心編譯的所以步驟,可以reboot重新啟動系統,然後通過uname -a來檢視 是否已經替換為你新習與編譯的系統了。