之內核linux-3.15.6.tar.xz爲例,在ubuntu14.04下進行。。linux
第一步:配置內核。ubuntu
1,對內核進行解壓。vim
$tar -Jxvf linux-3.15.6.tar.xz (注意:J是大寫的)
架構
獲得文件夾linux-3.15.6ide
2,配置內核,因爲內核源碼是對多個計算機架構設計的,所以在編譯以前要對內核的功能進行選擇。spa
配置內核完成後會在linux-3.15.6文件夾下造成.config文件,這個文件就是內核功能列表文件,/boot/config-3.15.6就是根據這個.config來的。在linux-3.15.6(注意:本文的全部命令都是在此目錄下進行)目錄下經常使用的配置方法有:架構設計
(1),$make oldconfig
設計
這個命令使用存在的./.config的內容,使用該文件的內容做爲默認,而後把新內核增長的功能列出來讓用戶選擇,能夠大大簡化選擇功能的過程。源碼
(2),$make menuconfigit
(3),$make xconfig
(4),$make gconfig
(5),$make config
以上命令選擇之一,具體怎樣選擇功能,看其它的資料吧(絕對是個複雜的過程)。。
第二步:編譯內核
選擇(1)$make vmlinux (獲得的是未壓縮的內核)
選項(2)$make bzImage (獲得的是壓縮的內核)
實際的編譯內核經常使用的是:
$make clean
$make bzImage
上述兩個命令可能花費不少時間(make -j4 bzImage能夠節約不少時間,4指的是cpu的核數)。
編譯完成後會在arch/x86/boot/bzImage發現內核該內核文件。。
第三步:編譯模塊
編譯模塊是由於 全部的功能若是都放在內核文件bzImage中就會致使內核比較大,因此把一些不經常使用的功能變成模塊,須要使用的時候自動加載。哪些功能須要編譯成模塊仍是在內核中,在配置內核的階段已經選擇過了。
編譯模塊的命令:
$make modules
會花很長的時間。。
第四步:安裝模塊
模塊文件是在/lib/modules/`uname -r` 下的,要把模塊文件安裝正確的位置,須要的命令
$make modules_install
就會在/lib/modules下找到3.15.6的文件夾。。說明模塊成功安裝了。。
第五步:安裝內核
系統的內核是在/boot/下的,且文件名通常未vmlinz-版本(vmlinz-3.15.6),所以須要將內核複製到目的目錄下:
$sudo cp /arch/x86/boot/bzImage /boot/vmlinz-3.15.6
這樣內核就算安裝好了。。
第六步:保存.config文件:
$sudo cp .config /boot/config-3.15.6
第七步:創建與修改相關文件
1,創建inintrd.p_w_picpath-3.15.6文件
$mkinitramfs -o initrd.p_w_picpath-3.15.6 3.15.6
$sudo cp initrd.p_w_picpath-3.15.6 /boot/
(注意:後面那個3.15.6是根據/boot/modules/下的模塊文件夾3.15.6來的)
2,修改grub2,文件/boot/grub/grub.cfg
$sudo vim /boot/grub/grub.cfg
加入有關 vmlinz和initrd的信息,具體能夠參照grub.cfg中的其它一些選項來寫。。
注意:用make編譯的時候能夠加參數 例如 make -j4 bzImage;這樣能夠加快編譯的速度。。