歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux配置與編譯內核

Linux配置與編譯內核

日期:2017/2/27 14:25:20   编辑:更多Linux
  編置內核包含兩大項內容,即配置內核和編譯內核。這兩項工作需要經常查看內核的文檔,至少要查看Readme文件和Documentation目錄下的Changes文件。它們對內核進行了描述,比如升級內核可能出現的問題和內核對系統中工具的版本要求等。Linux內核的編制方法下面將做具體說明。     下載與解壓   首先需要將內核源碼下載到/usr/src/目錄下面。如果壓縮格式是gzip,那麼執行如下命令:     #tar xzvf linux-2.4.23.tar.gz     如果是bzip2格式,則執行如下命令:     #tar xjvf linux-2.4.23.tar.bz2     這時會建立Linux-2.4.23內核源代碼樹。進入該目錄,並確保今後的所有操作都在這個目錄下完成。     配置內核   有了要編譯配置的內核,先來介紹怎麼樣配置內核。具體的步驟分為一下幾步:     1.在開始配置內核之前,首先需要通過下面的命令清除所有的臨時文件、中間件和配置文件。對於一個剛從網上下載的內核來說,它肯定是干淨的,這麼做只會多此一舉。但是這是一個良好習慣,而且不會有壞結果。     #make mrproper     2. 然後要了解自己系統的硬件配置情況,比如CPU的類型、主辦芯片、顯卡和聲卡的型號等。     3. 配置內核選項,用到的命令是:     #make <config_opt>     用到的配置工具有:   ◆ config 基於交互式的文本配置界面。每個問題以線形格式出現,並被一個一個地回答,而且一旦作出了回答就不能再修改了。     ◆ oldconfig 同config相似,但是使用原有的配置文件,而且只會提問有關新內核特性的問題,對於內核升級很方便。     ◆ menUConfig 一個文本模式、選單驅動的配置界面。     ◆ xconfig 基於Tcl/Tk的X圖形配置界面。     現在開始配置內核,使用的工具為menuconfig。在命令行模式下執行下面的命令:     #make menuconfig     在閃過幾行字之後就出現了如圖1所示的界面。     圖1 內核配置界面    使用方向鍵在各選項間移動;使用“Enter”鍵進入下一層選單;每個選項上的高亮字母是鍵盤快捷方式,使用它可以快速地到達想要設置的選單項。在括號中按“y”將這個項目編譯進內核中,按“m”編譯為模塊,按“n”為不選擇(按空格鍵也可在編譯進內核、編譯為模塊和不編譯三者間進行切換),按“h”將顯示這個選項的幫助信息,按“Esc”鍵將返回到上層選單。     注意,如果“make menuconfig”命令失敗,很可能是ncurses庫沒有安裝。     內核的配置選項很多,這裡就主要選項進行簡要說明,使大家能根據自己的情況,進行內核定制。如果某些項把握不准,可以參考documentation/Configure.help文件,也可搜索整個系統,並查看相關的選項都在哪些文件中出現了。接下來就是個選項的配置說明情況。     ◆ Loadable module support(可加載模塊支持)。其中“Enable loadable module support”選項可讓內核支持模塊;“Module unloading”選項可以讓用戶卸載不再使用的模塊,如果不選的話用戶將不能卸載任何模塊(注意,有些模塊一旦加載就不能卸載,與是否選擇了此選項無關);“Module versioning support(EXPERIMENTAL)”選項允許用戶可以使用其它版本內核中編譯的模塊,不過並不可靠,所以一般不選擇它;“Automatic kernel module loading”選項允許內核自動調用“modprobe”命令來加載需要的模塊。     模塊是一小段代碼,編譯後可在系統內核運行時被動態地加入內核,從而為內核增加一些特性或對某種硬件進行支持。一般一些不常用到的驅動或特性可以編譯為模塊以縮小內核的體積。在運行時可以使用“modprobe”命令把模塊加載到內核中去(在不需要時還可以卸載它)。     ◆ Set version infomation on all symbols for modules(CONFIG_MODVERSIONS)是有關內核模塊版本控制的選項。如果用戶打算開發內核模塊代碼(包括當前內核源碼樹中之外的任何模塊代碼),就開啟這個設置。一般的用戶可以關閉。     ◆(Pentium-III/Celeron(Coppermine))Processor family用來選擇CPU類型。它允許內核使用高級處理器內部的特殊指令。當然,如果用戶的CPU是80386,就沒必要選擇P4。但是如果實在不知該怎麼選擇,就選386。這時如果用戶使用高級的CPU,內核的運行速度會比它應有的速度慢,但至少它能夠運行。建議使用Help和/proc/cpuinfo獲得更多的幫助。     ◆ High Memory Support (CONFIG_NOHIGHMEM)使內核支持大內存。通常情況下內核只支持1GB內存(實際情況是896MB,它與vmalloc()的實現有關,這超出了我們的討論范圍)。如果用戶的內存數量超過了896MB,請選擇內核對4GB內存的支持,甚至64GB內存的支持。     ◆ Symmetric multi-processing support(CONFIG_SMP)使內核支持多處理器。如果用戶有多於一個CPU,那麼一定要選這項。     ◆ Maximum number of CPUs(2-32)用以選擇處理器數量。對於單CPU用戶來說,選多少都沒有意義。     ◆ General setup表示通用配置。這裡可設置內核對虛擬內存的支持和為System V的進程提供通信機制;通過“Sysctl support”選項可以動態地更改一些核心參數與變量,而不需要重新啟動系統。     ◆ File systems(文件系統)。這裡的內容很多,建議在缺省的基礎上進行修改。一般需要DOS FAT(FAT16、FAT32)、VFAT,EXT3、NTFS和ISO9660(標准光盤使用的文件系統)支持。     介紹完這些內核配置的主要選項,用戶在根據自己的要求配置好內核之後,接下來就要編譯內核。     ◆ Power management options (ACPI、APM)是高級電源管理。要注意ACPI與APM不能同時使用。如果同時配置了這兩者,那麼在系統啟動時,若發現一個可工作的ACPI設備,那麼APM將被關閉,ACPI會被加載。     如果想讓Linux支持高級電源管理,例如軟關機、系統休眠等,需要選擇“Power Management support”選項;“Software Suspend(EXPERIMENTAL)”選項可以掛起計算機(類似Windows XP中的休眠),這個功能不需要高級電源管理的支持;“Processor”選項可讓處理器在空閒時節省電能,應該選上;“Thermal Zone”選項在系統溫度過高時,及時調整系統的工作狀態,以保護CPU(需要硬件的支持)。     ◆ Bus options(PCI、PCMCIA、EISA、MCA和ISA)用以設置系統總線。根據主板參數自己進行選擇。針對PCI總線的是“PCI support”選項,下面還有ISA和EISA子項,一般都是需要的;“Support for hot-pluggable devices”選項是對熱插拔設備的支持;“PCMCIA/CardBus support”選項支持PCMCIA。     ◆ Executable file formats表示可執行文件格式,一般全要選上。     ◆ Device Drivers用來選擇設備驅動程序。聲卡、顯卡、網卡和電視卡等驅動都在這裡選擇。其中“Plug and Play support”選項支持即插即用;“Block devices”選項支持塊設備;“SCSI device support”選項支持SCSI 設備;“Multi-device support(RAID and LVM)”選項支持RAID和邏輯卷;“Networking support”選項支持網絡,包括網絡協議和網絡設備,協議中肯定要“TCP/IP”項,根據自己的網卡選擇相應的設備;ISDN上網必需選“ISDN subsystem”選項;“Sound”選項是聲卡驅動,有兩種選擇,一種是ALSA驅動,一種是Open Sound System驅動,選擇支持自己聲卡的那種,將之編譯進內核;“USB Support”選項該項很重要,平常用的優盤就是一種USB設備;對USB而言,至少需要“Support for USB”、“USB device filesystem”、“ECHI HCD(USB 2.0)support”、“UCHI HCD(most Intel and VIA)support”、“USB Audio support”、“USB MIDI support”和“USB Mass Storage support”選項。     執行了“make ”之後,系統會在include/linux目錄下生成一個autoconf.h文件。例如,在配置內核選項時選擇支持NTFS文件系統,並把它編譯進了內核,那麼在.config中就會生成“CONFIG_NTFS_FS=y”這項,相應的在include/linux/autoconf.h中會生成“#define CONFIG_NTFS_FS 1”這項。因此所有與NTFS文件系統相關的C源文件都會包含include/config/ntfs/fs.h這個頭文件。     新的2.6.0內核中增加了兩個GUI配置工具,要使用xconfig必需先安裝Qt庫(一般發行版的光盤裡都有),要使用gconfig就要先安裝Gtk庫。     在啟動配置工具時,2.6.0內核會讀取當前的系統配置,從而保持與當前配置相同的選項。這個特性是為方便以後的升級工作,在內核特性變化不大的情況下可以直接以當前的選項為基礎,省去了逐項配置的麻煩。有兩種方法可以讓2.6.0內核以默認選項來啟動配置工具,一種是將當前的配置文件/boot/config-XXX刪除;另一種是在執行配置工具前先執行“make defconfig”命令。     除此之外,還為make添加了幾個新選項,是allyesconfig、allnoconfig和allmodconfig。它們是為內核開發人員與測試人員准備的。     用戶根據自己的要求配置好內核之後,接下來就要編譯內核。     編譯內核   編譯內核的軟件環境是kbuild系統,它泛指構建一個完整並能夠運行的Linux內核所需要的一切資源。這些資源包括構建程序、腳本、中間件、配置文件和Makefile。現在就講解內核的編譯過程,具體步驟如下:     1.“make dep”或“make depend”     kbuild調用中間件scripts/mkdep來生成描述與相關核心文件形成依賴關系的




Copyright © Linux教程網 All Rights Reserved