歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 10.04升級內核實戰

Ubuntu 10.04升級內核實戰

日期:2017/2/28 16:33:01   编辑:Linux教程

Ubuntu 10.04內核是Llinux 2.6.32,其實升級到最新版本2.6.34也沒什麼很大意義,主要是集成了一些新的驅動和一些普通用戶用不到的功能,所以基本上本文純屬折騰,但現在不是流行一句話:“人生在於折騰”嘛,所以大家一起來折騰並快樂著吧!

首先是准備條件:

(1)有一台裝有Ubuntu 10.04的機器

(2)擁有root權限

(3)下載linux 內核2.6.34源碼,並解壓到/usr/src下,使用命令如下:

$ bunzip2 linux-2.6.34.tar.bz2

$ tar xvf linux-2.6.34.tar

這樣你就可以得到一個名叫linux-2.6.34

好,現在一切都准備好了,接下來就開始配置,編譯,安裝新內核吧!

1, 進入剛才的文件夾 /usr/src/linux-2.6.34,輸入命令:

$ make mrproper

該命令的功能在於清除當前目錄下殘留的.config和.o文件,這些文件一般是以前編譯時未清理而殘留的。而對於第一次編譯的代碼來說,不存在這些殘留文件,所以可以略過此步,但是如果該源代碼以前被編譯過,那麼強烈建議執行此命令,否則後面可能會出現未知的問題。

2, 配置編譯選項

作為操作系統的內核,其內容和功能必然非常繁雜,包括處理器調度,內存管理,文件系統管理,進程通訊以及設備管理等等,而對於不同的硬件,其配置選項也不相同,所以在編譯源代碼之前必須設置編譯選項。其實我覺得這一步是升級內核整個過程中最有技術含量的,因為要根據自己的需要正確選擇yes or no需要對計算機方方面面的知識都有所了解。但是這裡的選項實在是太多了,大概有幾百項之多,我以前曾嘗試著一項一項的選,但是最後還是放棄了,因為有很多選項不是很明白。

既然這樣,難道沒有什麼簡便的方法麼? 當然有!那就是make menuconfig 或者make xconfig。我使用的是make menuconfig,但是前提條件是要裝ncurse。

另外,在make menuconfig過程中也會有一些選項需要你來設置*, y, n 或者m,選擇*表示選項中的內容被直接編入內核中,選擇m表示選項中的內容不編入內核,而只是編成獨立的module,用到時才調用。

ok, 在當前文件路徑下,輸入命令:

make menuconfig

根據菜單提示,選擇編譯配置選項,並保存配置文件為.config

3,確定依賴性

根據以往的經驗,這一步是必須的,但是這次編譯的時候,系統提醒我沒必須要執行這個命令:

make dep

4,清除編譯中間文件

輸入命令:make clean

5,生成新內核

就是把配置過程中,我們選中編入內核中的程序編譯鏈接生產linux內核,輸入命令:

make bzImage

6,生成modules

和上步差不多,就是把配置過程中,我們選中編成modules的程序編譯鏈接成modules,輸入命令:

make modules

7,安裝modules

就是把剛才編譯生產的modules拷到系統文件夾下,以供新內核調用。輸入命令:

make modules_install

一切都自動做好了。

8,建立要載入ramdisk的映像文件

如果linux系統按照在scsi磁盤上,這部是必須的,否則可以跳過。我的linux是裝在vmware上的,用的是虛擬的scsi磁盤,所以必須 要這一步。輸入命令:

mkinitramfs -o /boot/initrd-linux2.6.34.img 2.6.34

如果你的linux不是ubuntu,而是其他的發行版本,那麼使用的命令可能不是mkinitramfs,而是mkinitrd,但功能和用法類似。

9,按裝內核

輸入命令:make install

此時系統會把linux內核的鏡像文件還有System.map考入到/boot下.

10, 配置grub引導程序

既然新的內核編譯並安裝好了,那麼我們要配置系統的引導程序用新內核正確引導,這一步是手動的,對象是/boot/grub/grub.cfg,首先用chmod更改該文件的只讀屬性。然後參照裡面的已有內容添加一個新啟動項,我的新啟動項是:

menuentry 'Ubuntu, with Linux 2.6.34-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 140c9813-9b08-4f92-bc5f-93b2050ecca1
linux /boot/vmlinuz-2.6.34 root=UUID=140c9813-9b08-4f92-bc5f-93b2050ecca1 ro quiet splash
initrd /boot/initrd-custom2.6.34.img
}

上面粗體字,linux 後面指明了新內核映像文件的路徑,initrd後面指明了ramdisk映像文件的路徑。

最後一點,別忘了把菜單超時時間設置為10秒鐘,因為默認超時為0,而且是從原來的內核鏡像啟動系統。

萬事ok,敲下reboot,系統啟動後,從grub菜單中選中新內核引導linux,怎麼樣,系統啟動的鼓聲響了吧!

Copyright © Linux教程網 All Rights Reserved