LINUX核心及升級簡介(轉)

post0發表於2007-08-09
LINUX核心及升級簡介(轉)[@more@]

1. Linux核心結構

首先我們介紹一下Linux 核心的結構,Linux核心主要由五個部分組成:程式排程,記憶體管理,虛擬檔案系統,網路介面,程式間通訊。

1 程式排程(SCHED):控制程式對CPU的訪問。當需要選擇下一個程式執行時,由排程程式選擇最值得執行的程式。可執行程式實際上是僅等待CPU資源的程式,如果某個程式在等待其它資源,則該程式是不可執行程式。Linux使用了比較簡單的基於優先順序的程式排程演算法選擇新的程式。

2記憶體管理(MM)允許多個程式安全的共享主記憶體區域。Linux 的記憶體管理支援虛擬記憶體,即在計算機中執行的程式,其程式碼,資料,堆疊的總量可以超過實際記憶體的大小,作業系統只是把當前使用的程式塊保留在記憶體中,其餘的程式塊則保留在磁碟中。必要時,作業系統負責在磁碟和記憶體間交換程式塊。記憶體管理從邏輯上分為硬體無關部分和硬體有關部分。硬體無關部分提供了程式的對映和邏輯記憶體的對換;硬體相關的部分為記憶體管理硬體提供了虛擬介面。

3虛擬檔案系統(Virtual File System,VFS)隱藏了各種硬體的具體細節,為所有的裝置提供了統一的介面,VFS提供了多達數十種不同的檔案系統。虛擬檔案系統可以分為邏輯檔案系統和裝置驅動程式。邏輯檔案系統指Linux所支援的檔案系統,如ext2,fat等,裝置驅動程式指為每一種硬體控制器所編寫的裝置驅動程式模組。

4網路介面(NET)提供了對各種網路標準的存取和各種網路硬體的支援。網路介面可分為網路協議和網路驅動程式。網路協議部分負責實現每一種可能的網路傳輸協議。網路裝置驅動程式負責與硬體裝置通訊,每一種可能的硬體裝置都有相應的裝置驅動程式。

5程式間通訊(IPC) 支援程式間各種通訊機制。

2.為什麼要升級核心

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

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

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

本文的後面部分將分別以核心2.4到2.6的升級過程介紹核心升級用到的步驟、概念、注意事項以及可以參考的更多文件

3.當前2.6版核心的獲取

 

1,下載:

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

  

2.解壓縮

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

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

4.升級系統內每個change檔案的版本

新的2.6核心的升級工作涉及到許多實用程式的升級。對於某些change檔案中列出的實用程式也不必擔心,它們或許只是某種檔案系統的特殊例子而已。但是,下面的檔案還是必須至少要滿足到下表給出的的最低版本:

Name: Minimum version: How to find version:

Gnu C Compiler 2.95.3 gcc--version

Gnu Make 3.78 make--version

binutils 2.12 ld-v

util-linux 2.10o fdformat--version

module-init-tools 0.9.9 depmod-V

procps 2.0.9 ps--version

[procps 2.x] [procps .x]

  下面的實用程式是檔案系統中的特殊程式。若執行ext2 或ext3,那麼就必須升級e2fsprogs。若執行jfs,就必須升級jfsutils,等等。如:

Name: Minimum version: How to find version:

e2fsprogs 1.29 tune2fs

jfsutils 1.0.14 fsck.jfs -V

reiserfsprogs 3.6.3 reiserfsck–V 2>&1| grep reiserfsprogs

xfsprogs 2.1.0 xfs_db -V

nfs-utils 1.0.5 showmount --version

另外,少數實用程式當你用到它時才需要升級的有:

Name: Minimum version: How to find version:

pcmcia-cs 3.1.21 Cardmgr -V quota-tools 3.09 Quota -V

PPP 2.4.0 ppd--version

isdn4k-utils 3.1pre1 Isdnctrl 2>&1 | grep version

oprofile 0.5.3 oprofiled--version

如果首次執行ALSA,請訪問獲取最新的alsa-lib 和 alsa-utils。

 

5.核心的配置與編譯

 

1.核心的配置

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

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

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

2.6核心配置包括:

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

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

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

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

#ALSA:{從2.4版本到2.6版本的升級,這就要使用到ALSA(Advanced Linux Sound Architecture即:新的 Linux 音訊體系結構)。它取代了OSS(Open Sound System)。配置核心時,選定ALSA的OSS API效法選項(SND_OSSEMUL、SND_MIXER_OSS和SND_PCM_OSS)和適當的聲音驅動(PCI 驅動)。最後,下載和安裝最新的alsa-lib和alsa-utils。}

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

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

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

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

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

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

2.編譯新核心

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

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

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

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

  #make bzImage

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

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

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

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

6.啟用新核心

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

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

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

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

這樣,我們就完成了linux的升

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

相關文章