配置內核(make menuconfig)詳述

#make menuconfig

在選擇相應的配置時,有三種選擇方式,它們分別代表的含義如下:  
    Y--將該功能編譯進內核  
    N--不將該功能編譯進內核  
    M--將該功能編譯成可以在需要時動態插入到內核中的模塊  

1、General setup 
代碼成熟度選項,它又有子項:  
1.1、prompt for development and/or incomplete code/drivers  
該選項是對那些還在測試階段的代碼,驅動模塊等的支持。一般應該選這個選項,除非你只是想使用 LINUX 中已經完全穩定的東西。但這樣有時對系統性能影響挺大。  
 
1.2、Cross-compiler tool prefix   
交叉編譯工具前綴,例如:Cross-compiler tool prefix值爲: (arm-linux-)  
 
1.3、Local version - append to kernel release 
內核顯示的版本信息,填入 64字符以內的字符串,你在這裏填上的字符口串可以用uname -a命令看到。 
 
1.4、 Automatically append version information to the version string 
自動在版本字符串後面添加版本信息,編譯時需要有perl以及git倉庫支持 
 
1.5、Kernel compression mode (Gzip) ---> 
有四個選項,這個選項是說內核鏡像要用的壓縮模式,回車一下,可以看到gzip,bzip2,lzma,lxo,一般可以按默認的gzip,如果要用bzip2,lzma,lxo要先裝上支持 
 
1.6、Support for paging of anonymous memory (swap) 
 使用交換分區或交換文件來做爲虛擬內存,一定要選上。 
 
1.7、System V IPC   
表示系統的進程間通信Inter Process Communication,它用於處理器在程序之間同步和交換信息,如果不選這項,很多程序運行不起來,必選。 
 
1.8、POSIX Message Queues    
POSIX標準的消息隊列,它同樣是一種IPC。建議你最好將它選上 
 
1.9、BSD Process Accounting       
用戶進程訪問內核時將進程信息寫入文件中。通常主要包括進程的創建時間/創建者/內存佔用等信息。建議最好選上。 
    BSD Process Accounting version 3 file format 
使用新的第三版文件格式,可以包含每個進程的PID和其父進程的PID,但是不兼容老版本的文件格式。 
 
1.11、Export task/process statistics through netlink (EXPERIMENTAL) 
通過netlink接口向用戶空間導出任務/進程的統計信息,與BSD Process Accounting的不同之處在於這些統計信息在整個任務/進程生存期都是可用的 
    Enable per-task delay accounting (EXPERIMENTAL)    
    在統計信息中包含進程等候系統資源(cpu,IO同步,內存交換等)所花費的時間 
    Enable extended accounting over taskstats (EXPERIMENTAL) 
    在統計信息中包含擴展進程所花費的時間 
     
 1.12、Auditing support 
審記支持,用於和內核的某些子模塊同時工作,例如Security Enhanced Linux。只有選擇此項及它的子項,才能調用有關審記的系統調用。 
 
1.13、Enable system-call auditing support 
 支持對系統調用的審計 
 
1.14、IRQ subsystem  --->   
中斷子系統 
    Support sparse irq numbering   
    <=== 支持稀有的中斷編號,關閉 
 
1.15、RCU Subsystem  --->    
非對稱讀寫鎖系統 是一種高性能的kernel 鎖機制,適用於讀多寫少環境 
RCU Implementation (Tree-based hierarchical RCU)  ---> 
RCU 實現機制 Tree(X) Tree-based hierarchical RCU 基本數按等級劃分 
Enable tracing for RCU 
激活跟蹤 
(32) Tree-based hierarchical RCU fanout value 
基本數按等級劃分分列值 
Disable tree-based hierarchical RCU auto-balancing 
 
1.16、< > Kernel .config support 
這個選項允許.config文件(即編譯LINUX時的配置文件)保存在內核當中 
 
1.17、(17) Kernel log buffer size (16 => 64KB, 17 => 128KB) 
 
1.18、[ ] Control Group support  --->     
    cgroups 支持, 文檔資料 ,cgroups 主要作用是給進程分組,並可以動態調控進程組的CPU 佔用率。比如A 進程分到apple 組,給予20%CPU 佔用率,E 進程分easy 組,給予50%CPU 佔用率,最高100% 。我目前沒有此類應用場景,用到時會選擇將其編譯進去。 
    CPU bandwidth provisioning for FAIR_GROUP_SCHED 
     此選項允許用戶定義的CPU帶寬速率(限制)在公平的組調度運行的任務。組沒有限制設置被認爲是無約束和運行沒有限制。 
    Group scheduling for SCHED_RR/FIFO 
      此功能可以讓您顯式地分配真實的CPU帶寬任務組。 
 
1.19、-*- Namespaces support  --->  
命名空間支持,允許服務器爲不同的用戶信息提供不 同的用戶名空間服務 
    [*]   UTS namespace      
    通用終端系統的命名空間。它允許容器,比如Vservers利用UTS命名空間來爲不同的服務器提供不同的UTS。如果不清楚,選N。 
    [*]   IPC namespace   
    IPC命名空間,不確定可以不選 
    [*]   User namespace (EXPERIMENTAL) 
    User命名空間,不確定可以不選 
    [*]   PID Namespaces   
    PID命名空間,不確定可以不選 
    [*]   Network namespace   
 
1.20、Automatic process group scheduling    自動進程組調度 
 
1.21、[ ] enable deprecated sysfs features to support old userspace tools 
 
1.22、-*- Kernel->user space relay support (formerly relayfs)   
在某些文件系統上( 比如debugfs ) 提供從內核空間向用戶空間傳遞大量數據的接口,我目前沒有此類應用場景 
 
