[精彩] 【轉】Linux核心裁剪的具體步驟
在menuconfig中配置: 詳細介紹核心配置選項及刪改情況 第一部分:全部刪除 Code maturity level options ---> 程式碼成熟等級選項 []Prompt for development and/or incomplete code/drivers 預設情況下是選擇的,這將會在設定介面中顯示還在開發或者還沒有完成的程式碼與驅動.不選。 第二部分 :除以下選項,其它全部刪除 General setup—〉 System V IPC (IPC:Inter Process Communication)是組系統呼叫及函式庫,它能讓程式彼此間同步進行交換資訊。某些程式以及DOS模擬環境都需要它。為程序提供通訊機制,這將使系統中各程序間有交換資訊與保持同步的能力。有些程式只有在選Y的情況下才能執行,所以不用考慮,這裡一定要選。 第三部分:除以下選項,其它全部刪除 Loadable module support ---> 可引導模組支援 建議作為模組加入核心 [] Enable loadable module support 這個選項可以讓你的核心支援模組,模組是什麼呢?模組是一小段程式碼,編譯後可在系統核心執行時動態的加入核心,從而為核心增加一些特性或是對某種硬體進行支援。一般一些不常用到的驅動或特性可以編譯為模組以減少核心的體積。在執行時可以使用modprobe命令來載入它到核心中去(在不需要時還可以移除它)。一些特性是否編譯為模組的原則是,不常使用的,特別是在系統啟動時不需要的驅動可以將其編譯為模組,如果是一些在系統啟動時就要用到的驅動比如說檔案系統,系統匯流排的支援就不要編為模組了,否在無法啟動系統。 []Automatic kernel module loading 一般情況下,如果我們的核心在某些任務中要使用一些被編譯為模組的驅動或特性時,我們要先使用modprobe命令來載入它,核心才能使用。不過,如果你選擇了這個選項,在核心需要一些模組時它可以自動呼叫modprobe命令來載入需要的模組,這是個很棒的特性,當然要選Y嘍。 第四部分:全部刪除 Block layer-----〉塊裝置 第五部分:除以下選項,其它全部刪除 Processor type and features ---> 處理器型別 Subarchitecture Type (PC-compatible) ---> 這選項的主要的目的,是使Linux可以支援多種PC標準,一般我們使用的PC機是遵循所謂IBM相容結構(pc/at)。這個選項可以讓你選擇一些其它架構。我們一般選擇PC-compatible就可以了。 Processor family(386) : 它會對每種CPU做最佳化,讓它跑的好又快,一般來說,你是什麼型號的就選什麼型號的就好。我選的是386,這樣核心會省下不少空間 第六部分:除以下選項,其它全部刪除 Power management options (ACPI, APM) ---> 電源管理選項 [ ] Power Management Debug Support 電源管理的除錯資訊支援,如果不是要除錯核心有關電源管理部份,請不要選擇這項。 ACPI Support ---〉高階電源介面配置支援,如果BIOS支援,建議選上這項 []Button 這個選項用於註冊基於電源按鈕的事件,比如power, sleep等,當你按下按鈕時事件將發生,一個守護程式將讀取/proc/acpi/event,並執行使用者在這些事件上定義的動作比如讓系統關機。可以不選擇,根據自己的需求。 第七部分:除以下選項,其它全部刪除 Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 匯流排選項 []PCI support PCI access mode (Any) ---> PCI外圍裝置配置,強列建議選Any,系統將優先使用MMConfig,然後使用BIOS,最後使用Direct檢測PCI裝置。 第八部分:除以下選項,其它全部刪除 Executable file formats ---> Kernel support for ELF binaries ELF是開放平臺下最常用的二進位制檔案,它支援不同的硬體平臺。一定要選。 第九部分:除以下選項,其它全部刪除 Networking Networking options ---> []Unix domain sockets []TCP/IP networking 第十部分:除以下選項,其它全部刪除 Device Drivers --->裝置驅動 Block devices-------〉 []Compaq SMART2 support [] Compaq Smart Array 5xxx support []Loopback device support 大部分的人這一個選項都選N,因為沒有必要。但是如果你要 mount iso檔案的話,你得選上Y。這個選項的意思是說,可以將一個檔案掛成一個檔案系統。如果要燒光碟片的,那麼您很有可能在把一個檔案燒進去之前,看看這個檔案是否符合IS09660的檔案系統的內容,是否符合您的需求。而且,可以對這個檔案系統加以保護。不過,如果您想做到這點的話,您必須有最新的mount程式,版本是在2.5X版以上的。而且如果您希望對這個檔案系統加上保護,則您必須有des.1.tar.gz 這個程式。注意:此處與網路無關。建議編譯成模組 [] RAM disk support SCSI device support ---> 裡面有關於USB支援的,要選擇 []SCSI device support USB要用,必須選擇 []legacy /proc/scsi/ support USB要用,必須選擇 []SCSI disk support USB要用,必須選擇 SCSI Low-level drivers []Serial ATA(SATA) support []Intel PIIX/ICH SATA support 這個必須選擇,否則無法產生引導檔案 []Via SATA support Networking device support ---> 這個下面是選網絡卡驅動,一定要選 Ethernet(1000mbit)-我的電腦是千兆網絡卡所以就選這個 []broadcom Tigon3support Input device support ---> 這個裡面要設定你的滑鼠鍵盤什麼的 []Provide legacy /dev/psaux device Graphics support ---> []Support for frame buffer devices 支援Frame buffer的,一定要選擇 USB support ---> []USB device filesystem 這個好象是用U盤必須的 []EHCI HCD (USB 2.0) support 有usb2.0就選上把,編譯成模組 []OHCI HCD support 必須選擇,編譯成模組 []UHCI HCD (most Intel and VIA) support 必須選擇,編譯成模組 []USB Mass Storage support 用U盤必須選擇 USB Human Interface Device (full HID) support 裡面選擇usb滑鼠和usb鍵盤,如果你有一定選上這個必需選 HID input layer support 應該選擇 /dev/hiddev raw HID device support如果這裡有USB鍵盤和滑鼠選項,一定要選擇 第十一部分:除以下選項,其它全部刪除 file systems --->檔案系統 <*> Second extended fs support [*] Ext2 extended attributes [*] Ext2 POSIX Access Control Lists [*] Ext2 Security Labels <M> Ext3 journalling file system support [*] Ext3 extended attributes [*] Ext3 POSIX Access Control Lists [*] Ext3 Security Labels 以上這些肯定是要選擇的,linux的標準檔案系統 <M> Kernel automounter support 核心自動掛載的,當然要選 <M> Kernel automounter version 4 support (also supports v3) 當然要選 DOS/FAT/NT Filesystems ---> <M> DOS FAT fs support <M> MSDOS fs support <M> VFAT (Windows-95) fs support <M> NTFS file system support Native language support語言支援,這裡就支援英語和漢語就行了,不多說了 []NLS ISO 8859-1 必須選擇,這個是關於U盤掛載的。 CD-ROM/DVD Filesystems ---> 這個是關於掛載ISO檔案的,用的話就選。 <*> ISO 9660 CDROM file system support 第十二部分: 全部刪除 Instrumentation support 第十三部分:全部刪除 Kernel hacking --->破解核心?可不是當骸客啦,不選 第十四部分:全部刪除 Security options ---> 第十五部分:全部刪除 Cryptographic options --->這是核心支援加密的選項 第十六部分:全部刪除 Library routines ---> 附: 核心配置 核心配置的方法很多,make config、make xconfig、make menuconfig、 make oldconfig等等,它們的功能都是一樣的,區別應該從名字上就能看出來,只有make oldconfig是指用系統當前的設定(./.config)作為預設值。這裡用的是make menuconfig。 需要牢記:不必要的驅動越多,核心就越大,不僅執行速度慢、佔用記憶體多,在少數情況下、還會引發其他問題。具體步驟如下: 首先確定shell是bash。 然後 $make menuconfig 有一些預設的符號其含義如下: y:載入 n:不載入 m:作為模組載入 可以配置的選項有以下一些: 1)code maturity level option 程式碼成熟度 prompt for development and/or incomplete code/drivers [N/y/?] 如果有興趣測試一下核心中尚未最終完成的某些模組,就選y,否則選N,想知道更詳細的資訊選?會看到聯機幫助(以下?的含義相同),N大寫表示預設值。 2)processor type and features 處理器型別及特性 Processor family(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC, PPro/6x86MX)[PPro/6x86MX] []內的是預設值,我們可以根據前面介紹的uname 命令執行的結果選擇。此項如果高於386,那麼生成的核心在386機器上將不能啟動。 Math emulation(CONFIG_MATH_EMULATION)[N/y/?] 需要進行協處理器模擬嗎?一般的機器都回n。如果機器已經有硬體的協處理器,那麼核心仍將使用硬體,而忽略軟體的math-emulation,這將使核心變大變慢。 MTRR(Memory Type Range Register)support(CONFIG_MTRR)[N/y/?] 在Pentium、Pro/Pentium II類的系統中可以提高影象寫入速度。 Symmetric multi-processing support(CONFIG_SMP)[Y/n/?] 如果您的機器有多個處理器,就選y。此時要選中下面的Enhanced Real Time Clock Support 3)loadable model support 可載入模組支援 Enable loadable module support(CONFIG_MODULES)[Y/n/?] 最好選y,不然許多僅供動態載入的模組就不能用了。 Set version information on all symbols for modules(CONFIG_MODVERSIONS)[N/y/?] 選N Kernel module loader(CONFIG_KMOD)[N/y/?] 4)general setup 一般設定 Networking support(CONFIG_NET)[Y/n/?] 選y吧,現在還有幾臺計算機不用上網呢? PCI support (CONFIG_PCI)[Y/n/?] PCI 匯流排和裝置總該有吧。 PCI access mode(BIOS,Direct,Any)[Any] 預設值比較保險,但如果您對您的主機板很有信心,就選BIOS。 PCI quirks (CONFIG_PCI_QUIRKS)[Y/n/?] 用於修補BIOS中對PCI有影響的BUG,同樣,如果您對主機板很有信心,就選n。 Backward-compatible /proc/pci〉(CONFIG_PCI_OLD_PROC)[Y/n/?] 以前的核心使用/proc/pci,新版核心使用/proc/bus/pci,要保持相容性就選y。 MCA support(CONFIG_MCA)[N/y/?] 檢視幫助吧。 SGI Visual Workstation support(CONFIG_VISWS)[N/y/?] 您的機器是SGI的嗎?是就選y。 System V IPC(CONFIG_SYSVIPC)[Y/n/?] 程序間通訊函式和系統呼叫。Linux核心的五大組成部分之一,一定要選。 BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?] 用於啟動由核心將程序資訊寫入檔案的使用者級系統呼叫。就看您想不想用它了。 Sysctl support(CONFIG_SYSCTL)[Y/n/?] 在核心正在執行的時候修改核心。用8KB空間換取某種方便。別選吧,除非你真的想試試。 Kernel support for a.out binaries(CONFIG_BINFMT_AOUT)[Y/m/n/?] 為了能使用以前編譯的程式,選y。 Kernel support for ELF binaries(CONFIG_BINFMT_ELF)[Y/m/n/?] 為了能使用現在編譯的程式,選y。 Kernel support for MISC binaries(CONFIG_BINFMT_MISC)[Y/m/n/?] 一般選y,用於支援java等程式碼的自動執行。 Parallel port support(CONFIG_PARPORT)[N/y/m/?] 並口裝置,如印表機。 5)plug and play support 即插即用裝置支援 Plug and Play support (CONFIG_PNP)[N/y/?] 選y吧。 6)block devices 塊裝置 Normal PC floppy disk support(CONFIG_BLK_DEV_FD)[Y/m/n/?] 一般的軟碟機。選y。 Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support(CONFIG_BLK_DEV_IDE)[Y/m/n/?] 這幾種介面的硬碟、光碟機、磁帶、軟碟機。選y。 Include IDE/ATAPI CDROM support(CONFIG_BLK_DEV_IDECD)[Y/m/n/?] CDROM。選y。 7)networking options 網路選項 Packet socket (CONFIG_PACHET)[Y/m/n/?] 按照目前網路發展的狀況,選y比較好。當然也可以選其它的。 Kernel/User netlink socke(CONFIG_NETLINK)[N/y/?] 核心與使用者程序雙向通訊。選y。 Network firewalls(CONFIG_FIREWALL)[N/Y/?] 如果真的需要用防火牆,就選y。 UNIX domain sockets(confgi_unix)[Y/m/n/?] socket 的用處太多了。選y。 TCP/IP networking(CONFIG_INET)[Y/n/?] 選y,理由如上一條。 The IPX protocol (CONFIG_IPX)[N/y/m/?] 其實並沒有那麼多人真的需要使用或者學習IPX,所以一般選N。 Appletalk DDP(CONFIG_ATALK)[N/y/m/?] 選N,理由同上。 8)SCSI support SCSI支援,SCSI low-level drives SCSI低階驅動 根據系統中SCSI裝置的實際情況選擇。 9)Networking device support 網路裝置支援 如果用LAN上網,就選擇網絡卡; 如果用MODEM撥號上網,就要看ISP提供那種服務了,一般都是PPP。 10)Amateur Radio support 業餘收音機支援 這是什麼我不太清楚,所以選N。 11)ISDN subsystem ISDN子系統 好像已經有支援ISDN的MODEM了,所以最好先看看自己的MODEM是不是這種,再做選擇。 12)Old CD-ROM dfivers (not SCSI, not IDE) 老式光碟機驅動 一般選N,因為這種裝置實在很少見。 13)Character devices 字元裝置 Virtual terminal(CONFIG_VT)[Y/n/?] Linux上一般可以用Alt+F1/F2/F3/F4來切換不同的任務終端,即使在一臺計算機上也可以充分使用Linux的多工能力,一些需要以命令列方式安裝合適用的軟體如果有虛擬終端的支援就會更方便,因此選y。 Support for console on virtual terminal(CONFIG_VT_CONSOLE)[Y/n/?] 選y將支援一個虛擬終端作為控制檯。一般為Alt+F1。 Support for console on serial port(CONFIG_SERIAL)[Y/m/n/?] 除非真的需要一個串列埠控制檯,否則選n。 Extended dumb serial driver options(CONFIG_SERIAL_EXTENDED)[N/y/?] 如果希望使用"dumb"的非標準特性(如HUB6支援),選y,一般選N。 Non-standard serial port support(CONFIG_SERIAL_NONSTANDARD)[N/y/?] 非標準串列埠。一般選N。 UNIX98 PTY support(CONFIG_UNIX98_PTYS)[Y/n/?] PTY指偽終端,一般使用者就選n。但如果想用telnet或者xterms作為終端訪問主機,並且已經安裝了glibc2.1,就可以選y。 Maximum number of UNIX98 PTYs in use(0-2048)(CONFIG_UNIX98_PTY_COUNT)[256] 預設值就可以了。 Mouse Support(not serial mice)(CONFIG_MOUSE)[Y/n/?] PS/2等非串列埠滑鼠選y,否則選N。 14)Mice 滑鼠 根據自己的滑鼠型別選擇。 15)Video for Linux Linux視訊 根據系統中的音/視訊捕捉裝置選擇。 16)Joystick support 操縱桿 根據系統中的遊戲杆裝置選擇 17)Ftape,the floopy tape device driver Ftape裝置驅動 Ftape (QIC-80/Travan)support(CONFIG_FTAPE)[N/y/m/?] 如果系統中有磁帶機,選y。 18)Filesystems 檔案系統 檔案系統的選擇要比較仔細,因為其中的一些給某些系統功能提供支援。而且除了proc、ext2等檔案系統之外,其它的檔案系統(包括下面的網路檔案系統)都可以選擇為m方式,從而減小核心啟動時的體積。 Quota support(CONFIG_QUOTA)[N/y/?] 用於給使用者劃分定量的磁碟空間。如不用此功能就選N。 DOS FAT fs support(CONFIG_FAT_FS)[N/y/m/?] 為核心提供FAT支援,多數使用者有可能從Linux訪問同一系統中的WINDOWS硬碟空間,因此最好選y。 ISO 9660 CDROM filesystem support(CONFIG_ISO9660_FS)[Y/m/n/?] 有標準光碟機的系統應該選Y。 Minix fs support(CONFIG_MINIX_FS)[N/y/m/?] 用於建立啟動盤的檔案系統,多數應該選y或者m。 /proc filesystem support(CONFIG_PROC_FS)[Y/n/?] 虛擬檔案系統,必須選Y。 Second extended fs support(CONFIG_EXT2_FS)[Y/m/n/?] Linux標準檔案系統,都應該選Y。 19)Network file systems 網路檔案系統 Coda filesystem support (advanced network fs)(CONFIG_CODA_FS)[N/y/m/?] 先看幫助再選。 NFS filesystem support(CONFIG_NFS_FS)[Y/m/n/?] 選Y或n,能夠訪問遠端NFS檔案系統。 SMB filesystem support(to mount WfW shares etc.)(CONFIG_SMB_FS)[N/y/m/?] 要訪問WINDOWS系統中的共享資源選y。 NCP filesystem support(to mout NetWare volumes)(CONFIG_NCP_FS)[N/y/m/?] 如果真的需要訪問NetWare檔案系統,就選y或者m。 20)Partion Types 分割槽型別 一般用不上;要用請參看幫助。 21)Console drivers 控制檯驅動 VGA text console(CONFIG_VGA_CONSOLE)[Y/n/?] 用VGA模式下用文字方式操作Linux,一般選y。 Video mode selection support(CONFIG_VIDEO_SELECT)[N/y/?] 大多數系統都不需要這項功能。 22)Sound 聲音 Sound card support(CONFIG_SOUND)[N/y/m/?] 如果系統中安裝了音效卡,就選y(或者m),然後檢視幫助。 23)Kernel hacking 核心監視 kernel hacking往往會生成非常大或者非常慢(甚至又大又慢)的核心,甚至會引起核心工作不穩定。如果一定要選,那麼也最好不要選其中的"development"、"experimental"、"debugging"項。