1.內核配置精簡
花了點時間終於弄清了vmware的硬件情況,配置簡單內核主要為了學習源碼方便
我的vmware虛擬機把硬盤和cdrom都設置成scsi接口的,這樣內核ide選項就不用選了
在2.6.10和3.2.5都試過了,可以啟動,兩個內核分別在RedHat9和arch上實驗的,安裝的實驗系統的時候也盡量簡單,比如分區沒有lvm,直接用/dev/sdax表示
下面是3.2.5內核配置情況,2.6.10也基本相同,菜單結構有些不一樣,有些驅動名字變了,但是很容易看出來。因為我把內核模塊支持都去掉了,所以下面全是*,也就是編譯進內核
Enable loadable module support
沒選
Power management and ACPI options
可以全都不選
Bus options
只選擇了PCI support
Executable file formats / Emulations
只選擇了kernel support for ELF binaries
Networking support
我只選了基本網絡協議,其他都去掉了
Device Drivers
Connector- unified userspace <-> kernelspace linker
Block devices-->
Normal floppy disk support
loopback device support
network block device support
RAM block device support
SCSI device support//如果是ide硬盤,這個可以全都不選,選擇ata相關的
SCSI device support
legacy /proc/scsi/ support
scsi disk support
scsi cdrom support
scsi generic support
Probe all LUNs on each SCSI device
Fusion MPT device support
Fusion MPT ScsiHost drivers for SPI
I2C support
I2C hardware bus support
Intel PIIX4 and compatible
Network device support
Ethernet driver support
AMD devices
AMD PCnet32 PCI support
device配置就選擇了這麼多,沒有帶上usb,准備usb以後需要在加
File systems
可以更據實際安裝情況配置,我的需要ext2,ext3,還有
Dnotify support
Inotify support for userspace
Filesystem wide access notification
Quota support
Report quota messages through netlink interface
Pseudo filesystems-->
沒選 HugeTLB support,其他選了
Kernel hacking
根據自己需要選擇
Firmware Drivers
Security options
Cryptographic API
Virtualization
Library routines
這五項可以都不選
剩下Processor type and features和其他的可以更具具體情況選擇。
2.代碼精簡
配置完內核能成功運行後,就可以精簡代碼了,其實很簡單,就是把多余的代碼直接刪了,覺得這樣看代碼舒服些
首先刪除多余.c文件:可以編寫腳本或者程序來遍歷目錄,凡是.c文件沒有生成.o文件就刪除了。這樣會誤刪的,不過還好很少,刪完再次編譯的時候會報錯缺少某個文件,直接拷貝過來就行了
刪除.h文件:這個有些麻煩,我是在fs/open.c的open系統調用那裡,寫一段檢測代碼,凡是打開.h文件,就通過netlink把文件名發送出來,之後根據記錄訪問情況,把多余頭文件刪除。這個有空想想更簡單的方法。
目前2.6.10的已經弄好,只有2000多個文件,等3.2.5弄好了就准備開始慢慢欣賞內核代碼了