1.23、   [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support    
用於在真正內核裝載前,做一些操作(俗稱兩階段啓動),比如加載module ,mount 一些非root 分區,提供災難恢復shell 環境等, 資料 ,我是期望直接從kernel image 直接啓動,所以沒選它 
 
?1.24、Initramfs source file(s)    
initrd已經被initramfs取代,如果你不明白這是什麼意思,請保持空白 
 
1.25、Optimize for size 
這個選項將在GCC 命令後用 “-Os ” 代替 “-O2 ″參數,這樣可以得到更小的內核。沒必要選。選上了有時會產生錯誤的二進制代碼。 
 
1.26、Enable full-sized data structures for core:在內核中使用全尺寸的數據結構.禁用它將使得某些內核的數據結構減小以節約內存,但是將會降低性能。 
 
1.27、Enable futex support:快速用戶空間互斥體可以使線程串行化以避免競態條件,也提高了響應速度.禁用它將導致內核不能正確的運行基於glibc的程序。 
 
1.28、Enable eventpoll support:支持事件輪循的系統調用。 
 
1.29、Use full shmem filesystem:除非你在很少的內存且不使用交換內存時,纔不要選擇這項。後面的這四項都是在編譯時內存中的對齊方式,0 表示 
編譯器的默認方式。使用內存對齊能提高程序的運行速度,但是會增加程序對內存的使用量。內核也是一組程序呀。 
    Enable VM event counters for /proc/vmstat:允許在/proc/vmstat中包含虛擬內存事件記數器。 
    [*] Disable heap randomization 
禁用隨機heap(heap堆是一個應用層的概念,即堆對CPU是不可見的,它的實現方式有多種,可以由OS實現,也可以由運行庫實現,如果你願意,你也可以在一個棧中來實現一個堆) 
 
1.30、Choose SLAB allocator (SLAB)  ---> 
選擇內存分配管理器(強烈推薦使用SLUB) 
 
1.31、[ ] Configure standard kernel features (for small systems)  --->  
這個選項可以讓內核的基本選項和設置無效或者扭曲。這是用於特定環境中的,它允許“非標準”內核。你要是選它,你一定要明白自己在幹什麼。這是爲了編譯某 些特殊用途的內核使用的,例如引導盤系統。配置標準的內核特性(爲小型系統) 
    Enable 16-bit UID system calls:允許對UID系統調用進行過時的16-bit包裝。 
    Sysctl syscall support  幾乎使用不到這一選項,不選它可以輕微使內核變小 
    Include all symbols in kallsyms:在kallsyms中包含內核知道的所有符號,內核將會增大300K。 
    Enable support for printk:允許內核向終端打印字符信息,在需要診斷內核爲什麼不能運行時選擇。 
    BUG() support:顯示故障和失敗條件(BUG 和WARN),禁用它將可能導致隱含的錯誤被忽略。 
    Enable ELF core dumps:內存轉儲支持,可以幫助調試ELF格式的程序。 
 
1.32、[*] Profiling support 
不選剖面支持,用一個工具來掃描和提供計算機的剖面圖。支持系統評測(對於大多數用戶來說並不是必須的) 
 
1.33、OProfile system profiling 
OProfile評測和性能監控工具 
 
1.35、[ ]   OProfile multiplexing support (EXPERIMENTAL)   
 
1.34、Kprobes 
調試內核除非開發人員,否則不選 
 
?1.35、Optimize trace point call sites   
 
1.36、GCOV-based kernel profiling  
        [ ] Enable gcov-based kernel profiling 不選 
 
 
 
 
2、Enable loadable module support   
2.1 Forced module loading  
允許強制加載模塊 
 
2.2 Module unloading   
允許卸載已經加載的模塊 
 
2.3 Forced module unloading 
允許強制卸載正在使用中的模塊(比較危險)這個選項允許你強行卸除模塊,即使內核認爲這不安全。內核將會立即移除模塊,而不管是否有人在使用它(用 rmmod -f 命令)。這主要是針對開發者和衝動的用戶提供的功能。如果不清楚,選N。 
 
2.4 Module versioning support 
有時候,你需要編譯模塊。選這項會添加一些版本信息,來給編譯的模塊提供獨立的特性,以使不同的內核在使用同一模塊時區別於它原有的模塊。這有時可能會有點用。如果不清楚,選N。允許使用其他內核版本的模塊(可能會出問題) 
 
2.5 Source checksum for all modules 
爲所有的模塊校驗源碼,如果你不是自己編寫內核模塊就不需要它這個功能是爲了防止你在編譯模塊時不小心更改了內核模塊的源代碼但忘記更改版本號而造成版本衝突。如果不清楚,選N。 
 
 
 
 
 
 
 
3、Enable the block layer  
     塊設備支持,使用硬盤/USB/SCSI設備者必選這選項使得塊設備可以從內核移除。如果不選,那麼 blockdev 文件將不可用,一些文件系統比如 ext3 將不可用。這個選項會禁止 SCSI 字符設備和 USB 儲存設備,如果它們使用不同的塊設備。選Y,除非你知道你不需要掛載硬盤和其他類似的設備。不過此項無可選項 
 
3.1 Support for large (2TB+) block devices and files 
僅在使用大於2TB的塊設備時需要 
 
3.2 Block layer SG support v4 
通用scsi塊設備第4版支持 
 
3.3 Block layer data integrity support  
塊設備數據完整性支持 
 
?3.4 Block layer bio throttling support  
可用於限制設備的IO速度 
 
3.5 Partition Types 
    Advanced partition selection 
    如果你想要在linux上使用一個在其他的介質上運行着操作系統的硬盤時,選擇Y,如果你不確定時可以選N 
 
3.6 IO Schedulers 
    IO調度器I/O是輸入輸出帶寬控制,主要針對硬盤,是核心的必須的東西。這裏提供了三個IO調度器。 
     Deadline I/O scheduler  
    使用輪詢的調度器,簡潔小巧,提供了最小的讀取延遲和尚佳的吞吐量,特別適合於讀取較多的環境(比如數據庫)Deadline I/O調度器簡單而又緊密,在性能上和搶先式調度器不相上下,在一些數據調入時工作得更好。至於在單進程I/O磁盤調度上,它的工作方式幾乎和搶先式調度器相同,因此也是一個好的選擇。 
 
    CFQ I/O scheduler 
    使用QoS策略爲所有任務分配等量的帶寬,避免進程被餓死並實現了較低的延遲,可以認爲是上述兩種調度器的折中.適用於有大量進程的多用戶系統CFQ調度器嘗試爲所有進程提供相同的帶寬。它將提供平等的工作環境,對於桌面系統很合適。 
 
    Default I/O scheduler (CFQ) 
    默認IO調度器我這樣理解上面三個IO調度器: 
    搶先式是傳統的,它的原理是一有響應,就優先考慮調度。如果你的硬盤此時在運行一項工作,它也會暫停下來先響應用戶。    期限式則是:所有的工作都有最終期限,在這之前必須完成。當用戶有響應時,它會根據自己的工作能否完成,來決定是否響應用戶。    CFQ則是平均分配資源,不管你的響應多急,也不管它的工作量是多少,它都是平均分配,一視同仁的。 
    ( *) Deadline     
    (  ) CFQ   
    (  ) No-op 
 
 
 
 
 
 
 
 
4、Processor type and features (處理器類型及特點) 
?4.1 DMA memory allocation support 
該選項允許小於32位地址的設備使用前16MB的地址空間,如果不缺定的話,選Y 
 
4.2 Symmetric multi-processing support 
    對稱多處理器支持,如果你有多個CPU或者使用的是多核CPU就選上.此時"Enhanced Real Time Clock Support"選項必須開啓,"Advanced Power Management"選項必須關閉如果你選N,內核將會在單個或者多個CPU的機器上運行,但是隻會使用一個CPU。如果你選Y,內核可以在很多(但不是所有)單CPU的機器上運行,在這樣的機器,你選N會使內核運行得更快。    注意如果你選Y,然後在Processor family選項中選擇“586〃 or “Pentium” ,內核將不能運行在486構架的機器上。同樣的,多CPU的運行於PPro構架上的內核也無法在 Pentium 系列的板上運行。 
 
4.3 Enable MPS table 
MPS多處理器規範,不選 
 
4.4 Support for big SMP systems with more than 8 CPUs 
默認情況下爲不選 
 
4.5 Support for extended (non-PC) x86 platforms 
如果選的話,你將可以選擇支持如下32位X86的平臺。 
AMD Elan,NUMAQ (IBM/Sequent),RDC R-321x SoC,SGI 320/540 (Visual Workstation),STA2X11-based (e.g. Northville),Summit/EXA (IBM x440),Unisys ES7000 IA32 series 
Moorestown MID devices如果你有這樣的系統,或者你想要構建一個這樣的通用的分佈式,選擇Y,否則選擇N 
 
 
 
?4.6 intel MID platform support 
    Medfield MID platform  
 
4.7 RDC R-321x SoC 
嵌入式相關,不選 
 
4.8 Support non-standard 32-bit SMP architectures 
非標準的32位SMP結構支持,不選 
 
4.9 Eurobraille/Iris poweroff module 
來自urobraille的iris機器不支持APM和ACPI來適時關閉自己,此模塊在內核中起到這一作用。這是用於urobraille的iris機子,不確定的話,不選。 
 
4.10 Single-depth WCHAN output 
跟 proc 相關的最好不要關,選Y 
 
?4.11 paravirt-ops debugging 
 
4.12 Memtest 
這一選項使內核增加一個“memtest”(內核測試)的參數,這將允許設置memtest。如果你不知道如何回答這個問題,選擇N 
 
4.13 Processor family (Pentium-Pro)處理器系列,請按照你實際使用的CPU選擇這裏是處理器的類型。這裏的信息主要目的是用來優化。爲了讓內核能夠在所有X86構架的CPU上運行(雖然不是 最佳速度),在這你可以選386。內核不會運行在比你選的構架還要老的機器上。比如,你選了Pentium構架來優化內核,它將不能在486構架上運行。如果你不清楚,選386。( ) 386 ( ) 486( ) 586/K5/5x86/6x86/6x86MX ( ) Pentium-Classic( ) Pentium-MMX(系統默認選項) Pentium-Pro ( ) Pentium-II/Celeron(pre-Coppermine)( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon ( ) Pentium M( ) Pentium-4/Celeron(P4-based)/Pentium-4 M/older Xeon ( ) K6/K6-II/K6-III( ) Athlon/Duron/K7( ) Opteron/Athlon64/Hammer/K8( ) Crusoe( ) Efficeon( ) Winchip-C6( ) Winchip-2/Winchip-2A/Winchip-3( ) GeodeGX1( ) Geode GX/LX( ) CyrixIII/VIA-C3( ) VIA C3-2 (Nehemiah)( ) VIA C7 ( ) Core 2/newer Xeon( ) Intel Atom 
 
?4.14 Generic x86 support    這一選項針對x86系列的CPU使用更多的常規優化。如果你在上面一項選的是i386、i586之類的才選這個通用x86支持,如果你的CPU能夠在上述"Processor family"中找到就別選除了對上面你選擇的X86 CPU進行優化,它還對更多類型X86 CPU的進行優化。這將會使內核在其他的X86 CPU上運行得更好。這個選項提供了對X86系列CPU最大的兼容性,用來支持一些少見的x86構架的CPU。如果你的CPU能夠在上面的列表中找到,就裏就不用選了。 
 
4.15 PentiumPro memory ordering errata workaround 
    舊的PentiumPro多處理器系統有勘誤能力,可能會導致在少數的情況下,違反x86的排序標準內存操作。啓用此選項將嘗試解決一些(但不是全部)此類問題,但將以spinlock和內存爲代價。 
 
4.16 HPET Timer Support(HPET時鐘支持) 
    允許內核使用HPET。HPET是替代8254芯片的新一代定時器,i686及以上級別的主板都支持,可以安全的選上。但是,HEPT只會在支持它的平臺和BIOS上運行。如果不支持,8254將會激活。選N,將繼續使用8254時鐘。 
 
4.17 Enable DMI scanning  
選擇Y除非你已經證明當進入DMI時不影響你的配置。PNP BIOS代碼需要這一項的支持。 
 
4.18 (8) Maximum number of CPUs 
支持的最大CPU數,每增加一個內核將增加8K體積 
 
4.19 SMT (Hyperthreading) scheduler support   
支持Intel的超線程(HT)技術超線程調度器在某些情況下將會對 Intel Pentium 4 HT系列有較好的支持。如果你不清楚,選N 
 
4.20 Multi-core scheduler support    
針對多核CPU進行調度策略優化多核調度機制支持,雙核的CPU要選。多核心調度在某些情況下將會對多核的CPU系列有較好的支持。如果你不清楚,選N 
 
4.21 Fine granularity task level IRQ time accounting 
如果不確定的話,選N,默認爲不選。 
 
4.22 Preemption Model (Voluntary Kernel Preemption (Desktop))    內核搶佔模式一些優先級很高的程序可以先讓一些低優先級的程序執行,即使這些程序是在覈心態下執行。從而減少內核潛伏期,提高系統的響應。當然在一些特殊的點的內核是不可搶先的,比如內核中的調度程序自身在執行時就是不可被搶先的。這個特性可以提高桌面系統、實時系統的性能。 
    No Forced Preemption (Server)  
    適合服務器環境的禁止內核搶佔    這是傳統的LINUX搶先式模型,針對於高吞吐量設計。它同樣在很多時候會提供很好的響應,但是也可能會有較長的延遲。如果你是建立服務器或者用於科學運 算,選這項,或者你想要最大化內核的原始運算能力,而不理會調度上的延遲。 
    (默認選項) Voluntary Kernel Preemption (Desktop) 
    適合普通桌面環境的自願內核搶佔    這個選項通過向內核添加更多的“清晰搶先點”來減少內核延遲。這些新的搶先點以降低吞吐量的代價,來降低內核的最大延遲,提供更快的應用程序響應。這通過 允許低優先級的進程自動搶先來響應事件,即使進程在內核中進行系統調用。這使得應用程序運行得更“流暢”,即使系統已經是高負荷運轉。如果你是爲桌面系統編譯內核,選這項。 
    Preemptible Kernel (Low-Latency Desktop) 
    適合運行實時程序的主動內核搶佔    這個選項通過使所有內核代碼(非致命部分)編譯爲“可搶先”來降低內核延遲。這通過允許低優先級進程進行強制搶先來響應事件,即使這些進程正在進行系統調用或者未達到正常的“搶先點”。這使得應用程序運行得更加“流暢”即使系統已 經是高負荷運轉。代價是吞吐量降低,內核運行開銷增大。選這項如果你是爲桌面或者嵌入式系統編譯內核,需要非常低的延遲。    如果你要最快的響應,選第三項。我認爲萬物是平衡的,低延遲意味着系統運行不穩定,因爲過多來響應用戶的要求,所以我選第二個。 
 
4.23  Reroute for broken boot IRQs 
防止同時收到多個boot IRQ ( 中斷 ) 時,系統混亂 
 
?4.24 Machine Check / overheating reporting   
讓CPU 檢測到系統故障時通知內核, 以便內核採取相應的措施( 如過熱關機等) 
    Intel MCE features 
    AMD MCE features 
    Support for old Pentium 5 / WinChip machine checks 
 
4.25 Machine check injector support 
    讓CPU檢測到系統故障時通知內核,以便內核採取相應的措施(如過熱關機等)(不明白此項與上一項的區別,原來的配置中是做爲模塊加入內核的) 
 
?4.26 Enable VM86 support 
這一選項用於支持在像DOSEMU一樣的程序在x86的處理器上運行16位的legacy代碼。也可能像XFree86這樣的軟件通過BIOS初始化聲卡的時候會用到。 
 
4.27 Toshiba Laptop support 
東芝筆記本模塊支持,不選 
 
4.28 Dell laptop support 
Dell筆記本模塊支持,不選 
 
4.29 Enable X86 board specific fixups for reboot 
修正某些舊x86主板的重起bug,這種主板基本絕種了,我認爲可以不選擇這一項 
 
4.30 dev/cpu/microcode - microcode support 
    是否支持Intel IA32架構的CPU。這個選項將讓你可以更新Intel IA32系列處理器的微代碼,顯然你需要到網上去下載最新的代碼,LINUX不提供這些代碼。當然你還必須在文件系統選項中選擇/dev file system support才能正常的使用它。如果你把它譯爲模塊 ,它將是 microcode。    IA32主要用於高於4GB的內存。詳見下面的“高內存選項”。使用不隨Linux內核發行的IA32微代碼,你必需有IA32微代碼二進制文件,僅對Intel的CPU有效。 
    Intel microcode patch loading support   
    AMD microcode patch loading support 
 
4.31 /dev/cpu/*/msr - Model-specific register support 
    是否打開CPU特殊功能寄存器的功能。這個選項桌面用戶一般用不到,它主要用在Intel的嵌入式CPU中的,這個寄存器的作用也依賴與不同的CPU類型而有所不同,一般可以用來改變一些CPU原有物理結構的用途,但不同的CPU用途差別也很大。在多cpu系統中讓特權CPU訪問x86的MSR寄存器。 
 
4.32 /dev/cpu/*/cpuid - CPU information support 
    是否打開記錄CPU相關信息功能。這會在/dev/cpu中建立一系列的設備文件,用以讓過程去訪問指定的CPU。能從/dev/cpu/x/cpuid獲得CPU的唯一標識符(CPUID)。 
 
4.33 High Memory Support (4GB)  
    LINUX能夠在X86系統中使用64GB的物理內存。但是,32位地址的X86處理器只能支持到4GB大小的內存。這意味着,如果你有大於4GB的物理內存,並非都能被內核“永久映射”。這些非永久映射內存就稱爲“高階內存”。    如果你編譯的內核永遠都不會運行在高於1G內存的機器上,選OFF(默認選項,適合大多數人)。這將會產生一個“3GB/1GB”的內存空間劃分,3GB 虛擬內存被內核映射以便每個處理器能夠“看到”3GB的虛擬內存空間,這樣仍然能夠保持4GB的虛擬內存空間被內核使用,更多的物理內存能夠被永久映射。    如果你有1GB-4GB之間的物理內存,選4GB選項。如果超過4GB,那麼選擇64GB。這將打開 Intel 的物理地址延伸模式(PAE)。PAE將在IA32處理器上執行3個層次的內存頁面。PAE是被LINUX完全支持的,現在的Intel處理器 (Pentium Pro 和更高級的)都能運行PAE模式。注意:如果你選64GB,那麼在不支持PAE的CPU上內核將無法啓動。     你機器上的內存能夠被自動探測到,或者你可以用類似於“mem=256M”的參數強制給內核指定內存大小。      4GB 選這項如果你用的是32位的處理器,內存在1-4GB之間。    64GB 選這項如果你用的是32位的處理器,內存大於4GB。 
    ( ) off    (X) 4GB    ( ) 64GB 
 
4.34 Memory model (Flat Memory)  
    一般選"Flat Memory",其他選項涉及內存熱插拔(X) Flat Memory (平坦內存模式) 
    這個選項允許你改變內核在內部管理內存的一些方式。大多數用戶在這隻會有一個選項:Flat Memory。這是普遍的和正確的選項。一些用戶的機器有更高級的特性,比如 NUMA 和內存熱拔插,那將會有不同的選項。Discontiguous Memory(非接觸式內存模式)是一個更成熟、更好的測試系統。但是對於內存熱拔插系統不太合適,會被“Sparse Memory”代替。如果你不清楚“Sparse Memory”和“Discontiguous Memory”的區別,選後者。如果不清楚,就選Flat Memory。 
    Sparse Memory(稀疏內存模式) 
    這對某些系統是唯一選項,包括內存熱拔插系統。這正常。對於其他系統,這將會被Discontiguous Memory選項代替。這個選項提供潛在的更好的特性,可以降低代碼複雜度,但是它是新的模式,需要更多的測試。如果不清楚,選擇“Discontiguous Memory” 或 “Flat Memory”。 
 
4.35 Allow for memory compaction 
 
4.36 Page migration (選擇Y) 
    Enable KSM for page merging   
    (4096) Low address space to protect from user allocation 
 
4.37 Enable recovery from hardware memory errors 
選擇Y 
 
4.38 Transparent Hugepage Support   
    Transparent Hugepage Support sysfs defaults 
    1.always  2.madvise(默認選項) 
 
4.39 Cross Memory Support 
4.40 Enable cleancache driver to cache clean pages if tmem is present 
4.41 Enable frontswap to cache swap pages if tmem is present(這三部分不太瞭解) 
 
4.42 Allocate 3rd-level pagetables from highmem 
    在內存很多 ( 大於 4G) 的機器上將用戶空間的頁表放到高位內存區 , 以節約寶貴的低端內存 。 
 
4.43 Check for low memory corruption 
    低位內存髒數據檢查,默認是每60 秒檢查一次。一般這種髒數據 是因某些Bios 處理不當引起的。 
 
4.44 (64) Amount of low memory, in kilobytes, to reserve for the BIOS 
 
4.45 Math emulation 
數學協處理器仿真,486DX以上的cpu就不要選它了 
 
4.46 MTRR (Memory Type Range Register) support(內存類型區域寄存器) 
    在 Intel P6 系列處理器(Pentium Pro, Pentium II 和更新的)上,MTRR將會用來規定和控制處理器訪問某段內存區域的策略。如果你在PCI或者AGP總線上有VGA卡,這將非常有用。可以提升圖像的傳送速度2.5倍以上。選Y,會生成文件/proc/mtrr,它可以用來操縱 你的處理器的MTRR。典型地,X server 會用到。這段代碼有着通用的接口,其他CPU的寄存器同樣能夠使用該功能。Cyrix 6×86, 6×86MX和 M II處理器有ARR ,它和 MTRR有着類似的功能。AMD K6-2/ K6-3有兩個MTRR, Centaur C6有8個MCR允許複合寫入。所有這些處理器都支持這段代碼,你可以選Y如果你有以上處理器。選Y同樣可以修正SMP BIOS的問題,它僅爲第一個CPU提供MTRR,而不爲其他的提供。這會導致各種各樣的問題,所以選Y是明智的。你可以安全地選Y,即使你的機器沒有MTRR。這會給內核增加9KB。打開它可以提升PCI/AGP總線上的顯卡2倍以上的速度,並且可以修正某些BIOS錯誤。 
 
4.47 MTRR cleanup support 
MTRR清理(2.6.27內核新增功能,不確定可以不選) 
MTRR cleanup enable value (0-1)   
MTRR cleanup spare reg num (0-7) 
x86 PAT support 
x86 architectural random number generator 
 
4.48 EFI runtime service support(EFI啓動支持) 
    這裏允許內核在EFI平臺上使用儲存於EFI固件中的系統設置啓動。這也允許內核在運行時使用EFI的相關服務。這個選項只在有EFI固件的系統上有用,它會使內核增加8KB。另外,你必須使用最新的ELILO 登錄器才能使內核採用EFI的固件設置來啓動(GRUB和LILO完全不知道EFI是什麼東西)。即使你沒有EFI,卻選了這個選項,內核同樣可以啓動。大家應該用的是GRUB,所以選上這個也沒什麼用。除非你的系統支持EFI(一種可代替傳統BIOS的技術)否則不選。 
 
4.49 Enable seccomp to safely compute untrusted bytecode 
只有嵌入式系統可以不選 
 
4.50 Enable -fstack-protector buffer overflow detection (EXPERIMENTAL) 
 
4.51 Timer frequency (1000 HZ)  
    內核時鐘頻率桌面1000服務器100或250,允許設置時鐘頻率。    這是用戶定義的時鐘中斷頻率 100HZ-1000 HZ ,不過 100 HZ 對服務器和NUMA系統更合適,它們不需要很快速的響應用戶的要求,因爲時鐘中斷會導致總線爭用和緩衝打回。注意在SMP環境中,時鐘中斷由變量 NR_CPUS * Hz定義在每個CPU產生。    其實和前面的搶先式進程差不多,就是多少頻率來響應用戶要求。我選了250HZ的。要快點的可以選1000HZ的。但是還是那句話,一切是平衡的。機器過快響應你,它自己的活就不知道做得好不好了。( ) 100 HZ100 HZ是傳統的對服務器、SMP 和 NUMA的系統選項。這些系統有比較多的處理器,可以在中斷較集中的時候分擔中斷( ) 250 HZ250 HZ對服務器是一個好的折衷的選項,它同樣在SMP 和 NUMA 系統上體現出良好的反應速度。( ) 300 HZ(X) 1000 HZ1000 HZ對於桌面和其他需要快速事件反應的系統是非常棒的。 
 
4.52 kexec system call(kexec 系統調用) 
    kexec是一個用來關閉你當前內核,然後開啓另一個內核的系統調用。它和重啓很像,但是它不訪問系統固件。由於和重啓很像,你可以啓動任何內核,不僅僅是LINUX。    kexec這個名字是從 exec 系統調用來的。它只是一個進程,可以確定硬件是否正確關閉,Linus本人都沒話說,估計是受害不淺。我們當然不能上當,選N!提供kexec系統調用,可以不必重啓而切換到另一個內核,如果需要就選擇,對大多數用戶來說並不需要. 
 
4.53 kernel crash dumps 
內核崩潰時,dump 運行時信息。就算 crash 了,我也不會去調試內核的core dump 
 
4.54 (0x1000000) Physical address where the kernel is loaded 
 
4.55 Build a relocatable kernel 
官方說明 (建立一個移動的內核,並增加10% 的內核尺寸,運行時會被丟棄),我認爲沒實質性的作用 
 
4.56 (0x100000) Alignment value to which kernel should be aligned 
 
4.57 Support for hot-pluggable CPUs 
對SMP休眠和熱插拔CPU提供支持 
4.58 Compat VDSO support   
如果Glibc版本大於等於2.3.3就不選,否則就選上,目前的版本基本上都大於2.3.3如果你運行的是最新的glibc(GNU C函數庫)版本( 2.3.3 或更新),選N,這樣可以移除高階的VDSO 映射,使用隨機的 VDSO。 
4.59 Built-in kernel command line  (不選) 
 
5、 Power management and ACPI options 
5.1、Power Management support 
 
5.2、Power Management Debug Support 
不想調試ACPI  
這個你現在可以勾掉,不勾也沒事,稍侯會在kernel-hacking這一節勾掉調試,這裏也就沒 
  
5.3、Suspend to RAM and standby   
待機 
 
5.4、Hibernation (aka 'suspend to disk') 
休眠 
 
5.5、Run-time PM core functionality 
 
5.6、ACPI (Advanced Configuration and Power Interface) Support  ---> 
見附1 
 
5.7、SFI (Simple Firmware Interface) Support  ---> 
 
5.8、APM (Advanced Power Management) BIOS support  --->   
選acpi就不用apm,一般你也只用acpi& 
 
5.9、CPU Frequency scaling  ---> 
         [*] CPU Frequency scaling  
[ ]   Enable CPUfreq debugging <=== 我不需要調試 CPUfreq  
< >   CPU frequency translation statistics  
Default CPUFreq governor (performance)  ---> <=== 默認用 performance 高性能的CPU 調頻方式  
-*-   'performance' governor  
< >   'powersave ' governor  
<>    'userspace ' governor for userspace frequency scaling  
<>   'ondemand ' cpufreq policy governor <=== " 週期性的考察CPU 負載並自動的動態調整cpu 頻率" ,我只用 performance  
<>   'conservative' cpufreq governor  
    *** CPUFreq processor drivers ***  
                 < >     Processor Clocking P-stat driver  
<*>   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 (deprecated)  
< >   Intel Speedstep on ICH-M chipsets (ioport interface)  
< >   Intel Pentium 4 clock modulation  
< >   Transmeta LongRun  
< >   VIA Cyrix III Longhaul  
 
5.10、CPU idle PM support   
 
5.11、Cpuidle Driver for Intel Processors   
 
 
 
6、Bus options(PCI etc.)  
6.1、PCI support(這個必須選) 
 
6.2、PCI access mode (Any) 
    ( ) BIOS   
    ( ) MMConfig   
    ( ) Direct 
    (X) Any 
 
6.3、Read CNB20LE Host Bridge Windows 
沒有公共規範的芯片組,此功能已知是不完整的。如果你不知道需不需要它,請選擇N 
 
6.4、PCI Express support   
如果你的主板支持PCI Express,請選擇Y 
 
6.5、PCI Express Hotplug driver 選Y 
 
6.6、Root Port Advanced Error Reporting support   
硬件驅動會負責發送錯誤信息 
 
6.7、PCI Express ECRC settings control   
如果懷疑,請選擇N 
 
6.8、PCIe AER error injector support     同上,選    N 
 
6.9、PCI Express ASPM control 
這使得OS控制的PCI Express ASPM(活動狀態電源管理)和時鐘電源管理。 ASPM支持 
狀態L0/L0s/L1,選Y 
 
6.10、Debug PCI Express ASPM 選N 
    Default ASPM policy 
     (X)BIOS default 
     ( )powersave 
     ( )performance 
 
6.11、Message Signaled Interrupts (MSI and MSI-X)    
這使得設備驅動能夠使用MIS(消息信號中斷)選Y 
 
6.12、PCI Debugging   
我認爲這裏沒有必要選 
 
?6.13、Enable PCI resource re-allocation detection  
當PCI資源重新分配時,如果你需要PCI核心來檢測的話,選擇Y,同時你可以用pci=realloc=on和pci=realloc=off來覆蓋它,如果你不確定的話,選擇N 
 
6.14、PCI Stub driver 
選擇Y或者M,如果你想要:當一個設備去註冊其他的客戶操作系統時需要保留該PCI設備 
 
6.15、 Interrupts on hypertransport devices 
這將允許高速傳輸設備使用中斷,如果不明確的話,選擇Y 
 
?6.16、 PCI IOV support   
    I / O虛擬化是由一些設備支持的PCI功能,這使得他們能夠創建虛擬設備共享其物理資源。如果不確定的話,選擇N 
 
?6.17、PCI PRI support 
RIP就是PCI頁面請求接口,如果不確定的話,選擇N 
 
6.18、PCI PASID support  不確定的話選擇N 
 
6.19、PCI IO-APIC hotplug support  選Y 
 
6.20、ISA support(以及之後的EISA) 
查看你的主板上是否有ISA插槽。ISA是總線系統的名稱,它是一個老的系統,現已被PCI取代。新的主板已經不支持它,如果你還有,選擇Y,否則,選擇N 
 
6.21、NatSemi SCx200 support  選擇編譯爲模塊 
 
6.22、One Laptop Per Child support     不選 
 
6.23、PCEngines ALIX System Support (LED setup) 
6.24、Soekris Engineering net5501 System Support(LEDS, GPIO, etc) 
6.25、Traverse Technologies GEOS System Support (LEDS, GPIO, etc) 
  
?6.26、RapidIO support  
    RapidIO主要應用於嵌入式系統內部互連。如果你選擇Y,內核中將包含支持RapidIO設備連接的驅動和設施 
 
?6.27、PCCard (PCMCIA/CardBus) support  
    一般筆記本電腦會配備PCCard 接口( 無線網卡之類的) ,看你的硬件和使用場景吧。雖然我也是NB ,但我從來不用PCMCIA 
        16-bit PCMCIA support 
        Load CIS updates from userspace (EXPERIMENTAL)   
        32-bit CardBus support 
    *** PC-card bridges *** 
        CardBus yenta-compatible bridge support 
        Cirrus PD6729 compatible bridge support 
        i82092 compatible bridge support 
 
6.28、 Support for PCI Hotplug 
    支持熱拔插PCI 設備 
    Fake PCI Hotplug driver 
    Compaq PCI Hotplug driver 
    Save configuration into NVRAM on Compaq servers 
    IBM PCI Hotplug driver   
    ACPI PCI Hotplug driver 
    ACPI PCI Hotplug driver IBM extensions 
    CompactPCI Hotplug driver 
    SHPC PCI Hotplug driver 
 
7、Executable file formats / Emulations 
7.1、Kernel support for ELF binaries  選擇Y 
7.2、Write ELF core dumps with partial segments  不選 
7.3、Kernel support for a.out and ECOFF binaries  編譯成模塊 
7.4、Kernel support for MISC binaries  編譯成模塊 
 
 
 
 
 
 
 
 
 
 
 
8、Networking support  
8.1、Networking options   
    <Y> Packet socket 
    <Y> Unix domain sockets 
    <M> Transformation user configuration interface 
    [ ] Transformation sub policy support (EXPERIMENTAL) 
    [ ] Transformation migrate database (EXPERIMENTAL) 
    [ ] Transformation statistics (EXPERIMENTAL) 
    <M> PF_KEY sockets 
    [ ]  PF_KEY MIGRATE (EXPERIMENTAL) 
    [Y] TCP/IP networking 
    [Y]   IP: multicasting 
    [Y]   IP: advanced router 
    Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH)│ 
    [Y]   IP: policy routing 
    [Y]   IP: equal cost multipath   
    [Y]   IP: verbose route monitoring 
    [ ]   IP: kernel level autoconfiguration 
    <M>   IP: tunneling   
    < M>   IP: GRE demultiplexer 
    [Y]   IP: multicast routing 
    [ ]     IP: multicast policy routing 
    [Y]     IP: PIM-SM version 1 support 
    [Y]     IP: PIM-SM version 2 support 
    [ ]   IP: ARP daemon support   
    [ Y]   IP: TCP syncookie support  
    抵抗SYN flood 攻擊,我是開發機,暫不考慮安全特性 
    <M>   IP: AH transformation 
    <M>   IP: ESP transformation 
    <M>   IP: IPComp transformation 
    <M>   IP: IPsec transport mode 
    <M>   IP: IPsec tunnel mode 
    <*>   IP: IPsec BEET mode 
    {*}   Large Receive Offload (ipv4/tcp) 
    <M>   INET: socket monitoring interface 
    [*]   TCP: advanced congestion control  ---> 
    高級擁塞控制, 如果沒有特殊需求( 比如無線網絡) 就別選了 
    [ ]   TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL) 
    < >   The IPv6 protocol  ---> 
    我暫時沒有要支持IPV6 的需求 
    [ ]   NetLabel subsystem support 
    NetLabel 子系統, 爲諸如CIPSO 與RIPSO 之類能夠 在分組信息上添加標籤的協議提供支持,我用不到 
    -*- Security Marking 
    對網絡包進行安全標記, 類似於nfmark , 但主要是爲安全目的而設計 , 安全特性,我暫時不考慮 
    [ ] Timestamping in PHY devices 
    [ ] Network packet filtering framework (Netfilter)  ---> 
    我不打算使用防火牆,要用到時再編譯進去 
    <M> The DCCP Protocol (EXPERIMENTAL)  --->   
    -M- The SCTP Protocol (EXPERIMENTAL)  --->   
    <M> The RDS Protocol (EXPERIMENTAL) 
    < >   RDS over Infiniband and iWARP 
    < >   RDS over TCP 
    [ ]   RDS debugging messages     
    <M> The TIPC Protocol (EXPERIMENTAL)  ---> 
    <M> Asynchronous Transfer Mode (ATM) 
    <M>   Classical IP over ATM 
    [ ]     Do NOT send ICMP if no neighbour 
    <M>   LAN Emulation (LANE) support 
    < >     Multi-Protocol Over ATM (MPOA) support 
    <M>   RFC1483/2684 Bridged protocols   
    [ ]     Per-VC IP filter kludge 
    < > Layer Two Tunneling Protocol (L2TP)  --->        
    <M> 802.1d Ethernet Bridging   
    [*]   IGMP/MLD snooping 
    [ ] Distributed Switch Architecture support  ---> 
    <M> 802.1Q VLAN Support 
    [ ]   GVRP (GARP VLAN Registration Protocol) support 
    < > DECnet Support 
    < > ANSI/IEEE 802.2 LLC type 2 Support 
    < > The IPX protocol 
    < > Appletalk protocol support 
    < > CCITT X.25 Packet Layer (EXPERIMENTAL) 
    < > LAPB Data Link Driver (EXPERIMENTAL)   
    < > Acorn Econet/AUN protocols (EXPERIMENTAL) 
    < > WAN router 
    < > Phonet protocols family 
    < > IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support (EXPERI│ 
    [ ] QoS and/or fair queueing  --->    
    通過IPRoute 切換網絡設備上的Qos 策略,我不打算使用IP 路由 
    [ ] Data Center Bridging support   
    -*- DNS Resolver support 
    < > B.A.T.M.A.N. Advanced Meshing Protocol   
      Network testing  --->     
 
8.2、[ ]   Amateur Radio support  ---> 
    我沒有無線電 
8.3、< >   CAN bus subsystem support  --->   
8.4、< >   IrDA (infrared) subsystem support  ---> 
8.5、<M>   Bluetooth subsystem support  --->   
8.6、< >   RxRPC session sockets   
8.7、- -   Wireless  --->      
    我沒有使用無線網卡 
8.8、< >   WiMAX Wireless Broadband support  ---> 
8.9、< >   RF switch subsystem support  ---> 
    我沒有RF 切換設備 
8.10、< >   Plan 9 Resource Sharing Support (9P2000) (Experimental)  ---> 
8.11、< >   CAIF support  --->   
8.12、< >   Ceph core library (EXPERIMENTAL)   
 
9、Device Drivers  ---> 
9.1、Generic Driver Options  ---> 
9.1.1、()  path to uevent helper 
9.1.2、[ ] Maintain a devtmpfs filesystem to mount at /dev 
9.1.3、[*] Select only drivers that don't need compile-time external firmware 
9.1.4、[*] Prevent firmware from being built 
9.1.5、-*- Userspace firmware loading support 
9.1.6、[*]   Include in-kernel firmware blobs in kernel binary 
9.1.7、()    External firmware blobs to build into the kernel binary 
9.1.8、[ ] Driver Core verbose debug messages 
9.1.9、[ ] Managed device resources verbose debug messages 
    管理設備資源的冗長調試信息,我不需要 
 
9.2、<*> Connector - unified userspace <-> kernelspace linker  ---> 
內核空間與用戶空間的信道 
9.2.1、[*]   Report process events to userspace 
報告處理時間給用戶空間 
 
9.3、< > Memory Technology Device (MTD) support  ---> 
 
9.4、< > Parallel port support  ---> 
 
9.5、-*- Plug and Play support  ---> 
    [ ]   PNP debugging messages 
    調試信息,老規矩 
9.6、[ ] Block devices  --->   
我沒有想要支持的塊設備,比如ramdisk , 磁盤陣列,CD/DVD 刻錄等,詳見內部選項 
 
9.7、[ ] Misc devices  ---> 
沒有需要支持的雜項設備 
 
9.8、< > ATA/ATAPI/MFM/RLL support (DEPRECATED)  --->   
 
9.9、SCSI device support  --->   
< > RAID Transport Class  
-*- SCSI device support  
[] legacy /proc /scsi / support <=== 我沒有SCSI 設備  
*** SCSI support type (disk, tape, CD-ROM) ***  
<*> SCSI disk support // 就算你用SATA ,此選項也必選  
< > SCSI tape support  
< > SCSI OnStream SC-x0 tape support  
<> SCSI CDROM support <=== 我沒有SCSI 設備  
<> SCSI generic support <=== 我沒有SCSI 設備  
< > SCSI media changer support  
[ ] Probe all LUNs on each SCSI device  
[] Verbose SCSI error reporting (kernel size +=12K) <=== 我沒有SCSI 設備  
[ ] SCSI logging facility  
[ ] Asynchronous SCSI scanning  
SCSI Transports  --->  
<> Parallel SCSI (SPI) Transport Attributes <=== 我沒有SCSI 設備  
< > FiberChannel Transport Attributes  
< > iSCSI Transport Attributes  
< > SAS Domain Transport Attributes  
< > SRP Transport Attributes  
[ ] SCSI low-level drivers  --->  
< > SCSI Device Handlers  --->  
< > OSD-Initiator library  
 
9.10、<M> Serial ATA and Parallel ATA drivers  ---> 
[*]  Verbose ATA error reporting  
[*]   ATA ACPI Support  
[ ]   SATA Port Multiplier support <=== 我只有一枚SATA 設備,沒有使用 多路SATA/SATA Hub 的需求。Port Multiplier 是南橋芯片提供的一種支持多塊SATA 設備,並共享總帶寬的技術。  
<*>   AHCI SATA support  
< >      Platform AHCI SATA support  
< >      Inito 162x SATA support  
< >   Silicon Image 3124/3132 SATA support  
[*]   ATA SFF support // 選擇自己硬件對應的驅動即可  
< >     ServerWorks Frodo / Apple K2 SATA support  
<*>     Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support // Intel ICH ,G 系列chipset driver  
< >     Marvell SATA support   
< >     NVIDIA SATA support    
< >     Pacific Digital ADMA support                    
< >     Pacific Digital SATA QStor support              
< >     Promise SATA TX2/TX4 support                    
< >     Silicon Image SATA support                      
< >     SiS 964/965/966/180 SATA support                
< >     ULi Electronics SATA support                    
< >     VIA SATA support       
< >     VITESSE VSC-7174 / INTEL 31244 SATA support     
< >     Initio 162x SATA support                        
< >     ACPI firmware driver for PATA                   
< >     ALi PATA support       
< >     AMD/NVidia PATA support <=== 我用的是SATA ,取消PATA 支持  
< >     ARTOP 6210/6260 PATA support                    
< >     ATI PATA support       
< >     CMD64x PATA support    
< >     CS5510/5520 PATA support                        
< >     CS5530 PATA support  
< >     CS5536 PATA support                              
< >     EFAR SLC90E66 support                           
< >     Generic ATA support                             
< >     HPT 366/368 PATA support                        
< >     HPT 343/363 PATA support                        
< >      IT8211/2 PATA support                           
< >     JMicron PATA support                            
< >     Compaq Triflex PATA support                     
< >     Marvell PATA support via legacy mode            
<>     Intel PATA MPIIX support <=== 我用的是SATA ,取消PATA 支持  
< >     Intel PATA old PIIX support <=== 我用的是SATA ,取消PATA 支持  
< >     NETCELL Revolution RAID support                 
< >     Nat Semi NS87410 PATA support                   
< >     Nat Semi NS87415 PATA support                   
< >     Older Promise PATA controller support           
< >     PC Tech RZ1000 PATA support                     
< >     SC1200 PATA support                             
< >     SERVERWORKS OSB4/CSB5/CSB6/HT1000 PATA support  
< >     Promise PATA 2027x support                       
< >     CMD / Silicon Image 680 PATA support            
< >     SiS PATA support                                
< >     VIA PATA support                                
< >     Winbond SL82C105 PATA support                   
< >     Intel SCH PATA support <=== 我用的是SATA ,取消PATA 支持 
 
9.11、[ ] Multiple devices driver support (RAID and LVM)  ---> 
暫時沒有要使用Raid (磁盤陣列)和LVM (邏輯卷管理器,添加,刪除邏輯分區)的需求 
 
9.12、[ ] Fusion MPT device support  ---> 
 
9.13、IEEE 1394 (FireWire) support  ---> 
 
9.14、< > I2O device support  ---> 
 
9.15、[ ] Macintosh device drivers  ---> 
 Mac 系統硬件設備驅動,沒什麼好說的,關 
 
9.16、-*- Network device support  --->     
    < >   Dummy net driver support                          
< >   Bonding driver support                            
< >   EQL (serial line load balancing) support          
< >   Universal TUN/TAP device driver support           
< >   Virtual ethernet pair device                      
< >   General Instruments Surfboard 1000                
< >   ARCnet support  --->    
-*-   PHY Device support and infrastructure  ---> <=== PHY ( 物理層控制芯片)  ,裏面沒有我對應的硬件  
[ ]   Ethernet (10 or 100Mbit)  ---> <=== 如果你是百 M 卡,請自行選擇  
[*]   Ethernet (1000 Mbit)  ---> // 選擇自己對應的硬件  
[ ]   Ethernet (10000 Mbit)  ---> <=== 如果你是萬M 卡,請自行選擇  
<>   Token Ring driver support  ---> <=== IBM 的令牌環網,用以太網的忽略  
[ ]      Wireless LAN  --->   <=== 不用無線網絡  
      *** Enable WiMAX (Networking options) to see the WiMAX drivers ***   
      USB Network Adapters  --->              
[ ]   Wan interfaces support  --->                       
<>   FDDI driver support <=== 光纖卡驅動,相信沒幾個人能用上這玩意  
< >   PPP (point-to-point protocol) support             
< >   SLIP (serial line) support                        
[ ]   Fibre Channel driver support  
[ ]    Network console logging support  
[ ]    VMware VMXNET3 ethernet driver  
 
 
9.17、[ ] ISDN support  ---> 
 
9.18、< > Telephony support  ---> 
9.19、Input device support  --->  
-*- Generic input layer (needed for keyboard, mouse, ...)  
-*-   Support for memoryless force-feedback devices     
<>   Polled input device skeleton  <=== 一種週期性輪詢硬件狀態的驅動,去掉後沒什麼副作用  
      *** Userland interfaces ***                       
-*-   Mouse interface  
[ ]     Provide legacy /dev /psaux device   
(1024)  Horizontal screen resolution                    
(768)   Vertical screen resolution                      
< >   Joystick interface                                
<*>   Event interface  // 將輸入設備的事件存儲到/dev /input/eventX 供應用程序讀取  
< >   Event debugging                                   
      *** Input Device Drivers ***                      
-*-   Keyboards  --->  
[*]   Mice  --->                                
[]   Joysticks/Gamepads  --->  <=== 遊戲設備  
[]   Tablets  ---> <=== 平板PC  
[]   Touchscreens  --->   <=== 觸摸屏  
[]   Miscellaneous devices  ---> <=== 雜七雜八的驅動,揚聲器,筆記本擴展按鍵等  
Hardware I/O ports  --->  
 
9.20、Character devices  ---> 
-*- Virtual terminal           
[*]   Support for binding and unbinding console drivers // 在某些系統上可以使用多個控制檯驅動程序( 如framebuffer 控制檯驅動程序), 該選項使得你可以選擇其中之一 ,我一般只用默認的虛擬終端  
[] /dev /kmem virtual device support  <=== 支持/dev /kmem 設備,很少用       
[] Non-standard serial port support  <=== 我沒有非標準的串口設備  
  Serial drivers  --->  
< > 8250/16550 and compatible serial support <=== 兼容一些老式的串口設備,我一般不用  
    *** Non-8250 serial port support ***  
< > Digi International NEO PCI Support  
-*- Unix98 PTY support         
[ ]   Support multiple instances of devpts               
[ ] Legacy (BSD) PTY support   
< > IPMI top-level message handler  --->                 
<*> Hardware Random Number Generator Core support       
< >   Timer IOMEM HW Random Number Generator support    
<*>   Intel HW Random Number Generator support      
<>   AMD HW Random Number Generator support  <=== 我是intel 主板  
    < >   AMD Geode HW Random Number Generator support <=== 我是intel 主板  
<>   VIA HW Random Number Generator support <=== 我是intel 主板       
<> /dev /nvram support  <=== 直接存取CMOS ,太危險,關  
< > Siemens R3964 line discipline  
< > Applicom intelligent fieldbus card support          
< > ACP Modem (Mwave ) support  
< > NatSemi PC8736x GPIO Support                        
< > NatSemi Base GPIO Support  
< > AMD CS5535/CS5536 GPIO (Geode Companion Device)     
< > RAW driver (/dev /raw/rawN )  
[*] HPET - High Precision Event Timer                
[ ]   Allow mmap of HPET       
< > Hangcheck timer  
 
9.21、{M} I2C support  ---> 
感知硬件狀態,比如溫度,風扇轉速 
 
9.22、[ ] SPI support  --->    
 
9.23、PPS support  ---> 
 
9.24、[ ] GPIO Support  ---> 
 
9.25、{*} Power supply class support  ---> 
 
9.26、{*} Hardware Monitoring support  ---> 
 
9.27、-*- Generic Thermal sysfs driver  ---> 
 
9.28、[*] Watchdog Timer Support  ---> 
系統監視程序,我一般不用 
 
9.29、Sonics Silicon Backplane  ---> 
 
9.30、< > Multimedia support  --->   
 
9.31、[ ] Voltage and Current Regulator Support  --->   
 
9.32、< > Multimedia support  ---> 
    < > /dev /agpgart (AGP Support)  ---> < --- virtualbox不支持虛擬獨立顯卡  
-*-  VGA arbitration  
(16) Maximium number of GPU  
[ ] Latop Hybird Graphics – GPU switch support             
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  --->  
<> Lowlevel video output switch controls   
<> Support for frame buffer devices  --->  
[ ] Backlight & LCD device support  --->   < --- 支持背光設置,比如pda等。我用不到  
    Display device support  --->    
    Console display driver support  --->     
[ ]   Enable Scrollback Buffer in System RAM  
 
9.33、< > Sound card support  ---> 
用不到聲卡 
 
9.34、[ ] HID Devices  ---> 
用不到人力工程學設備 
 
9.35、[] USB support  --->   <=== 這個選項,對於跑物理機建議 開啓,因爲有可能你的鍵盤是USB 的,我是跑虛擬機的,所以關了  
 
9.36、< > MMC/SD/SDIO card support  --->     
 
9.37、< > Sony MemoryStick card support (EXPERIMENTAL)  --->  
 
9.38、[] LED Support  --->   <=== 發光二級管,應該是跟顯示器相關的驅動,由於我運行 的是虛擬機,所以我選擇關閉  
 
9.39、[ ] Accessibility support  --->  
 
9.40、< > InfiniBand support  --->    
9.41、[*] EDAC (Error Detection And Correction) reporting  ---> // 硬件故障repoting  
 
9.42、<*> Real Time Clock  --->  
 
9.43、[*] DMA Engine support  --->    
 
9.44、[ ] Auxiliary Display support  --->                      
 
9.45、< > Userspace I/O drivers  --->                          
  
9.46、TI VLYNQ  --->              
 
9.47、[ ] Staging drivers  --->       
 
9.48、[] X86 Platform Specific Device Drivers  ---> <=== 一些筆記本的驅動,我沒有相關設備 
 
 
10、Firmware Drivers  --->  
< > BIOS Enhanced Disk Drive calls determine boot disk  
< > BIOS update support for DELL systems via sysfs       
< > Dell Systems Management Base Driver                 
[*] Export DMI identification via sysfs to userspace    // 將BIOS 裏的DMI 區信息導出到用戶空間,部分系統管理工具可能會用到  
[ ] iSCSI Boot Firmware Table Attributes  
   
11、File systems  --->  
< > Second extended fs support  
<> Ext3 journalling file system support <=== 我使用的是ext4 FS  
<*> The Extended 4 (ext4) filesystem  
[ ]   Enable ext4dev compatibility                      
[*]   Ext4 extended attributes  
[*]     Ext4 POSIX Access Control Lists  
[]     Ext4 Security Labels  <=== 取消 SELinux 支持  
[ ] JBD (ext3) debugging support  
[ ] JBD2 (ext4) debugging support                       
< > Reiserfs support           
< > JFS filesystem support     
< > XFS filesystem support     
< > OCFS2 file system support  
[*] Dnotify support                     
[*] Inotify support for userspace                        
[] Quota support <=== 磁盤配額支持 , 限制某個用戶或者某組用戶的磁盤佔用空間,暫時沒這個需求,你可以把它編譯成模塊  
< > Kernel automounter support  
<*> Kernel automounter version 4 support (also supports v3)  
< > FUSE (Filesystem in Userspace ) support  
    Caches  --->    
    CD-ROM/DVD Filesystems   --->    
<> ISO 9660 CDROM file system support  <=== 在虛擬機內,我不用CDROM                 
< > UDF file system support  
    DOS/FAT/NT Filesystems   --->  
< > MSDOS fs support <=== 我沒有微軟fs 的設備  
< > VFAT (Windows-95) fs support  <=== 我沒有微軟fs 的設備  
< > NTFS file system support  
    Pseudo filesystems   --->    
[] Miscellaneous filesystems   ---> <=== 如果你沒有其他FS 的支持需求,關  
[*] Network File Systems  ---> <=== 如果你沒有NFS 的支持需求,關  
    Partition Types  --->       
[ ] Advanced partition selection <=== 如果不是和其他系統共存,可以不選  
-*- Native language support  ---> // 選上Chinese  
   
12、Kernel hacking  
[] Show timing information on printks   <=== 在printk 的輸出中包含時間信息, 可以用來分析內核啓動過程各步驟所用時間 , 我不需要debug 內核  
[ ] Enable __deprecated logic                           
[*] Enable __must_check logic                           
(2048) Warn for stack frames larger than (needs gcc 4.4)  
[] Magic SysRq key <=== 一種通過快捷鍵控制系統方式,除非你非常清楚這個選項,官方不推薦選擇  
[ ] Enable unused/obsolete exported symbols             
[ ] Debug Filesystem  
[ ] Run 'make headers_check ' when building vmlinux       
[ ] Kernel debugging <=== 內核調試,關                      
[ ] Enable SLUB performance statistics                                                                             
[] Compile the kernel with frame pointers  <=== 還是跟內核開發有關  
[ ] Delay each boot printk message by N milliseconds    
< > torture tests for RCU                                
[ ] Check for stalled CPUs delaying RCU grace periods   
< > Self test for the backtrace code                    
[ ] Force extended block device numbers and spread them  
[ ] Fault-injection framework                           
[ ] Latency measuring infrastructure                    
[*] Sysctl checks  
[] Tracers  --->  
[] Remote debugging over FireWire early on boot  <=== 啓動過程中,允許遠程調試內核  
[ ] Enable dynamic printk ( ) support  
[ ] Enable debugging of DMA-API usage  
[ ] Sample kernel code  --->                             
[ ] Filter access to /dev /mem  
[] Enable verbose x86 bootup info messages <=== 在內核鏡像解壓縮階段輸出啓動信息,關閉後相當於無聲啓動(Slient Bootup )  
-*- Early printk    
[]   Early printk via EHCI debug port  <=== 允許printk 通過EHCI 調試端口輸出內核日誌,調試的一律關  
[ ] Use 4Kb for kernel stacks instead of 8Kb  
[ ] Enable IOMMU stress-test mode  
    IO delay type (port 0x80 based port-IO delay [recommended])  --->     
[*] Allow gcc to uninline functions marked 'inline'  
   
13、Security options  
安全特性,我選擇全關,當然,這些選項不會影響你的日常開發,辦公  
[] Enable access key retention support <=== 關閉  
[] Enable different security models <=== 關閉  
[ ] Enable the securityfs filesystem  
[] File POSIX Capabilities <=== 關閉  
[ ] Integrity Measurement Architecture( IMA)  
   
< > Cryptographic API  ---> // 加密API ,這部分選項會根據此前的優化自動調整,默認即可  
14、[] Virtualization 
我的系統已經運行在虛擬機中,不需要再支持虛擬化  
15、Library routines  --->  
庫子程序,這部分選項會根據此前的優化自動調整,默認即可 
 
 
 
 
 
 
 
 
 
 
內核的編譯  
    在完成內核的裁減之後,內核的編譯就是一個非常簡單的過程。你只要執行以下幾條命令就行:  
1、 make clean   
這條命令是在正式編譯你的內核之前先把環境給清理乾淨。有時你也可以用 make realclean或 make mrproper 來徹底清除相關依賴,保證沒有不正確的.o 文件存在。  
2 、make dep  
這條命令是編譯相關依賴文件。  
3 、make zImage  
這條命令就是最終的編譯命令。有時你可以直接用 make(2.6.X 版本上用)或 make bzImage(給 PC 機編譯大內核時用)  
4、 make install  
這條命令可以把相關文件拷貝到默認的目錄。當然在給嵌入式設備編譯時這步可以不要。因爲具體的內核安裝還需要你手工進行。  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章