裁剪Ubuntu內核和模塊管理2
通常要運行的第一個命令是:
#cd /usr/src/linux;make mrproper
該命令確保源代碼目錄下沒有不正確的.o文件以及文件的互相依賴。由於我們使用剛下載的完整的源程序包進行編譯,所以本步可以省略。而如果你多次使用了這些源程序編譯內核,那麼最好要先運行一下這個命令。
確保/usr/include/目錄下的asm、linux和scsi等鏈接是指向要升級的內核源代碼的。它們分別鏈向源代碼目錄下的真正的、該計算機體係結構(對於PC機來說,使用的體係結構是i386)所需要的真正的include子目錄。如:asm指向/usr/src/linux/include/asm-i386等。若沒有這些鏈接,就需要手工創建,按照下麵的步驟進行:
# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi
這是配置非常重要的一部分。刪除掉/usr/include下的asm、linux和scsi鏈接後,再創建新的鏈接指向新內核源代碼目錄下的同名的目錄。這些頭文件目錄包含著保證內核在係統上正確編譯所需要的重要的頭文件。現在你應該明白為什麼我們上麵又在/usr/src下"多餘"地創建了個名為linux的鏈接了吧?
配置
接下來的內核配置過程比較煩瑣,但是配置的適當與否與日後Linux的運行直接相關,有必要了解一下一些主要的且經常用到的選項的設置。
配置內核可以根據需要與愛好使用下麵命令中的一個:
#make config(基於文本的最為傳統的配置界麵,不推薦使用)
#make menuconfig(基於文本選單的配置界麵,字符終端下推薦使用)
#make xconfig(基於圖形窗口模式的配置界麵,Xwindow下推薦使用)
#make oldconfig(如果隻想在原來內核配置的基礎上修改一些小地方,會省去不少麻煩)
這三個命令中,make xconfig的界麵最為友好,如果你可以使用Xwindow,那麼就推薦你使用這個命令。
如果你不能使用Xwindow,那麼就使用make menuconfig好了。界麵雖然比上麵一個差點,總比make config的要好多了。
選擇相應的配置時,有三種選擇,它們分別代表的含義如下:
Y--將該功能編譯進內核
N--不將該功能編譯進內核
M--將該功能編譯成可以在需要時動態插入到內核中的模塊
如果使用的是make xconfig,使用鼠標就可以選擇對應的選項。如果使用的是make menuconfig,則需要使用空格鍵進行選取。你會發現在每一個選項前都有個括號, 但有的是中括號有的是尖括號,還有一種圓括號。 用空格鍵選擇時可以發現,中括號裏要麼是空,要麼是"*",而尖括號裏可以是空,"*"和"M"這表示前者對應的項要麼不要,要麼編譯到內核裏;後者則多一樣選擇,可以編譯成模塊。而圓括號的內容是要你在所提供的幾個選項中選擇一項。
在編譯內核的過程中,最煩雜的事情就是這步配置工作了,很多新手都不清楚到底該如何選取這些選項。實際上在配置時,大部分選項可以使用其缺省值,隻有小部分需要根據用戶不同的需要選擇。選擇的原則是將與內核其它部分關係較遠且不經常使用的部分功能代碼編譯成為可加載模塊,有利於減小內核的長度,減小內核消耗的內存,簡化該功能相應的環境改變時對內核的影響;不需要的功能就不要選;與內核關心緊密而且經常使用的部分功能代碼直接編譯到內核中。下麵就讓我們對常用的選項分別加以介紹。
1. Code maturity level options
代碼成熟等級。此處隻有一項:prompt for development and/or incomplete code/drivers,如果你要試驗現在仍處於實驗階段的功能,比如khttpd、IPv6等,就必須把該項選擇為Y了;否則可以把它選擇為N。
2. Loadable module support
對模塊的支持。這裏麵有三項:
Enable loadable module support:除非你準備把所有需要的內容都編譯到內核裏麵,否則該項應該是必選的。
Set version information on all module symbols:可以不選它。
Kernel module loader:讓內核在啟動時有自己裝入必需模塊的能力,建議選上。
3. Processor type and features
CPU類型。內容蠻多的,不一一介紹了,有關的幾個如下:
Processor family:根據你自己的情況選擇CPU類型。
High Memory Support:大容量內存的支持。可以支持到4G、64G,一般可以不選。
Math emulation:協處理器仿真。協處理器是在386時代的寵兒,現在早已不用了。
MTTR support:MTTR支持。可不選。
Symmetric multi-processing support:對稱多處理支持。除非你富到有多個CPU,否則就不用選了。
4. General setup
這裏是對最普通的一些屬性進行設置。這部分內容非常多,一般使用缺省設置就可以了。下麵介紹一下經常使用的一些選項:
Networking support:網絡支持。必須,沒有網卡也建議你選上。
PCI support:PCI支持。如果使用了PCI的卡,當然必選。
PCI access mode:PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。
Support for hot-pluggabel devices:熱插拔設備支持。支持的不是太好,可不選。
PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必選了。
System V IPC
BSD Process Accounting
Sysctl support:以上三項是有關進程處理/IPC調用的,主要就是System V和BSD兩種風格。如果你不是使用BSD,就按照缺省吧。
Power Management support:電源管理支持。
Advanced Power Management BIOS support:高級電源管理BIOD支持。
5. Memory Technology Device(MTD)
MTD設備支持。可不選。
6. Parallel port support
串口支持。如果不打算使用串口,就別選了。
7. Plug and Play configuration
即插即用支持。雖然Linux對即插即用目前支持的不如Windows好,但是還是選上吧,這樣你可以拔下鼠標之類的體驗一下Linux下即插即用的感覺。
8. Block devices
塊設備支持。這個就得針對自己的情況來選了,簡單說明一下吧:
Normal PC floppy disk support:普通PC軟盤支持。這個應該必選。
XT hard disk support:
Compaq SMART2 support:
Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
Loopback device support:
Network block device support:網絡塊設備支持。如果想訪問網上鄰居的東西,就選上。
Logical volume manager(LVM)support:邏輯卷管理支持。
Multiple devices driver support:多設備驅動支持。
RAM disk support:RAM盤支持。
9. Networking options
網絡選項。這裏配置的是網絡協議。內容太多了,不一一介紹了,自己看吧,如果你對網絡協議有所了解的話,應該可以看懂的。如果懶得看,使用缺省選項(肯定要選中TCP/IP networking哦)就可以了。讓我們看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協議好多哦,IPv6也支持了,Qos and/or fair queueing(服務質量公平調度)也支持了,還有kHTTPd,不過這些都還在實驗階段。
10. Telephony Support
電話支持。這個是什麼東東?讓我查查幫助,原來是Linux下可以支持電話卡,這樣你就可以在IP上使用普通的電話提供語音服務了。記住,電話卡可和modem沒有任何關係哦。
11. ATA/IDE/MFM/RLL support
這個是有關各種接口的硬盤/光驅/磁帶/軟盤支持的,內容太多了,使用缺省的選項吧,如果你使用了比較特殊的設備,比如PCMCIA等,就到裏麵自己找相應的選項吧。12. SCSI support
SCSI設備的支持。我沒有SCSI的設備,所以根本就不用選,如果你用了SCSI的硬盤/光驅/磁帶等設備,自己找好了。
13. IEEE 1394(FireWire)support
這個是什麼?低版本的沒有見過,看看幫助再說。原來是要Fireware硬件來提高串行總線的性能,我沒有,不選了。
14. I2O device support
這個也不清楚,幫助裏說是這個需要I2O接口適配器才能支持的,在智能Input/Output(I2O)體係接口中使用,又是要硬件,不選了。
15. Network device support
網絡設備支持。上麵選好協議了,現在該選設備了,可想而知,內容肯定多得很。還好還好,裏麵大概分類了,有ARCnet設備、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的以太網,看來隻需要選則這個了。還是10/100M的以太網設備熟悉,內容雖然多,一眼就可以看到我所用的RealTeck
RTL-8139 PCI Fast Ethernet Adapter support,為了免得麻煩,編譯到內核裏麵好了,不選M了,選Y。耐心點,一般說來你都能找到自己用的網卡。如果沒有,你隻好自己到廠商那裏去要驅動了。
16. Amateur Radio support
又一個不懂的,應該是配置業餘無線廣播的吧,沒有,不要了。
17. IrDA(infrared)support
這個要紅外支持,免了。
18. ISDN subsystem
如果你使用ISDN上網,這個就必不可少了。自己看著辦好了。
19. Old CD-ROM drivers(not SCSI、not IDE)
做的可真周到,原來那些非SCSI/IDE口的光驅誰還在用啊,自己選吧,反正我是用的IDE的CD-ROM,不選這個。
20. Character devices
字符設備。這個內容又太多了,先使用缺省設置,需要的話自己就修改。把大類介紹一下吧:
I2C support:I2C是Philips極力推動的微控製應用中使用的低速串行總線協議。如果你要選擇下麵的Video For Linux,該項必選。
Mice:鼠標。現在可以支持總線、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根據需要選擇。
Joysticks:手柄。即使在Linux下把手柄驅動起來意義也不是太大,遊戲太少了。
Watchdog Cards:雖然稱為Cards,這個可以用純軟件來實現,當然也有硬件的。如果你把這個選中,那麼就會在你的/dev下創建一個名為watchdog的文件,它可以記錄你的係統的運行情況,一直到係統重新啟動的1分鍾左右。有了這個文件,你就可以恢複係統到重啟前的狀態了。
Video For Linux:支持有關的音頻/視頻卡。
Ftape, the floppy tape device driver:
PCMCIA character device support:
21. File systems
文件係統。內容又太多了,老法子,在缺省選項的基礎上進行修改。介紹以下幾項:
Quota support:Quota可以限製每個用戶可以使用的硬盤空間的上限,在多用戶共同使用一台主機的情況中十分有效。
DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
ISO 9660 CD-ROM file system support:光盤使用的就是ISO 9660的文件格式。
NTFS file system support:ntfs是NT使用的文件格式。
/proc file system support:/proc文件係統是Linux提供給用戶和係統進行交互的通道,建議選上,否則有些功能沒法正確執行。
還有另外三個大類都規到這兒了:Network File Systems(網絡文件係統)、Partition Types(分區類型)、Native Language Support(本地語言支持)。值得一提的是Network File Systems裏麵的兩種:NFS和SMB分別是Linux和Windows相互以網絡鄰居的形式訪問對方所使用的文件係統,根據需要加以選擇。
22. Console drivers
控製台驅動。一般使用VGA text console就可以了,標準的80*25的文本控製台。
23. Sound
聲卡驅動。如果你能在列表中找到聲卡驅動那自然最好,否則就試試OSS了。
24. USB supprot
USB支持。很多USB設備,比如鼠標、調製解調器、打印機、掃描儀等,在Linux都可以得到支持,根據需要自行選擇。
25. Kernel hacking
配置了這個,即使在係統崩潰時,你也可以進行一定的工作了。普通用戶是用不著這個功能的。
總算配置完了,現在存盤退出,當然你也可以把現在的配置文件保存起來,這樣下次再配置的時候就省力氣了
最後更新:2017-04-03 16:48:40