前些天升級了Red Hat Linux 9.0的核心,從2.4.20-8升級到2.6.20版本。 升級過程曲折而艱辛,不過經過努力,還是成功了,願與大家共用。 這個升級過程不局限於從2.4.20-8升級到2.6.20版本,可供將核心從2.4.x升級到2.6.x的使用者使用。 首先,要做好準備工作,你的手中至少要有以下四套軟體包: 1、Linux的2.6.20版本核心包(linux-2.6.20.tar.gz):作用就不多說了,自然是核心的源碼包; 2、Modutils 3.2 工具包(module-init-tools-3.2.tar.gz):原2.4.x下的工具包不適用於2.6.x,必須升級; 3、Mkinitrd 4.1.18-2 工具包(mkinitrd-4.1.18-2.i386.rpm):在make install時需要使用該工具; 4、Device Mapper 開發包(device-mapper-1.00.19-2.i386.rpm):Mkinitrd工具包依賴該包; 5、LVM 開發包(lvm2-2.00.25-1.01.i386.rpm):Device Mapper依賴該包; 6、Binutils 開發包(binutils-2.17.tar.gz):如升級安裝於虛擬機器上的Red Hat Linux,則必需該包。 呵呵,準備就緒了嗎?在這裡我都沒有給出,是因為不同的機器在不同的地區,不同的網路上,可能會有下載速度的較大差異。以前我用別人提供的,下載的都十分緩慢。所以,我在這裡告訴大家如何快速的去獲得這些工具包:一定要到Google(推薦)或BAIDU上搜尋,搜尋的時候要用檔案名稱全名進行搜尋,假如要搜尋LVM 開發包,那麼填寫關鍵字時要寫lvm2-2.00.25-1.01.i386.rpm,然後在找到的結果中選擇以“Index of ……”為標題的網頁。這樣的網頁會有很多,選擇的時候要根據每一條記錄最後一行給出的網域名稱,選出離自己地理位置最近的網頁。比如說“*.ch.kernel.org”之類的網域名稱下的網頁。這樣可以有效保證下載速度,不會讓你一邊玩著遊戲,一邊升級核心,等軟體包都下載完了,心思也就全跑到遊戲上了。:) 現在開始安裝工具包吧!首先安裝Modutils 3.2 工具包,將目前的目錄切換到module-init-tools-3.2.tar.gz的下載目錄下,依次執行如下命令: tar zxf module-init-tools-3.2.tar.gz cd module-init-tools-3.2 ./configure --prefix=/ make moveold(將原來的工具程式改名,這樣還可繼續使用原來的2.4.x核心) make all install ./generate-modprobe.conf /etc/modprobe.conf(產生2.6.x核心的新設定檔) 下面安裝Mkinitrd 4.1.18-2 工具包,將目前的目錄切換到mkinitrd-4.1.18-2.i386.rpm、device-mapper-1.00.19-2.i386.rpm和lvm2-2.00.25-1.01.i386.rpm的下載目錄(三個檔案最好在同一目錄)下,依次執行如下命令: rpm -ivh --nodeps --force lvm2-2.00.25-1.01.i386.rpm rpm -ivh --nodeps --force device-mapper-1.00.19-2.i386.rpm rpm -ivh --nodeps --force mkinitrd-4.1.18-2.i386.rpm 在虛擬機器上運行Red Hat Linux 9.0或安裝核心到最後出現bzImage編譯錯誤的情況,則必須安裝Binutils 開發包,虛擬機器上該類型的錯誤訊息一般為: OBJCOPY arch/i386/boot/compressed/vmlinux.bin BFD: Warning: Writing section `.bss' to huge (ie negative) file offset 0xc025d000. objcopy: arch/i386/boot/compressed/vmlinux.bin: File truncated make[2]: *** [arch/i386/boot/compressed/vmlinux.bin] Error 1 make[1]: *** [arch/i386/boot/compressed/vmlinux] Error 2 make: *** [bzImage] Error 2 將目前的目錄切換到binutils-2.17.tar.gz下載目錄,依次執行如下命令: tar zxf binutils-2.17.tar.gz cd binutils-2.17 ./configure make make install 好了,所有安裝包均已齊備,現在開始編譯新核心吧! 將目前的目錄切換到linux-2.6.20.tar.gz下載目錄,依次執行如下命令: cp ./linux-2.6.20.tar.gz /usr/src tar zxf linux-2.6.20.tar.gz cd linux-2.6.20 make mrproper make menuconfig 此時會出現一個圖形介面,列出了所有的核心配置選項,其中有幾項是必需的,用“Y”鍵選中: “Loadable Module support”中,選“Module unloading”和“Automatic kernel module loading”; “Device Drivers”→“Block Devices”中,選“Loopback device support”; “Device Drivers”→“Multi-device support(RAID and LVM)”中,選“device mapper support”; “Device Drivers”→“Graphics support”中,選“Support for frame buffer devices”; “Device Drivers”→“USB support”中,若不在虛擬機器環境中,應盡量全選以支援USB; “Device Drivers”→“Network device support ”→“Ethernet (10 or 100Mbit)”中,選“AMD PCnet32 PCI support”; 由於Red Hat 9.0使用ext3作為檔案系統,故“File System”中的所有關於ext2、ext3的選項必選; 如果在VMware虛擬機器下編譯核心,SCSI硬碟,則以下三個選項必選: “Device Drivers”→“SCSI device support”; “Device Drivers”→“SCSI device support”→“SCSI disk support”; “Device Drivers”→“SCSI device support”→“SCSI low-level drivers”→“BusLogic SCSI support”; 對於要求系統提供比較多樣的網路通訊協定的開發人員,還應在“Network Support”中進行相應設定。 設定完成!開始進行真正的核心編譯工作。依次執行如下命令: make make modules make modules_install make install 如果是VMware虛擬機器+SCSI硬碟的使用者,在make install之前,還要執行以下命令: cp /usr/src/linux-2.6.20/drivers/scsi/BusLogic.o /lib/modules/2.6.20/kernel/drivers/scsi 核心編譯到此就完全結束了,若想要成功啟動核心,還要做一些後續的工作。依次執行如下命令: cp /usr/src/linux-2.6.20/arch/i386/boot/bzImage /boot/vmlinuz-2.6.20(使用VMware的使用者必需) cp /usr/src/linux-2.6.20/System.map /boot/System.map-2.6.20 cd /boot rm -rf System.map(刪除原有的核心啟動串連) ln -s System.map-2.6.20 System.map(設定新的核心啟動串連) 若你的Linux為GRUB啟動,則還要修改相應的開機檔案: cd /boot new-kernel-pkg --mkinitrd --depmod --install 2.6.20 df(該命令查看根分區,即標識為“/”的分區,看好後要記住它的名字,假設為/dev/sda2) gedit /boot/grub/grub.conf 在彈出的編輯視窗中,將“default=1”改為“default=0”,並將“kernel”行的“LABEL=/”改為上一步所查看的分區,按我們上一步的假設,改完以後的“kernel”行應該是下面的樣子: kernel /vmlinuz-2.6.20 ro root=/dev/sda2 由於本人使用虛擬機器安裝,所以上面的內容可能會與實環境有些出入,但藍色粗體部分一定是這樣的。 如果想在新核心下支援Hotplug、USB裝置或體驗sysfs檔案系統等,還需要安裝相應的工具包並改變更配置置檔案。關於這些問題,這裡不再敘述,以後開闢新帖供大家專門研究討論。 好了,整個核心升級大功告成!重新啟動之後,在作業系統選擇欄中會看到如下兩項: Red Hat Linux(2.6.20) Red Hat Linux(2.4.20-8) 選擇第一項,就可以真正使用2.6.20的Linux系統了。Enjoy the new kernel! |