Linux內核編譯和替換小結

Linux內核編譯和替換小結 linux

一 準備工做 網站

1 當前Linux 環境 ui

系統版本爲 3.8.13.13-cdos spa

2 下載內核源碼 開發

在網站 www.kernel.org ,選擇合適的版本下載。 源碼

本次下載版本爲官方最新開發版本 linux-3.17.tar.xz it

 

二 內核編譯 io

1 解壓源碼 編譯

當前系統的源碼位置爲 /usr/src/linux-headers-3.8.13.13-cdos 基礎

新的源碼解壓到 /opt/linux-3.17,使用命令 #tar xvf linux-3.17.tar.xz –C /opt

 

2 make mrproper

Remove all generated files + config + various backup files

"make mrproper"命令清理源代碼樹,包括過去曾經配置的內核配置文件".config"都將被清除。即進行新的編譯工做時將原來老的配置文件給刪除到,以避免影響新的內核編譯。

即檢查有無不正確的.o文件和依賴關係,若是使用剛下載的完整的源程序包即第一次進行編譯,那麼本步能夠省略。而若是你屢次使用了這些源程序編譯內核,則最好要先運行一下這個命令。

 

3 make olddefconfig

將當前系統存在的.config 文件拷貝至3.17.0源碼目錄,使用make olddefconfig 命令配置內核選項。

make olddefconfig 的含義爲:採用已有的.config文件的參數做爲默認參數,同時升級依賴屬性,新屬性設置爲默認值再也不提醒。

 

也能夠使用如下兩個命令:

make config:純文本界面配置。

make menuconfig:基於文本的彩色菜單、單選列表、對話框。(經常使用)

 

4 make dep

若是內核從未編譯過,此步可跳過

根據配置結果,創建文件依賴關係。

該命令將會修改linux中每一個子目錄下的.depend文件,該文件包含了該目錄下每一個目標文件所須要的頭文件(絕對路徑的方式列舉)。

 

5 make clean

若是內核從未編譯過,此步可跳過

Remove most generated files but keep the config and enough build support to build external modules

清理一些沒必要要的文件,若是你在上次編譯的基礎上,刪去了一些選項,執行這一步操做,不然,就沒有必要了。

 

6 make –j

生成內核模塊、bzImage、System.map等文件。

-j[N]: 同時容許N個任務,而若是-j後不跟任何數字,則不限制處理器並行編譯的任務數。

 

本步也能夠分別執行 make bzImage 、make modules。

 

三 安裝內核和模塊

1 make modules_install

編譯成功後,系統會在/lib/modules目錄下生成一個3.17.0子目錄,裏面存放着新內核的全部可加載模塊(即將編譯好的modules拷貝到/lib/modules下)。

 

2 make install

執行該命令後,/boot 文件夾下會增長一下內容:

cp .config /boot/config-3.17.0

cp System.map /boot/System.map-3.17.0

cp /arch/i386/boot/bzImage /boot/vmlinuz-3.17.0

 

3 mkinitramfs

敲入命令生成內核版本相對應的img 文件:

#mkinitramfs 3.17.0 –o /boot/initrd.img-3.17.0

 

至此,更換內核所需的全部文件config、System.map、vmlinuz、initrd.img 都已經完成了。

 

4 update-grub2

更新啓動文件grub.cfg,將3.17.0添加至系統啓動選項中。

 

三 總結

恭喜您,到這裏全部的內核更換工做已經完成,能夠reboot 檢驗下了。

相關文章
相關標籤/搜索