Ubuntu 下編譯內核筆記

Ubuntu 下編譯內核筆記

本次筆記在參考了衆多前輩的帖子和文章實驗處理,固然要弄清內核的配置過程也是須要至關長的時間和耐心,這回先記錄一下操做成功的步驟,待往後補充。html

前提環境:Win7+VirsualBox+Ubuntu12.04linux

 

一,下載內核源碼

  官網:https://www.kernel.org/,這裏我下載的是最新穩定版本linux-3.12.6.tar.xz
ubuntu

  注意要在root角色下進行下面的操做ui

 

二,解壓源碼

1,把源碼拷貝到/usr/src目錄下

sudo cp linux-3.12.6.tar.xz /usr/src

2,解壓源碼

sudo tar -vxf linux-3.12.6.tar.xz

 

三,配置和編譯

1,清理上一次編譯殘留的文件,第一次編譯能夠跳過

sudo make mrproper 
sudo make clean

2,製做配置文件

能夠從拷貝系統的config文件,改爲.config並拷貝到源碼根目錄,也能夠運行spa

sudo make menuconfig

這裏就是配置內核的選項菜單界面,能夠根據你的須要,選擇要加載的模塊,裁剪內核。操作系統

若是要完全弄清每個選項,則須要更多的精力去研究了,http://lamp.linux.gov.cn/Linux/kernel_options.html,做者:金步國。我也正在研究這邊文章中...code

這裏我直接ESC推出,選擇保存,會生成.config默認原始的配置文件。htm

3,簡化 kernel 的配置

這一步我是參考網上的帖子作的,聽說Linux 2.6.32 開始引入了一個 make localmodconfig 用於簡化 kernel 的配置。blog

sudo make localmodconfig

make localmodconfig 會執行 lsmod 命令查看當前系統中加載了哪些模塊 (Modules), 並最後將原來的 .config 中不須要的模塊去掉,僅保留前面 lsmod 出來的這些模塊,從而簡化了內核的配置過程。 內存

4,編譯內核鏡像

sudo make bzImage

5,編譯模塊

sudo make modlues

6,安裝模塊

sudo make modules_install 

7,安裝內核

sudo make install

內核安裝完畢,grub2會自動更新,會在/boot/grub/下更新grub.config代碼。查看代碼得知,加入了新的內核引導代碼。

 

menuentry 'Ubuntu,Linux 3.12.6' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root f48e9fc9-9d77-4c7e-9897-6d493abe32c4
    linux    /boot/vmlinuz-3.12.6 root=UUID=f48e9fc9-9d77-4c7e-9897-6d493abe32c4 ro   quiet splash $vt_handoff
    initrd    /boot/initrd.img-3.12.6
}
menuentry 'Ubuntu, with Linux 3.12.6 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root f48e9fc9-9d77-4c7e-9897-6d493abe32c4
    echo    '載入 Linux 3.12.6 ...'
    linux    /boot/vmlinuz-3.12.6 root=UUID=f48e9fc9-9d77-4c7e-9897-6d493abe32c4 ro recovery nomodeset
    echo    '載入初始化內存盤...'
    initrd    /boot/initrd.img-3.12.6
}

 

 8.修改grub.cfg

這一步主要是爲了重啓的時候進入grub菜單,這樣就能夠選擇進入那個內核了。此時機器上有兩個內核,一老一新。

sudo gedit /etc/default/grub

修改這三句代碼代碼:

#############################
 此配置將影響菜單顯示。若設置此選項,將在此時間內隱藏菜單而顯示引導畫面。
 菜單將會被隱藏,除非在此行開頭加上一個 # 符號。(# GRUB_HIDDEN_TIMEOUT=0)。
 GRUB 2 第一次執行時將會尋找其餘操做系統。若沒有其餘操做系統被檢測到,菜單將會配置爲隱藏。若辨認出其餘操做系統,菜單將會顯示。
 如果大於 0 的整數,系統將會依此配置的秒數暫停,但不會顯示菜單。
 0 則菜單不會顯示,也不會有延遲。
 使用者能夠在啓動時按住 SHIFT 鍵不放以強制顯示菜單。
 啓動過程當中,系統將會檢查 SHIFT 鍵狀態。若沒法辨識按鍵狀態,會有一個短期的延遲讓使用者可經過按下 ESC 鍵來顯示菜單
#############################

#GRUB_HIDDEN_TIMEOUT=0



#############################
true 不顯示倒計時。屏幕將會是空白的。
false 在 GRUB_HIDDEN_TIMEOUT 中配置的時間,空白屏幕上會有一個倒數計時器。
#############################
GRUB_HIDDEN_TIMEOUT_QUIET=false 


#############################

此命令將順從 GRUB_HIDDEN_TIMEOUT 配置,除非 GRUB_HIDDEN_TIMEOUT 被註釋掉(#)。若 GRUB_HIDDEN_TIMEOUT 啓用,則當菜單顯示時,GRUB_TIMEOUT 將會只執行一次。
配置此值爲 -1 將會致使菜單一直顯示,直到用戶選擇。
GRUB 2 菜單默認爲隱藏,除非其餘操做系統被系統檢測到。若沒有其餘操做系統,此行將會被註釋掉,除非使用者修改它。爲了在每次啓動時顯示菜單,去掉此行的註釋並使用 1 或更大的值。

#############################
GRUB_TIMEOUT=10

 完成後記得運行命令:

sudo update-grub grub.cfg

 

 9,重啓系統

sudo reboot

重啓後直接進入啓動選項菜單,即grub菜單,選擇你要加載的內核。

相關文章
相關標籤/搜索