本次筆記在參考了衆多前輩的帖子和文章實驗處理,固然要弄清內核的配置過程也是須要至關長的時間和耐心,這回先記錄一下操做成功的步驟,待往後補充。html
前提環境:Win7+VirsualBox+Ubuntu12.04linux
官網:https://www.kernel.org/,這裏我下載的是最新穩定版本linux-3.12.6.tar.xz
ubuntu
注意要在root角色下進行下面的操做ui
sudo cp linux-3.12.6.tar.xz /usr/src
sudo tar -vxf linux-3.12.6.tar.xz
sudo make mrproper
sudo make clean
能夠從拷貝系統的config文件,改爲.config並拷貝到源碼根目錄,也能夠運行spa
sudo make menuconfig
這裏就是配置內核的選項菜單界面,能夠根據你的須要,選擇要加載的模塊,裁剪內核。操作系統
若是要完全弄清每個選項,則須要更多的精力去研究了,http://lamp.linux.gov.cn/Linux/kernel_options.html,做者:金步國。我也正在研究這邊文章中...code
這裏我直接ESC推出,選擇保存,會生成.config默認原始的配置文件。htm
這一步我是參考網上的帖子作的,聽說Linux 2.6.32 開始引入了一個 make localmodconfig 用於簡化 kernel 的配置。blog
sudo make localmodconfig
make localmodconfig 會執行 lsmod 命令查看當前系統中加載了哪些模塊 (Modules), 並最後將原來的 .config 中不須要的模塊去掉,僅保留前面 lsmod 出來的這些模塊,從而簡化了內核的配置過程。 內存
sudo make bzImage
sudo make modlues
sudo make modules_install
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
}
這一步主要是爲了重啓的時候進入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
sudo reboot
重啓後直接進入啓動選項菜單,即grub菜單,選擇你要加載的內核。