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 檢驗下了。