LINUX核心升級(轉)

BSDLite發表於2007-08-16
LINUX核心升級(轉)[@more@]  Linux的一個重要的特點就是其原始碼的公開性,全世界任何一個軟體工程師都可以將自己認為優秀的程式碼加入到其中,由此引發的一個明顯的好處就是Linux修補漏洞的快速以及對最新軟體技術的利用。而Linux的核心則是這些特點的最直接的代表。


  為什麼要升級核心


  正如它的名字的字面意義,Linux的核心承擔著Linux作業系統的最為核心的任務,是其它程式和硬體等執行過程中的仲裁者:它要管理所有程式的記憶體,保證它們都能平等得到處理器的時隙。此外,它還提供程式和硬體之間的介面等功能。

  通常,更新的核心會支援更多的硬體,具備更好的程式管理能力,執行速度更快、更穩定,並且一般會修復老版本中發現的許多漏洞等,經常性地選擇升級更新的系統核心是Linux使用者的必要操作內容。

  一般,核心的版本序列號使用三個數字表示,如2.2.14,版本號越高表示功能越強。版本號分為兩個系列:一種是產品系列,以偶數命名,例如,1.2.x、2.0.x、2.2.x等,執行穩定,已經經過較為周密的測試;另外一種是開發測試系列,以奇數命名,用以進行最新功能的測試,不建議初學者和生產過程中使用。

  本文的後面部分將分別以核心2.0.34到2.2.14的升級過程介紹核心升級用到的步驟、概念、注意事項以及可以參考的更多文件,文中出現的斜體字是直接輸入的命令。


  核心的配置與編譯


  Linux當前支援的CPU型別包括x86、ARM、DEC Alpha、SUN Sparc、M68000、MIPS、PowerPC等,應該說上述型別已經包括絕大多數使用者使用的CPU型號。在安裝與配置過程中,Linux會自動識別這些型號。

  通常要執行的第一個命令是:#cd /usr/src/linux;make mrproper。確保原始碼目錄下沒有不正確的.o檔案以及檔案的互相依賴。

  接下來的核心配置過程比較煩瑣,但是配置的適當與否與日後Linux的執行直接相關,有必要了解一下一些主要的且經常用到的選項的設定。

  配置核心可以根據需要與愛好使用下面命令中的一個:

  #make config (基於文字的最為傳統的配置介面)

  #make menuconfig (基於文字選單的配置介面)

  #make xconfig (基於圖形視窗模式的配置介面)

  #make oldconfig (如果只想在原來核心配置的基礎上修改一些小地方,會省去不少麻煩)

  進行配置時,大部分選項可以使用其預設值,只有小部分需要根據使用者不同的需要選擇。例如,如果需要核心支援DOS分割槽的檔案系統,則要在檔案系統部分選擇FAT或DOS系統支援;系統如果配有網路卡、PCMCIA卡等,需要在網路配置中選擇相應卡的型別。

  選擇相應的配置時,有三種選擇,它們分別代表的含義如下:

  “Y”- 將該功能編譯進核心

  “N”- 不將該功能編譯進核心

  “M”-將該功能編譯成可以在需要時動態插入到核心中的模組。

  將與核心其它部分關係較遠且不經常使用的部分功能程式碼編譯成為可載入模組,有利於減小核心的長度,減小核心消耗的記憶體,簡化該功能相應的環境改變時對核心的影響。許多功能都可以這樣處理,例如像上面提到的網路卡的支援、對FAT等檔案系統的支援。

  配置完核心,接下來需要對核心原始碼檔案的依賴性和完整性進行檢驗,並且進行編譯,此時要保證系統所使用的gcc版本在gcc-2.7.2以上:

  #make dep (確保關鍵檔案在正確的位置)

  #make clean (確保所有有關檔案都處於最新版本狀態)

  #make zImage (編譯壓縮形式的核心)

  在需要核心支援較多的外設和功能時,核心可能變得很大,此時可以編譯大核心:

  #make bzImage

  編譯的時間與機器的硬體條件及核心的配置等因素有關,以筆者的64MB記憶體的賽揚300為例,編譯核心一次大致需要20多分鐘。所獲得的核心的位置在/usr/src/linux/arch/i386/boot目錄下,當然這裡假設使用者的CPU是x86型的。

  如果選擇了可載入模組,編譯完核心後,要對選擇的模組進行編譯:

  #make module (編譯選擇的模組)

  #make module-install (將編譯後的模組轉移到系統標準位置)

  模組在系統中的標準目錄位於/lib/modules/x.y.z,後面的x.y.z是版本號,為安全起見,在執行#make modules-install之前最好對/lib/modules進行備份。模組通常是帶有副檔名.o的檔案,使用命令#lsmod可以對當前核心的模組進行列表。


  軟體下載與解包


  選擇相對快速並且具有權威性的站點下載最新的核心原始碼包,例如條件允許的話可以到下面的站點下載:

  

  國內Linux使用者可以到下面的站點下載:

  

  

  注意,如果升級版本的跨度很大,並且預計會配置外部模組時,還要下載最新的模組工具modules-x.y.z.tar.gz。

  Linux系統的核心程式碼存放於目錄/usr/src/linux,實際上,該目錄是一個連結,指向當前所用的核心版本的目錄,例如如果當前使用的版本是2.0.34,則該核心的實際目錄應該是:/usr/src/linux-2.0.34。而新下載的核心中的目錄是linux,這樣,直接在/usr/src下解包會導致原來的核心目錄被覆蓋。所以穩妥的做法是,首先刪除連結linux,然後解包、更名、重新連結。

  在解包前要確認在/usr/src目錄下沒有叫linux的目錄,或者不再想保留該目錄。

  另外,隨著Linux核心功能的增強及對更多外設的支援,檔案包也越變越大,當前最新的穩定版2.2.14核心壓縮包的大小約為14MB,但實際上解壓縮及編譯等環節,要求/usr/src目錄所在的分割槽的空閒空間大於60MB位元組。


  啟用新核心


  將編譯好的新核心複製到系統目錄/boot下,例如

  #cp /usr/src/linux/arch/i386/boot/zImage /boot/zImage-2.2.14

  然後,編輯系統引導配置檔案/etc/lilo.conf,仿照原有選項添入新核心選項,給它起一個明顯好記的標籤(label),記住此時最好保留原有核心以及相應的選項,這樣不用害怕升級失敗而機器啟動不了,至少還可以使用舊的核心引導自己的計算機。儲存編輯後退出,此時要記住執行命令:#lilo,更新系統引導映象,這樣對lilo.conf的修改才能起作用。

  重啟機器後,在LILO的提示符下按“Tab”鍵,則應該看到加入的新核心選項。

  對於當前國內進行漢化後的Linux版本,由於其中的幾個主要版本是在核心中進行,例如衝浪平臺的Xteam Linux、藍點Bluepoint Linux等,所以使用這些發行版本的使用者如果按照上面的步驟進行核心升級則會導致漢化失敗、系統執行不穩定等後果。使用者需要等待廠家發行新核心的漢化包,然後到廠家指定的下載站點下載,按照其中的說明進行升級。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-962376/,如需轉載,請註明出處,否則將追究法律責任。

相關文章