使用者工具

網站工具


os:linux:kernel_2.6_的配置與編譯

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

os:linux:kernel_2.6_的配置與編譯 [2008/05/01 10:47] (目前版本)
行 1: 行 1:
 +~~SLIDESHOW~~
 +====== Kernel 2.6 的配置與編譯 ======
 +引用來源:http://​www.linuxext.com/​bbs/​read.php?​tid=777&​fpage=4
 +
 +
 +
 +===== 前言(1) =====
 +
 +本文以Gentoo的2.6.10-r6的內核為例,講述了如何配置、編譯2.6版本的內核。
 +
 +首先對內核進行菜單配置,
 +<​code>​
 +# cd /​usr/​src/​linux
 +# make menuconfig
 +</​code>​
 +進入圖形界面的內核配置。
 +
 +代碼成熟度選項,
 +<​code>​
 +Code maturity level options --->
 +[*] Prompt for development and/or incomplete code/​drivers
 +[*] Select only drivers expected to compile cleanly
 +</​code>​
 +打開使用開發中、不完全的代碼/​驅動會讓內核配置多出很多選項,由於我們需要使用一些正在開發中的功能,因此必需打開這一選項。
 +
 +
 +===== 通用設置選項(2) =====
 +
 +通用設置選項,
 +<​code>​
 +General setup --->
 +() Local version - append to kernel release
 +[*] Support for paging of anonymous memory (swap)
 +[*] System V IPC
 +[*] POSIX Message Queues
 +[*] BSD Process Accounting
 +[*] BSD Process Accounting version 3 file format
 +[*] Sysctl support
 +[ ] Auditing support
 +(15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
 +[*] Support for hot-pluggable devices
 +[*] Kernel Userspace Events
 +[*] Kernel .config support
 +[*] Enable access to .config through /​proc/​config.gz
 +[*] Configure standard kernel features (for small systems) --->
 +--- Configure standard kernel features (for small systems)
 +[ ] Load all symbols for debugging/​kksymoops
 +[*] Enable futex support
 +[*] Enable eventpoll support
 +[*] Optimize for size
 +[*] Use full shmem filesystem
 +(0) Function alignment
 +(0) Label alignment
 +(0) Loop alignment
 +(0) Jump alignment
 +</​code>​
 +Local version - append to kernel release:這裡填入的是64字符以內的字符串,你在這裡填上的字符口串可以用uname -a命令看到。
 +
 +Support for paging of anonymous memory (swap):這是使用交換分區或者交換文件來做為虛擬內存的,當然要選上了。
 +
 +System V IPC:表示系統5的Inter Process Communication,它用於處理器在程序之間同步和交換信息,如果不選這項,很多程序運行不起來的。
 +
 +POSIX Message Queues:這是POSIX的消息隊列,它同樣是一種IPC。建議你最好將它選上。
 +
 +BSD Process Accounting:這是充許用戶進程訪問內核將賬戶信息寫入文件中的。這通常被認為是個好主意,建議你最好將它選上。
 +
 +Sysctl support:這個選項能不重新編譯內核修改內核的某些參數和變量,如果你也選擇了支持/​proc,將能從/​proc/​sys存取可以影響內核的參數或變量。建議你最好將它選上。
 +
 +Auditing support:審記支持,用於和內核的某些子模塊同時工作,例如SELinux。只有選擇此項及它的子項,才能調用有關審記的系統調用。
 +
 +Kernel log buffer size:內核日誌緩存的大小,12 => 4 KB,13 => 8 KB,14 => 16 KB單處理器,15 => 32 KB多處理器,16 => 64 KB for x86 NUMAQ or IA-64,17 => 128 KB for S/390。
 +
 +Support for hot-pluggable devices:是否支持熱插拔的選項,肯定要選上。不然USB、PCMCIA等這些設備都用不了。
 +
 +Kernel Userspace Events:內核中分為系統區和用戶區,這裡系統區和用戶區進行通訊的一種方式,選上。
 +
 +Kernel .config support:將.config配置信息保存在內核中,選上它及它的子項使得其它用戶能從/​proc中得到內核的配置。還記得另一篇貼子我是如何取得啟動光盤的內核配置信息,並在此基礎上配置新的內核嗎?
 +
 +Configure standard kernel features (for small systems):這是為了編譯某些特殊的內核使用的,通常你可以不選擇這一選項,你也不用對它下面的子項操心了。
 +
 +Load all symbols for debugging/​kksymoops:是否裝載所有的調試符號表信息,如果你不需要對內核調試,不需要選擇此項。
 +
 +Enable futex support:不選這個內核不一定能正確的運行使用glibc的程序,當然要選上。
 +
 +Enable eventpoll support:不選這個內核將不支持事件輪循的系統調用,最好選上。
 +
 +Optimize for size:這個選項使gcc使用-Os的參數而不是-O2的參數來優化編譯,以獲得更小尺寸的內核,建議選上。
 +
 +Use full shmem filesystem:除非你在很少的內存且不使用交換內存時,才不要選擇這項。
 +
 +後面的這四項都是在編譯時內存中的對齊方式,0表示編譯器的默認方式。使用內存對齊能提高程序的運行速度,但是會增加程序對內存的使用量。
 +內核也是一組程序呀。
 +
 +===== 可加載模塊(3) =====
 +
 +可加載模塊,
 +<​code>​
 +Loadable module support --->
 +[*] Enable loadable module support
 +[*] Module unloading
 +[ ] Forced module unloading
 +[*] Module versioning support (EXPERIMENTAL)
 +[ ] Source checksum for all modules
 +[*] Automatic kernel module loading
 +</​code>​
 +Enable loadable module support,很多人喜歡將全部功能、硬件支持一股腦的編進內核,而不是使用模塊的方式。這樣做非常不好(個人覺得)。其實我也做過嵌入式的開發,在針對特定硬件的平台下盡可能將內核編小,將始終是支持模塊加載的。例如我們開發的防火牆就是做為內核的模塊被加載的。使用模塊支持,你的系統能具有更好的可擴充性。還有一個原因就是自己編寫的功能模塊、設備驅動模塊(假設編寫的質量不高)以模塊方式工作引起Kernel Panic的機率要遠遠低於不支持模塊全部編進內核的方式。講了這麼多,終於可以理直氣壯的選上這一功能了。
 +
 +Module unloading,不選這個功能,加載的模塊就不能卸載。沒什麼需要多解釋的,建議最好選上。
 +
 +Forced module unloading,這個選項能強行卸載模塊,即使內核認為這樣並不安全,也就是說你可以把正在使用中的模快卸載掉。如果你不是內核開發人員或者骨灰級的玩家,不要選擇這個選項。
 +
 +Module versioning support (EXPERIMENTAL),這個功能可以讓你使用其它版本的內核模塊,由於我自己寫一些模塊,所以我會用到這個選項,因為內核更新太快了,我的頭文件更新根本趕不上內核的更新。還有,雖然我在Gentoo下開發,但實際真實環境用的卻是從kernel.org下載的內核。雖然我選擇了這個選項,不過建議你不要選擇這個選項。
 +
 +Source checksum for all modules,這個功能是為了防止更改了內核模塊的代碼但忘記更改版本號而造成版本衝突。我估計現在沒有哪家公司在開發中還沒使用版本控制工具,所以不需要這項了。如果你不是自己寫內核模塊,那就更不需要這一選項了。
 +
 +Automatic kernel module loading,這個選項能讓內核自動的加載部份模塊,建議你最好選上。舉個例子說明一下,如模塊eth1394依賴於模塊ieee1394。如果選擇了這個選項,可以直接加載模塊eth1394;如果沒有選擇這個選項,必需先加載模塊ieee1394,再加載模塊eth1394,否則將出錯。
 +
 + 
 +
 +===== 處理器內型及特性(4) =====
 +
 +處理器內型及特性,
 +<​code>​
 +Processor type and features --->
 +Subarchitecture Type (PC-compatible) --->
 +Processor family (Pentium-4/​Celeron(P4-based)/​Pentium-4 M/Xeon) --->
 +[ ] Generic x86 support
 +[*] HPET Timer Support
 +[*] Symmetric multi-processing support
 +(2) Maximum number of CPUs (2-255)
 +[*] SMT (Hyperthreading) scheduler support
 +[ ] Preemptible Kernel
 +[ ] Machine Check Exception
 +Toshiba Laptop support
 +Dell laptop support
 +< > /​dev/​cpu/​microcode - Intel IA32 CPU microcode support
 +< > /​dev/​cpu/​*/​msr - Model-specific register support
 +< > /​dev/​cpu/​*/​cpuid - CPU information support
 +Firmware Drivers --->
 +< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
 +High Memory Support (4GB) --->
 +[ ] Allocate 3rd-level pagetables from highmem
 +[ ] Math emulation
 +[*] MTRR (Memory Type Range Register) support
 +[ ] Boot from EFI support (EXPERIMENTAL)
 +[*] Enable kernel irq balancing
 +[ ] Use register arguments (EXPERIMENTAL)
 +</​code>​
 +Subarchitecture Type,這沒什麼好說的,如果用PC機的話都選這個。
 +
 +Processor family,這也沒什麼好說的,選擇你機器對應的處理器即可。
 +
 +Generic x86 support,這一選項針對x86系列的CPU使用更多的常規優化。如果你在上面一項選的是i386、i586之類的才選這個。
 +
 +HPET Timer Support,HPET是替代8254芯片的下一代時鐘處理器。這裡你可以安全的選上這一選項。如果硬件不支持的話,將仍使用8254時鐘處理器。
 +
 +Symmetric multi-processing support,對稱多處理器支持,在單CPU的機器上,不選這個選項會更快一些。由於超線程技術,看起來是兩顆CPU,因些要選上這個選項。
 +
 +Maximum number of CPUs (2-255),支持的最大CPU數。
 +
 +SMT (Hyperthreading) scheduler support,超線程支持,如果你的CPU是P4超線程的,應該選上這一選項。
 +
 +Preemptible Kernel,這個選項能使應用程序即使內核在高負載時也很可靠,建議最好選上。
 +
 +Machine Check Exception,這個選項能讓CPU檢測到系統故障時通知內核,一般我用組裝的台式機會選這項。本本嘛,我感覺還是非常可靠的,所以就不選它了。
 +
 +Toshiba Laptop support,Dell laptop support,這兩項都是對本本的支持,其實編譯內核的原則應該是讓內核能在特定的環境下運行,由於我編譯的內核可能公司的其它人也會使用,所以我盡可能的不針對特定的硬件。將對特定的硬件支持編譯成模塊。
 +
 +/​dev/​cpu/​microcode - Intel IA32 CPU microcode support,這個選項是讓你使用不隨Linux內核發行的IA32 microcode,但是你必需有IA32 microcode的二進制文件。
 +
 +/​dev/​cpu/​*/​msr - Model-specific register support,這個選項能讓特權CPU訪問x86的MSR寄存器。由於超線程並不是真正的多處理器環境,所以不要選擇這個。
 +
 +/​dev/​cpu/​*/​cpuid - CPU information support,這個選項能從/​dev/​cpu/​x/​cpuid獲得CPU的唯一標識符。
 +
 +BIOS Enhanced Disk Drive calls determine boot disk,台式機的有些BIOS支持從某塊特定的硬盤啟動,由於本本只能裝一塊硬盤,所以就不選擇這項了。如果你的BIOS不支持這個功能而你選上的話,有可能無法啟動。
 +
 +High Memory Support (4GB),4GB的內存支持,已經足夠了。
 +
 +Allocate 3rd-level pagetables from highmem,除非你真的有幾G的內存,選擇這個是沒有意義的。
 +
 +Math emulation,估計現在沒人有386或486SX的處理器了吧,那就不要選這個。
 +
 +MTRR (Memory Type Range Register) support,這個選項必需要選上。
 +
 +Boot from EFI support (EXPERIMENTAL),由於我使用的是GRUB,所以選上這個也沒什麼用,如果你打算使用EFI的功能,你可以到http://​elilo.sourceforge.net看看。
 +
 +Enable kernel irq balancing,選上這個選項能讓內核進行IRQ均衡。
 +
 +Use register arguments (EXPERIMENTAL),使用-mregparm=3參數編譯內核,將前3個參數以寄存器方式進行參數調用。GCC的版本必需大於等於3.0。
 +
 +===== 電源管理(5) =====
 +
 +電源管理,
 +<​code>​
 +Power management options (ACPI, APM) --->
 +[*] Power Management support
 +[ ] Power Management Debug Support
 +[ ] Software Suspend (EXPERIMENTAL)
 +ACPI (Advanced Configuration and Power Interface) Support --->
 +APM (Advanced Power Management) BIOS Support --->
 +CPU Frequency scaling --->
 +</​code>​
 +Power Management support,電源管理沒什麼好說的,不想浪費電就選上。如果不選你可以跳過這部份。
 +
 +Power Management Debug Support,電源管理的調試信息支持,如果不是要調試內核有關電源管理部份,請不要選擇這項。
 +
 +Software Suspend (EXPERIMENTAL),休眠到硬盤。也就是將內存寫入交換分區中,下次啟動可以通過參數resume=/​dev/​swappartition(例如:resume=/​dev/​hda6)來恢復上次機器運行的狀態。這項功能對於系統引導時啟動許多服務的機器來說很有用,可以節約啟動時間。這項功能根據自己的需要選擇吧,如果你選擇這項功能,記得恢復休眠後重做交換分區。
 +
 +
 +===== ACPI (6) =====
 +<​code>​
 +ACPI (Advanced Configuration and Power Interface) Support --->
 +[*] ACPI Support
 +[ ] Sleep States (EXPERIMENTAL)
 +AC Adapter
 +Battery
 +Button
 +Video
 +Fan
 +Processor
 +Thermal Zone
 +ASUS/Medion Laptop Extras
 +IBM ThinkPad Laptop Extras
 +Toshiba Laptop Extras
 +(0) Disable ACPI for systems before Jan 1st this year 
 +[ ] Debug Statements
 +[ ] Power Management Timer Support
 +</​code>​
 +ACPI Support,這是一種電源管理方式,你可以看看你的BIOS是否支持。如果支持的話建議你選上這項。
 +
 +Sleep States (EXPERIMENTAL),這項功能可以讓系統進入休眠狀態(不是休眠到硬盤)。休眠是指系統仍然通著電,只是進入最大幅度的省電狀態;而休眠到硬盤是指系統已經斷電。不過如果你不是驅動程序的電源管理部份的開發人員,建議你最好不要選擇這項。相信未來linux下的驅動對電源支持的功能會越來越好,或者也搞個硬件兼容列表,到時就可以放心的使用這項功能了。
 +
 +AC Adapter,檢測是電源供電還是電池供電,通常只對本本有用。
 +
 +Battery,通過/​proc/​acpi/​battery得到電池的信息,通常這也是針對筆記本的。
 +
 +Button,捕獲Power、Sleep、Lid(我也不知道這是什麼按鈕)等按鈕是否按下,並做相應的動作。
 +
 +Video,集成在板上的顯卡的ACPI支持,對有些板卡可能不起作用。
 +
 +Fan,風扇的支持。這一點很明顯,不選這項我的本本的風扇一直在轉,選上以後風扇只是間斷的轉轉。
 +
 +Processor,當機器負荷輕時節省處理器的用電,處理器可是電腦中的第一用電大戶(可能老式的CRT顯示器和它有的一比)。
 +
 +Thermal Zone,這個我也不太清楚是什麼,只是據說大部份的台式機和筆記本都支持,不選還可能把處理器燒掉。如果你不會讓模塊正常工作,還是把它編進內核吧,怪嚇人的。
 +
 +ASUS/Medion Laptop Extras、IBM ThinkPad Laptop Extras、Toshiba Laptop Extras,這三種本本的擴展支持。你的內核如果只是自己用,選個該選的就行了。
 +
 +(0) Disable ACPI for systems before Jan 1st this year,輸入四位數的年份,在該年的1月1日前不使用ACPI的功能。0表示一直使用。
 +
 +Debug Statements,詳細的ACPI調試信息,不搞開發就別選。
 +
 +Power Management Timer Support,我的本本支持HPET(要是忘了是什麼,再看看前面),所以不選它。要是你的機器不支持,應該把它選上。
 +
 +
 +
 +===== ARM(7) =====
 +
 +<​code>​
 +APM (Advanced Power Management) BIOS Support --->
 +APM (Advanced Power Management) BIOS support
 +[ ] Ignore USER SUSPEND ​
 +[*] Enable PM at boot time
 +[ ] Make CPU Idle calls when idle
 +[ ] Enable console blanking using APM
 +[ ] RTC stores time in GMT
 +[ ] Allow interrupts during APM BIOS calls
 +[*] Use real mode APM BIOS call to power off
 +</​code>​
 +APM (Advanced Power Management) BIOS support,高級電源管理的支持,一般來說筆記本應該選上,台式機可以不選。
 +
 +Ignore USER SUSPEND,只有NEC Versa M系列的筆記本需要選擇這一項。
 +
 +Enable PM at boot time,啟動時支持電源管理,選上這個選項能讓系統自動的進行電源管理,除非在啟動時死機,才不要選這項。
 +
 +Make CPU Idle calls when idle,系統空閒時調用空閒指令。只有老式的CPU才用這項。其實調用空閒指令還是讓CPU執行了一條指令。這個選項在內核循環中調用空閒指令。
 +
 +Enable console blanking using APM,支持關閉監視器。據說這項功能對所有的筆記本都無效。如果你都按我的建議配置,系統是能自動休眠的(使用ACPI)。你也不用擔心你的顯示器一直亮著的。
 +
 +RTC stores time in GMT,按Unix的標準,硬件的時鐘應該設為格林威治時間。還是那句老話,因為我還要用Windows,所以硬件時鐘設成了本地時間,當然就不要選這項了。
 +
 +Allow interrupts during APM BIOS calls,允許APM的BIOS調用時中斷。多數的機器不需要這項,Thinkpad的一些新機器需要這項。如果休眠時掛機(包括睡下去就醒不來),再把這項選上。
 +
 +Use real mode APM BIOS call to power off,建議最好選上此項,保證軟件關機。如果你有興趣可以試試你的機器不選這項能不能正常的軟件關機(多數機器不能)。
 +
 +
 +
 +補充一點,如果既選擇了ACPI又選擇了APM,先加載的將被使用。
 +
 +通過這麼多的例子,大家應該可以看出來在menuconfig中,圓括號內是參數,可以選擇某一選項或者輸入具體的參數。方括號只能選擇「Y」或「N」,尖括號除了選擇「Y」和「N」還可以選擇「M」。「Y」表示將該選項包括在內核中,menuconfig中以「*」表示。「N」表示不使用此選項的功能,「M」表示將此選項的功能編譯成模塊。
 +
 +ACPI是為了取代APM而設計的,因此盡量使用ACPI的功能,實在不行再加載apm模塊。
 +
 +
 +===== CPU (8) =====
 +
 +<​code>​
 +[*] CPU Frequency scaling
 +[ ] Enable CPUfreq debugging
 +< > /​proc/​cpufreq interface (deprecated) ​
 +Default CPUFreq governor (performance) --->
 +--- '​performance'​ governor
 +'​powersave'​ governor
 +'​userspace'​ governor for userspace frequency scaling
 +[ ] /​proc/​sys/​cpu/​ interface (2.4. / OLD)
 +'​ondemand'​ cpufreq policy governor
 +<*> CPU frequency table helpers
 +ACPI Processor P-States driver
 +AMD Mobile K6-2/K6-3 PowerNow! ​
 +AMD Mobile Athlon/​Duron PowerNow!
 +AMD Opteron/​Athlon64 PowerNow!
 +Cyrix MediaGX/​NatSemi Geode Suspend Modulation
 +Intel Enhanced SpeedStep ​
 +[ ] Use ACPI tables to decode valid frequency/​voltage pairs
 +--- Built-in tables for Banias CPUs
 +Intel Speedstep on ICH-M chipsets (ioport interface) ​
 +Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
 +Intel Pentium 4 clock modulation
 +< > nVidia nForce2 FSB changing
 +Transmeta LongRun
 +VIA Cyrix III Longhaul
 +--- shared options
 +[ ] /​proc/​acpi/​processor/​../​performance interface (deprecated)
 +[ ] Relaxed speedstep capability checks
 +</​code>​
 +CPU Frequency scaling,這一選項允許改變CPU的主頻,使CPU在低負荷或使用電池時降低主頻,達到省電的目的。
 +
 +Enable CPUfreq debugging,是否允許調試CPU改變主頻的功能,如果要調試,還需要在啟動時加上參數。cpufreq.debug=
 +1:變頻技術的內核調試
 +2:變頻技術的驅動調試
 +4:變頻技術的調節器調試
 +
 +/​proc/​cpufreq interface (deprecated) ,是否允許/​proc/​cpufreq來調節主頻,建議使用默認的sysfs來調節。
 +
 +Default CPUFreq governor (performance) --->​,默認的主頻調節,圓括號內的是你選擇的結果,這裡表示以性能為主。
 +
 +'​powersave'​ governor,最大限度的節約電能調節器。
 +
 +'​userspace'​ governor for userspace frequency scaling,用戶自定義調節器。
 +
 +/​proc/​sys/​cpu/​ interface (2.4. / OLD),兼容2.4內核的用戶調節器。
 +
 +'​ondemand'​ cpufreq policy governor,自動調節主頻。
 +
 +CPU frequency table helpers,多數的CPU需要這一項來調節主頻。
 +
 +ACPI Processor P-States driver,報告處理器的狀態。
 +
 +AMD Mobile K6-2/K6-3 PowerNow!,AMD移動版K6處理器的變頻驅動。
 +
 +AMD Mobile Athlon/​Duron PowerNow!,AMD移動版毒龍、雷烏的變頻驅動。
 +
 +AMD Opteron/​Athlon64 PowerNow!,AMD64處理器的變頻驅動。
 +
 +Cyrix MediaGX/​NatSemi Geode Suspend Modulation,Cyrix處理器的變頻驅動。
 +
 +Intel Enhanced SpeedStep,Intel的變頻技術支持。
 +
 +Use ACPI tables to decode valid frequency/​voltage pairs,使用BIOS中的主頻/電壓參數。
 +
 +--- Built-in tables for Banias CPUs,迅馳一代的主頻/電壓參數。
 +
 +Intel Speedstep on ICH-M chipsets (ioport interface) ,Intel ICH-M南橋芯片組的支持。
 +
 +Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface),Intel 440BX/​ZX/​MX南橋芯片級的支持。
 +
 +Intel Pentium 4 clock modulation,P4處理器的時鐘模塊支持。
 +
 +nVidia nForce2 FSB changing,nVidia nForce2的支持。
 +
 +Transmeta LongRun,Transmeta處理器的支持。
 +
 +VIA Cyrix III Longhaul,VIA Cyrix處理器的支持。
 +
 +/​proc/​acpi/​processor/​../​performance interface (deprecated),從/​proc/​acpi/​processor/​../​performance獲得CPU的變頻信息。
 +
 +Relaxed speedstep capability checks,不全面檢測Intel Speedstep,有的系統雖然支持Speedstep技術,卻無法通過全面的檢測。
 +
 +
 +===== 總線類型(9) =====
 +
 +總線類型,
 +<​code>​
 +[*] PCI support ​
 +PCI access mode (Any) --->
 +[ ] Message Signaled Interrupts (MSI and MSI-X)
 +[ ] Legacy /proc/pci interface
 +[ ] PCI device name database
 +[*] ISA support ​
 +[*] EISA support
 +[*] Vesa Local Bus priming
 +[*] Generic PCI/EISA bridge
 +[*] EISA virtual root device
 +[ ] EISA device name database
 +[ ] MCA support
 +< > NatSemi SCx200 support
 +PCCARD (PCMCIA/​CardBus) support --->
 +PCI Hotplug Support --->
 +</​code>​
 +PCI support,沒有人不知道這是什麼總線類型吧,實在不知道就去google查吧,這個當然要選上。
 +
 +PCI access mode (Any),強列建議選Any,系統將優先使用MMConfig,然後使用BIOS,最後使用Direct檢測PCI設備。
 +
 +Message Signaled Interrupts (MSI and MSI-X),建議你不要選擇這項,設備將使用默認的IRQ中斷。如果選擇這項,充許設備通過PCI總線寫入內存堆棧產生一個中斷。
 +
 +Legacy /proc/pci interface,是否使用/​proc/​pci目錄下的信息文件來描述PCI設備的信息。現在的系統多數都使用lspci工具來得到這樣的信息。
 +
 +PCI device name database,如果你不打算使用lspci工具,就把這項和上面的一項選上。lspci和hotplug都不需要內核中的設備信息庫了。
 +
 +ISA support,是否使用工業總線。如果你沒有老式的ISA設備,可以不選這項。現在基本上都沒有ISA的設備了。不過需要注意的是如果你做嵌入式系統的開發,一些PC104的總線可能會橋接到EISA或者是。VESA總線上。
 +
 +EISA support,擴展工業總線。
 +
 +Vesa Local Bus priming,VESA總線,也是擴展工業總線的一種。我的老486DX66的機器上的顯卡就是這種總線,塊板上大概還有2個EISA插槽各3個ISA插槽。
 +
 +PCI/EISA bridge,PCI、EISA兩種總線的橋。
 +
 +EISA virtual root device,EISA總線的虛擬根設備。
 +
 +EISA device name database,內核中的EISA設備信息庫。
 +
 +MCA support,微通道總線。IBM的台式機和筆記本上可能會有這種總線,包括它的p系列、e系列、z系列機器上都用到了這種總線。
 +
 +NatSemi SCx200 support,這個我不知道是什麼東西,看幫助是松下的一種半導體處理器的驅動。
 +
 +總之,只要你的主板沒有ISA插槽,而且你也不是搞嵌入式開發,工業自動化控制的。不要選「ISA support」就是了,如今的ISA設備在x86體繫上基本是是見不到了。不過自己制板的話,還是ISA的板子最好做。
 +
 +
 +===== PCCARD(10) =====
 +
 +<​code>​
 +PCCARD (PCMCIA/​CardBus) support --->
 +PCCard (PCMCIA/​CardBus) support
 +[ ] Enable PCCARD debugging
 +[ ] Enable obsolete PCCARD code
 +16-bit PCMCIA support
 +[*] 32-bit CardBus support
 +--- PC-card bridges
 +CardBus yenta-compatible bridge support
 +Cirrus PD6729 compatible bridge support
 +i82092 compatible bridge support
 +i82365 compatible bridge support
 +Databook TCIC host bridge support
 +</​code>​
 +PCCard (PCMCIA/​CardBus) support,一般只有筆記本電腦上才會有PCMCIA插槽,如果你是台式機的話,可以不選這一項,然後跳過這一部份。
 +
 +Enable PCCARD debugging,通常不需要選擇調試PCMCIA設備,除非你是設備驅動的開發人員。
 +
 +Enable obsolete PCCARD code,老式的PCMCIA設備只持。現在很少有這樣的設備了,除非你買這樣的設備時帶了張Linux的驅動光盤才需要選上。而且估計你也只能在二手市場上買到這樣的設備。
 +
 +16-bit PCMCIA support,16位的PCMCIA總線支持。
 +
 +32-bit CardBus support,32位的PCMCIA總線支持,通常也叫PCMCIA II總線。
 +
 +下面的是不同產家的PCMCIA芯片的驅動支持,如果你知道你的本本用的是什麼芯片組的話,可以只選它而不選其它的。要是你不知道可以像我一樣的全部選上,然後用modprobe一種一種的試。最後我終於知道我的HP zv5028的本本用的是yenta-compatible的芯片組了。
 +--- PC-card bridges
 +CardBus yenta-compatible bridge support
 +Cirrus PD6729 compatible bridge support
 +i82092 compatible bridge support
 +i82365 compatible bridge support
 +Databook TCIC host bridge support
 +
 +===== PCI Hotplug (11) =====
 +
 +PCI Hotplug Support --->
 +Support for PCI Hotplug (EXPERIMENTAL)
 +< > Fake PCI Hotplug driver (NEW)
 +< > Compaq PCI Hotplug driver (NEW)
 +< > IBM PCI Hotplug driver (NEW)
 +< > ACPI PCI Hotplug driver (NEW)
 +[ ] CompactPCI Hotplug driver (NEW)
 +< > PCI Express Hotplug driver (NEW)
 +< > SHPC PCI Hotplug driver (NEW)
 +
 +Support for PCI Hotplug (EXPERIMENTAL),一般來講只有服務器上會有熱插拔的設備,如果你使用的是台式機,你可以不選擇此項並跳過這一部份。(其實我也沒有選這一項,只是為了講解的方便而選上的。)
 +
 +Fake PCI Hotplug driver (NEW),選上這一選項能讓你的機器模擬PCI熱插拔。注意,它並不是真正意義上的熱插拔,決對不允許帶電插拔設備除非你的主板上集成了PCI熱插拔芯片並且你的PCI設備本身支持熱插拔。
 +
 +Compaq PCI Hotplug driver (NEW),Compaq服務器上的熱插拔芯片組的支持。
 +
 +IBM PCI Hotplug driver (NEW),IBM服務器上的熱插拔芯片組的支持。
 +
 +ACPI PCI Hotplug driver (NEW),PCI熱插拔設備是否支持ACPI電源管理(一般來說都是支持的)。
 +
 +CompactPCI Hotplug driver (NEW),精簡PCI總線的熱插拔設備的支持,通常在嵌入式系統中會用到精簡PCI總線。
 +
 +PCI Express Hotplug driver (NEW),PCI加速總線的熱插拔設備的支持。現在PCI Express總線的顯卡挺火的。但用於服務器上的PCI加速總線的設備我還沒見過。(我是井底之蛙)
 +
 +SHPC PCI Hotplug driver (NEW),SHPC熱插拔控制芯片的支持。
 +
 +
 +===== 可執行文件格式(12) =====
 +
 +可執行文件格式,
 +<​code>​
 +[*] Kernel support for ELF binaries
 +< > Kernel support for a.out and ECOFF binaries
 +<*> Kernel support for MISC binaries
 +</​code>​
 +Kernel support for ELF binaries,ELF是開放平台下最常用的二進制文件,它支持不同的硬件平台。
 +
 +Kernel support for a.out and ECOFF binaries,這是早期UNIX系統的可執行文件格式,目前已經被ELF格式取代。
 +
 +Kernel support for MISC binaries,此選項允許插入二進制的封裝層到內核中,當使用Java、.NET、Python、Lisp等語言編寫的程序時非常有用。
 +
 +
 +接下來應該講硬件設備部份,但考慮到硬件部份是針對具體硬件的,大數Linux玩家都是硬件的DIYer。因此對這一部份應該很熟悉。硬件設備部份將放到最後講,下一篇將講文件系統部份。
 +
 +===== 文件系統(13) =====
 +
 +文件系統,
 +<​code>​
 +<*> Second extended fs support
 +[*] Ext2 extended attributes
 +[*] Ext2 POSIX Access Control Lists
 +[*] Ext2 Security Labels
 +<*> Ext3 journalling file system support
 +[*] Ext3 extended attributes
 +[*] Ext3 POSIX Access Control Lists
 +[*] Ext3 Security Labels
 +[ ] JBD (ext3) debugging support
 +<*> Reiserfs support
 +[ ] Enable reiserfs debug mode
 +[ ] Stats in /​proc/​fs/​reiserfs
 +[*] ReiserFS extended attributes
 +[*] ReiserFS POSIX Access Control Lists
 +[*] ReiserFS Security Labels
 +JFS filesystem support
 +[*] JFS POSIX Access Control Lists
 +[ ] JFS debugging
 +[ ] JFS statistics
 +XFS filesystem support
 +[*] Realtime support (EXPERIMENTAL)
 +[*] Quota support
 +[*] Security Label support
 +[*] POSIX ACL support
 +< > Minix fs support
 +< > ROM file system support
 +[*] Quota support
 +< > Old quota format support
 +Quota format v2 support
 +[*] Dnotify support
 +< > Kernel automounter support
 +< > Kernel automounter version 4 support (also supports v3)
 +CD-ROM/DVD Filesystems --->
 +DOS/FAT/NT Filesystems --->
 +Pseudo filesystems --->
 +Miscellaneous filesystems --->
 +Network File Systems --->
 +Partition Types --->
 +Native Language Support --->
 +</​code>​
 +  有人說在編譯內核時應該將/​boot分區和/​分區的文件系統編譯進內核,其它的可以編譯成模塊。對,但不確切。讓我們來一起瞭解一下linux系統的啟動順序。在內核被加載後,如果initrd參數傳入了內核,內核會去調用指定的文件。當然,initrd和System.map通常都是/​boot下。但是同樣可以用initrd=(hd1,​2)/​initrd.img這樣的方式指定。內核啟動完成後將調用/​sbin/​init,(如果是鏈接要保證目標文件能被內核加載)。不同的系統的啟動腳本可能不太一樣,這裡不詳細介紹。啟動腳本向內核加載模塊時可能用/​sbin/​modprobe或/​sbin/​insmod,由此看來/​sbin的文件系統是要內核支持的。編譯的內核模塊一般在/​lib/​modules/​的版本目錄下,所以/​lib/​modules的文件系統是要內核支持的。一旦其它文件系統的模塊能加載,系統就能向正常的訪問內核中的文件系統一樣訪問模塊支持的文件系統了。由於啟動腳本、fstab自動加載等文件一般在/​etc目錄下,因此/​etc的文件系統是要內核支持的。
 +
 +  這裡概要的介紹了保證系統正常啟動的幾個關鍵點,可能我反而把它講複雜了。如果你能理解上面的這段話,你應該能清楚的知道哪些文件系統是要編譯進內核的,哪些是可以編譯成模塊的。如果你不太理解上面的這段話,下篇貼子我將詳細介紹每個選項及幾種常用的文件系統。當然這裡面包含了我的偏見,如果你覺得我的說法不準確,有誤導看官的地方,請一定指出來。我在此先表示多謝了。
 +
 +
 +
 +===== 文件系統二(14) =====
 +
 +<​code>​
 +<*> Second extended fs support
 +[*] Ext2 extended attributes
 +[*] Ext2 POSIX Access Control Lists
 +[*] Ext2 Security Labels
 +<*> Ext3 journalling file system support
 +[*] Ext3 extended attributes
 +[*] Ext3 POSIX Access Control Lists
 +[*] Ext3 Security Labels
 +[ ] JBD (ext3) debugging support
 +<*> Reiserfs support
 +[ ] Enable reiserfs debug mode
 +[ ] Stats in /​proc/​fs/​reiserfs
 +[*] ReiserFS extended attributes
 +[*] ReiserFS POSIX Access Control Lists
 +[*] ReiserFS Security Labels
 +JFS filesystem support
 +[*] JFS POSIX Access Control Lists
 +[ ] JFS debugging
 +[ ] JFS statistics
 +XFS filesystem support
 +[*] Realtime support (EXPERIMENTAL)
 +[*] Quota support
 +[*] Security Label support
 +[*] POSIX ACL support
 +< > Minix fs support
 +< > ROM file system support
 +[*] Quota support
 +< > Old quota format support
 +Quota format v2 support
 +[*] Dnotify support
 +< > Kernel automounter support
 +< > Kernel automounter version 4 support (also supports v3)
 +CD-ROM/DVD Filesystems --->
 +DOS/FAT/NT Filesystems --->
 +Pseudo filesystems --->
 +Miscellaneous filesystems --->
 +Network File Systems --->
 +Partition Types --->
 +Native Language Support --->
 +</​code>​
 +Second extended fs support,標準的Linux文件系統,建議將這種文件系統編譯進內核。
 +
 +Ext2 extended attributes,Ext2文件系統的結點名稱、屬性的擴展支持。
 +
 +Ext2 POSIX Access Control Lists,POSIX系統的訪問權限列表支持。也就是Owner/​Group/​Others的Read/​Write/​Execute權限。請參考Unix標準文件系統權限。
 +
 +Ext2 Security Labels,擴展的安全標籤,例如SElinux之類的安全系統會使用到這樣的擴展安全屬性。
 +
 +Ext3 journalling file system support,如果你熟悉Redhat Linux,你一定會習慣Ext3文件系統。
 +
 +Ext3 extended attributes,Ext3文件系統的結點名稱、屬性的擴展支持。
 +
 +Ext3 POSIX Access Control Lists,POSIX系統的訪問權限列表支持。
 +
 +Ext3 Security Labels,擴展的安全標籤支持。
 +
 +JBD (ext3) debugging support,Ext3的調試。除非你是文件系統的開發者,否則不要選上這一項。
 +
 +Reiserfs support,如果你熟悉Suse Linux,你一定會習慣Reiserfs文件系統。
 +
 +Enable reiserfs debug mode,Reiserfs的調試。除非你是文件系統的開發者,否則不要選上這一項。
 +
 +Stats in /​proc/​fs/​reiserfs,在/​proc/​fs/​reiserfs文件中顯示Reiserfs文件系統的狀態。一般來說不需要選擇這一項。
 +
 +ReiserFS extended attributes,Reiserfs,文件系統的結點名稱、屬性的擴展支持。
 +
 +ReiserFS POSIX Access Control Lists,POSIX系統的訪問權限列表支持。
 +
 +ReiserFS Security Labels,擴展的安全標籤支持。
 +
 +JFS filesystem support,JFS是IBM公司設計用於AIX系統上的文件系統。後來這一文件系統也能應用於Linux系統。
 +
 +JFS POSIX Access Control Lists,POSIX系統的訪問權限列表支持。
 +
 +JFS debugging,JFS的調試。除非你是文件系統的開發者,否則不要選上這一項。
 +
 +JFS statistics,在/​proc/​fs/​jfs文件中顯示Reiserfs文件系統的狀態。一般來說不需要選擇這一項。
 +
 +XFS filesystem support,XFS是SGI公司為其圖形工作站設計的一種文件系統,後來這一文件系統也能應用於Linux系統。
 +
 +Realtime support (EXPERIMENTAL),實時卷的支持,能大幅提高大文件的讀寫速度。不過並不太安全,建議暫時不要選擇這一選項。
 +
 +Quota support,XFS文件系統的配額支持。
 +
 +Security Label support,擴展的安全標籤支持。
 +
 +POSIX ACL support,POSIX系統的訪問權限列表支持。
 +
 +Minix fs support,Minix可能是最早的Linux系統所使用的文件系統。後來被Ext2文件系統所取代。
 +
 +ROM file system support,內存文件系統的支持。除非你是嵌入式系統的開發者,明確知道你要幹什麼,否則不要選這一項。
 +
 +Quota support,配額支持。也就是說限制某個用戶或者某組用戶的磁盤佔用空間。
 +
 +Old quota format support,舊版本的配額支持。
 +
 +Quota format v2 support,新版本(第二版)的配額支持。
 +
 +Dnotify support,基於目錄的文件變化的通知機制。
 +
 +Kernel automounter support,內核自動加載遠程文件系統的支持。
 +
 +Kernel automounter version 4 support (also supports v3),新的(第四版)的內核自動加載遠程文件系統的支持,也支持第三版。
  
os/linux/kernel_2.6_的配置與編譯.txt · 上一次變更: 2008/05/01 10:47 (外部編輯)