1. 程式人生 > >linux 內核配置參考

linux 內核配置參考

emp toc href pen 內部 效率 rime 寫入 wire

對於每一個配置選項,用戶可以回答"y""m""n"。其中"y"表示將相應特性的支持或設備驅動程序編譯進內核;"m"表示將相應特性的支持或設備驅動程序編譯成可加載模塊,在需要時,可由系統或用戶自行加入到內核中去;"n"表示內核不提供相應特性或驅動程序的支持。只有<>才能選擇M

1. General setup(通用選項)

[*]Prompt for development and/or incomplete code/drivers,設置界面中顯示還在開發或者還沒有完成的代碼與驅動,最好選上,許多設備都需要它才能配置。

[ ]Cross-compiler tool prefix,交叉編譯工具前綴,如果你要使用交叉編譯工具的話輸入相關前綴。默認不使用。嵌入式Linux更不需要。

[ ]Local version - append to kernel release,自定義版本,也就是uname -r可以看到的版本,可以自行修改,沒多大意義。

[ ]Automatically append version information to the version string,自動生成版本信息。這個選項會自動探測你的內核並且生成相應的版本,使之不會和原先的重復。這需要Perl的支持。由於在編譯的命令make-kpkg 中我們會加入- append-to-version 選項來生成自定義版本,所以這裏選N

Kernel compression mode (LZMA),選擇壓縮方式。

[ ]Support for paging of anonymous memory (swap),交換分區支持,也就是虛擬內存支持,嵌入式不需要。

[*]System V IPC,為進程提供通信機制,這將使系統中各進程間有交換信息與保持同步的能力。有些程序只有在選Y的情況下才能運行,所以不用考慮,這裏一定要選。

[*]POSIX Message Queues,這是POSIX的消息隊列,它同樣是一種IPC(進程間通訊)。建議你最好將它選上。

[*]BSD Process Accounting,允許進程訪問內核,將賬戶信息寫入文件中,主要包括進程的創建時間/創建者/內存占用等信息。可以選上,無所謂。

[*]BSD Process Accounting version 3 file format,選用的話統計信息將會以新的格式(V3)寫入,註意這個格式和以前的 v0/v1/v2 格式不兼容,選不選無所謂。

[ ]Export task/process statistics through netlink (EXPERIMENTAL),通過通用的網絡輸出工作/進程的相應數據,和BSD不同的是,這些數據在進程運行的時候就可以通過相關命令訪問。和BSD類似,數據將在進程結束時送入用戶空間。如果不清楚,選N(實驗階段功能,下同)。

[ ]Auditing support,審計功能,某些內核模塊需要它(SELINUX),如果不知道,不用選。

[ ]RCU Subsystem,一個高性能的鎖機制RCU 子系統,不懂不了解,按默認就行。

[ ]Kernel .config support,將.config配置信息保存在內核中,選上它及它的子項使得其它用戶能從/proc/ config.gz中得到內核的配置,選上,重新配置內核時可以利用已有配置

Enable access to .config through /proc/config.gz,上一項的子項,可以通過/proc/ config.gz訪問.config配置,上一個選的話,建議選上。

(16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,內核日誌緩存的大小,使用默認值即可。12 => 4 KB13 => 8 KB14 => 16 KB單處理器,15 => 32 KB多處理器,16 => 64 KB17 => 128 KB

[ ]Control Group support(有子項),使用默認即可,不清楚可以不選。

Example debug cgroup subsystem,cgroup子系統調試例子

Namespace cgroup subsystem,cgroup子系統命名空間

Device controller for cgroups,cgroups設備控制器

Cpuset support,只有含有大量CPU(大於16)SMP系統或NUMA(非一致內存訪問)系統才需要它。

[ ]enable deprecated sysfs features to support old userspace tools,在某些文件系統上(比如debugfs)提供從內核空間向用戶空間傳遞大量數據的接口,一般不選。

[ ]Kernel->user space relay support (formerly relayfs),內核系統區和用戶區進行傳遞通訊的支持,這個選項在特定文件系統(relayfs)中提供數據接口支持,它可以支持從內核空間到用戶空間的大批量數據傳遞的支持。不清楚可以不選。

[ ]Namespaces support,(有子項)命名空間支持,允許服務器為不同的用戶信息提供不同的用戶名空間服務,不清楚可以不選。

[ ]Initial RAM filesystem and RAM disk (initramfs/initrd) support,初始RAM的文件和RAM磁盤( initramfs /initrd)支持(如果要采用initrd啟動則要選擇,否則可以不選),不需要,不用選。嵌入式linux一般不選。

[ ]Optimize for size,優化大小,-Os代替-O2參數,可能會有二進制錯誤問題,一般不選。

0)Default panic timeout,添0即可。

[*]Configure standard kernel features (for small systems),特殊內核用到,可以不選,嵌入式linux則必選。

[ ]Enable the Anonymous Shared Memory Subsystem,啟用匿名共享內存子系統,不清楚可以不選。

[ ]Enable AIO support,支持AIO(Asynchronous I/O 異步事件非阻塞I/O),(包含aio.h, aio_read,向內核發出讀命令,aio_write向內核寫命令,詳細見‘AIO介紹‘文檔),AIO機制為服務器端高並發應用程序提供了一種性能優化的手段。加大了系統吞吐量,所以一般用於大型服務器,一般不用選。

[ ]Kernel Performance Events And Counters(有子項),不清楚,不選。

[*]Enable VM event counters for /proc/vmstat,允許在/proc/vmstat中包含虛擬內存事件記數器。

[*]Enable SLUB debugging support,支持SLUB內存分配管理器調試,

[ ]Disable heap randomization,禁用隨即head,選不選均可。

Choose SLAB allocator (SLUB (Unqueued Allocator)) --->, 選擇內存分配管理器,強烈推薦使用SLUB

[ ]Profiling support,剖面支持,用一個工具來掃描和計算計算機的剖面圖,支持系統測評,一般開發人員使用,不選。

[ ]Kprobes,調試人員使用,不選。

GCOV-based kernel profiling --->(有子項),默認即可。

2. Enable loadable module support(可加載模塊)

[ ]Forced module loading, 強行加載模塊,不建議選。

[*]Module unloading,支持模塊卸載,必須選上。

[ ]Forced module unloading,強行卸載模塊,即使內核認為這樣並不安全,也就是說你可以把正在使用中的模快卸載掉。如果你不是內核開發人員或者骨灰級的玩家,不建議選。

[ ]Module versioning suppor,這個功能可以讓你使用其它版本的內核模塊,除非特殊需要,一般不選。

[ ]Source checksum for all modules,這個功能是為了防止更改了內核模塊的代碼但忘記更改版本號而造成版本沖突,現在很少使用,不選。

3. Enable the block layer(塊設備層)

[*]Support for large (2TB+) block devices and files,僅在使用大於2TB的塊設備時需要

[*]Block layer SG support v4,通用SCSI設備第四版支持。

[*]Block layer data integrity support,塊設備數據完整性支持。

[*]IO Schedulers --->(有子項),IO調度器

[ ]Anticipatory I/O scheduler,搶先式I/O調度器,大多數塊設備只有一個物理查找磁頭(例如一個單獨的SATA硬盤),將多個隨機的小寫入流合並成一個大寫入流,用寫入延時換取最大的寫入吞吐量.適用於大多數環境,特別是寫入較多的環境(比如文件服務器)

[ ]Deadline I/O scheduler,期限式I/O調度器,輪詢的調度器,簡潔小巧,提供了最小的讀取延遲和尚佳的吞吐量,特別適合於讀取較多的環境(比如數據庫)

[ ]CFQ I/O scheduler,使用QoS策略為所有任務分配等量的帶寬,避免進程被餓死並實現了較低的延遲,可以認為是上述兩種調度器的折中.適用於有大量進程的多用戶系統CFQ調度器嘗試為所有進程提供相同的帶寬。它將提供平等的工作環境,對於桌面系統很合適。

Default I/O scheduler (CFQ) --->默認IO調度器有上面三個IO調度器:搶先式是傳統的,它的原理是一有響應,就優先考慮調度。如果你的硬盤此時在運行一項工作,它也會暫停下來先響應用戶。期限式則是:所有的工作都有最終期限,在這之前必須完成。當用戶有響應時,它會根據自己的工作能否完成,來決定是否響應用戶。CFQ則是平均分配資源,不管你的響應多急,也不管它的工作量是多少,它都是平均分配,一視同仁的。

4. System Type(arm 占用配置,一般是廠家提供,與第7項代替了原有的Processor type and features)

5. [ ]FIQ Mode Serial Debugger,一般不選。

6. Bus support(總線支持)

PCI support,PCI總線支持,主板上最長用的插槽,最好選上,arm linux可以不選,arm一般沒有PCI總線。

PCCard (PCMCIA/CardBus) support,一般筆記本有這種插槽,筆記本選上,arm linux 不選。

7. Kernel Features(內核特征)

[ ] Tickless System (Dynamic Ticks),非固定平率系統,能讓內核運行的更有效率,並且省電,pc下可選,特別是筆記本,arm linux一般不用選。

[ ] High Resolution Timer Support,支持高頻率時間發生器,需要硬件兼容,但大多數PCARM都不支持,不選

Memory split (2G/2G user/kernel split) --->,內核與用戶空間各占2G,內核空間0-0x7FFFFFFF,用戶空間80000000-FFFFFFFF

Preemption Model (No Forced Preemption (Server)) --->,內核搶占模式。普通PC用戶一般選2arm linux 1就可以。

No Forced Preemption (Server),禁止內核搶占,適合服務器環境。針對於高吞吐量的設計,但有可能延時較長,適用於服務器或科學運算,或向要最大的運算能力,而不理會調度上的延時。

Voluntary Kernel Preemption (Desktop),自願內核搶占,適合普通的桌面環境。已降低吞吐量為代價,降低內核調度的最大延時,提供更快的應用程序響應,即使系統已經高負荷運轉,應用程序仍然能運行的很“流暢”,適合用戶桌面環境

Preemptible Kernel (Low-Latency Desktop),主動內核搶占,適合運行實時程序的環境。更低的吞吐量,進一步降低內核的調度延時,使應用程序更加流暢。

[ ]Compile the kernel in Thumb-2 mode,編譯Thumb-2 mode內核,一般不選

[*] Use the ARM EABI to compile the kernel,與下面綁定配置。

[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL),對於嵌入式系統(jffs2 yaffs2),這兩個要選上,否則很可能啟動的時候報錯(kernel panic- not syncing: Attempted to kill init!

[ ] High Memory Support (EXPERIMENTAL)(有子項), 1G物理內存以下不選,超過1G才選。(配置略有變化,以前的選項是OFF<1G,4G(>1G && <4G),64G(>4G))。

Allocate 2nd-level pagetables from highmem,1G物理內存以下不選,超過1G(小於4G)才選

Allocate 3nd-level pagetables from highmem,大於4G,選擇此項目。

Memory model (Flat Memory) --->,一般選"Flat Memory",其他選項涉及內存熱插拔。

[ ] Enable KSM for page merging,允許linux內核識別出包含相同內容的內存頁,然後合並這些內存頁,將數據整合在一個位置可以多次引用,特殊功能,不用選。

(4096) Low address space to protect from user allocation,默認4096即可

[ ] Use kernel mem{cpy,set}() for {copy_to,clear}_user() (EXPERIMENTAL),不清楚可以不選。

----------------- ----------------- ----------------- -----------------

附:yaffs2 文件系統:Kernel panic - not syncing: Attempted to kill init!

在內核掛載根文件系統時,提示Kernel panic - not syncing: Attempted to kill init!的解決方法:

方法1

Kernel Features --->

[*] Use the ARM EABI to compile the kernel

[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)

方法2

修改busyboxMakefile

修改

CC=$(CROSS_COPILE)gcc

CC=$(CROSS_COPILE)gcc -march=armv4t

一般海思編譯器選擇此選項,linux-gcc-3.4.5 以下的編譯器,不用選,如果用4.3.3(支持EABI的編譯器)以上的最好選上。

8. Boot options

一般不需要配置,u-boot會把啟動參數傳遞給內核。如果bootloader沒有傳參數,可以配置啟動參數,類似下面這樣:

(0x0) Compressed ROM boot loader base address

(0x0) Compressed ROM boot loader BSS address

(mem=32M console=ttySAC0 root=/dev/ram initrd=0x30800000,4M ramdisk_size=4096 rw) Default kernel command string

9. CPU Power Management

[ ] CPU idle PM support,允許軟件控制的空閑進程電源管理,arm linux一般不用選。

10. Floating point emulation(浮點運算,(arm專用)arm是否支持硬浮點協處理器,支持的話選擇VFP,不支持選擇NWFPE)

[ ] NWFPE math emulation

[ ] FastFPE math emulation (EXPERIMENTAL)

[*] VFP-format floating point maths

[ ] Advanced SIMD (NEON) Extension support

10. Userspace binary formats(二進制支持)

[*] Kernel support for ELF binaries,必須選,否則內核可能不能啟動,其他可以全部不選,

[ ] Write ELF core dumps with partial segments

< > Kernel support for a.out and ECOFF binaries

< > Kernel support for MISC binaries

11. Power management options(電源管理)

一般用於筆記本,PCarm可以不選。

[*] Power Management support,選擇此項,下面的項才能可見

[ ] Power Management Debug Support,調試用,不用選

[*] Suspend to RAM and standby,待機到內存,即內存供電而暫時關閉硬盤等外設。

< > Advanced Power Management Emulation,高級電源管理,

[ ] Run-time PM core functionality,允許對運行中接入的I/O設備進行電源管理。

12. Networking support,(協議層的網絡支持,socket等,硬件層的支持在Device Drivers中配置)

Networking options --->,網絡選項

<*> Packet socket,這種socket能夠讓應用程序(tcpdumpiptables)直接與網絡設備通訊,而不通過內核中的其他中介協議,最好選上。

<*> Unix domain sockets,一種僅運行於本機上的效率高於TCP/IP socket,簡稱Unix socket.許多程序都使用它在操作系統內部進行進程間通信(IPC),比如X Window syslog,最好選上。

< > Transformation user configuration interface,為IPsec(可在ip層加密)之類的工具提供XFRM 用戶配置接口支持,不清楚可以不選。

[ ] Transformation sub policy support (EXPERIMENTAL),XFRM子策略支持,僅供開發者使用,不清楚不要選。

[ ] Transformation migrate database (EXPERIMENTAL),

[ ] Transformation statistics (EXPERIMENTAL),

< > PF_KEY sockets,用於可信任的密鑰管理程序和操作系統內核內部的密鑰管理進行通信,IPsec也依賴於它,可以不選。

[ ] PF_KEY MIGRATE (EXPERIMENTAL),子項,不用選。

[*] TCP/IP networking,TCP/IP協議,必須要選

[*] IP: multicasting,群組廣播,選上

[] IP: advanced router,高級路由功能,做路由器的話選上,可以不選。

Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH),子項,不懂的話就選FIB_HASH吧

[ ] IP: policy routing,策略路由,不清楚可以不選。

[ ] IP: equal cost multipath,用於路由的基於目的地址的均衡。不清楚可以不選。

[ ] IP: verbose route monitoring,顯示冗余的路由監控信息,可以不選

[ ] IP: kernel level autoconfiguration,內核啟動時自動配置IP地址、路由表等,需要從網絡啟動的無盤工作站需要這個,普通用戶不需要。

< > IP: tunneling,IP隧道,將一個IP報文裝在另一個IP報文的技術。不清楚不用選。

< > IP: GRE tunnels over IP,基於IPGRE(通用路由封裝)隧道,不清楚可以不選。

[] IP: multicast routing,多重傳播路由,沒有特殊需求可以不選。

[ ] IP: multicast policy routing,子項,不清楚可以不選

[ ] IP: PIM-SM version 1 support,子項,不清楚可以不選

[ ] IP: PIM-SM version 2 support,子項,不清楚可以不選

[ ] IP: ARP daemon support,廢棄功能,不選。

[ ] IP: TCP syncookie support,抵抗SYN flood攻擊的好東西,要啟用它必須同時啟用/proc文件系統和"Sysctlsupport", 然後在系統啟動並掛載了/proc 之後執行"echo 1>/proc/sys/net/ipv4/tcp_syncookies"命令,不清楚可以不選。

< > IP: AH transformation,IPsec驗證頭(AH),實現了數據發送方的驗證處理,可確保數據既對於未經驗證的站點不可用也不能在路由過程中更改,不清楚可以不選。

< > IP: ESP transformation,IPsec封閉安全負載(ESP),實現了發送方的驗證處理和數據加密處理,用以確保數據不會被攔截/查看或復制。不清楚可以不選。

< > IP: IPComp transformation,IPComp(IP靜荷載壓縮協議),用於支持IPsec,不清楚可以不選。

< > IP: IPsec transport mode,IPsec傳輸模式,常用於對等通信,用以提供內網安全.數據包經過了加密但IP頭沒有加密,因此任何標準設備或軟件都可查看和使用IP頭,不清楚可以不選。

< > IP: IPsec tunnel mode,IPsec隧道模式,用於提供外網安全(包括虛擬專用網絡).整個數據包(數據頭和負載)都已經過加密處理且分配有新的ESP /IP 頭和驗證尾,從而能夠隱藏受保護站點的拓撲結構,不清楚可以不選。

< > IP: IPsec BEET mode,IPsec BEET模式,不清楚可以不選。

[*] Large Receive Offload (ipv4/tcp),針對 TCP 流量的 LRO (Large Receive Offload) 支持,選上。

<*> INET: socket monitoring interface,socket監視接口,一些Linux 本地工具(:包含ssiproute2)需要使用它,選上

[] TCP: advanced congestion control --->,高級擁塞控制,如果沒有特殊需求(比如無線網絡)就別選了,內核會自動將默認的擁塞控制設為"Cubic"並將"Reno"作為候補,可以不選。如果網絡用處較多,還是選上為好(如網絡視頻服務器)。 關於擁塞控制,見tcp擁塞控制.doc文檔。

[ ] TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL),不清楚可以不選。

<*> The IPv6 protocol --->,IPV6支持的話,就選上,

[*] Only allow certain groups to create sockets,只允許特定的群體創建socket,選上,沒什麽壞處。

[*] Network activity statistics tracking,最好選上。

…….網絡選項中,後面的不清楚的話 可以不選,選上基本幾項,網絡就可以工作了,有時間進一步深入研究。

-*- Wireless --->(無線,沒有無線網卡的話可以不選)

<*> cfg80211 - wireless configuration API,暫時未會,使用默認配置

13. Device Drivers(設備驅動)

Generic Driver Options --->,通用選項

(/sbin/mdev) path to uevent helper,不理解,用的默認值

[ ] Maintain a devtmpfs filesystem to mount at /dev,讓devtmpfs文件系統安裝在/dev,不清楚可以不選。

[*] Select only drivers that don‘t need compile-time external firmware,只顯示那些不需要內核對外部設備的固件作map支持的驅動程序,除非你有某些怪異硬件,否則請選上。

[ ] Prevent firmware from being built,不編譯固件(固化的軟件,如bios.固件一般是隨硬件的驅動程序提供的,僅在更新固件的時候才需要重新編譯。可以不選,但想要更新固件的話就要重新編譯內核了。

{*} Userspace firmware loading support,提供某些內核之外的模塊需要的用戶空間固件加載支持,在內核樹之外編譯的模塊可能需要它,選上。

[*] Include in-kernel firmware blobs in kernel binary

() External firmware blobs to build into the kernel binary

< > Connector - unified userspace <-> kernelspace linker --->,用戶空間和內核空間連接器,工作在netlink socket協議的頂層,不清楚可以不選。

<*> Memory Technology Device (MTD) support --->,特殊的存儲技術,如常用語數碼相機或嵌入式系統的閃存卡,一般是NOR flashNand的支持,arm linux必選,PC不用選。

[ ] Debugging,調試模式,不選。

< > MTD tests support,MTD測試支持,不清楚可以不選。

< > MTD concatenating support,連接多個MTD設備,例如使用JFFS2文件系統管理多片Flash的情形。只有一片Flash時不選。

[*] MTD partitioning support,分區支持,選上。

< > RedBoot partition table parsing,使用RedBoot解析Flash分區表,如果需要讀取這個分區表的信息選擇此項

[*] Command line partition table parsing,允許通過內核命令行傳遞MTD分區表信息,

< > ARM Firmware Suite partition parsing,使用AFS分區信息

< > TI AR7 partitioning support,AR7分區支持

<*> Direct char device access to MTD devices,將系統中的MTD設備看做字符設備進行讀寫,需要與驅動同步的。

-*- Common interface to block layer for MTD ‘translation layers‘

<*> Caching block device access to MTD devices,文件系統掛載後,模擬塊設備進行訪問。常用於只讀文件系統。如果是DiskOnChip使用NFTL方式。

< > FTL (Flash Translation Layer) support,提供對Flash翻譯層支持,可以不選

< > NFTL (NAND Flash Translation Layer) support,NAND Flash翻譯層支持,可以不選

< > INFTL (Inverse NAND Flash Translation Layer) support,提供INFTL支持,DiskOnChip使用

< > Resident Flash Disk (Flash Translation Layer) support,提供RFD支持,為嵌入式系統提供類似BIOS功能,不清楚可以不選,使用Uboot驅動的話也不用選。

< > NAND SSFDC (SmartMedia) read only translation layer,NAND SSFDC只讀翻譯層,不清楚可以不選。

< > SmartMedia/xD new translation layer,不清楚可以不選。

< > Log panic/oops to an MTD buffer,MTD緩沖日誌,不清楚可以不選。

RAM/ROM/Flash chip drivers --->,RAM/ROM/Flash芯片驅動,不清楚可以不選。

Mapping drivers for chip access --->,為芯片的訪問方式選擇Mapping驅動,不清楚可以不選。

Self-contained MTD device drivers --->,自身包含MTD設備驅動,一般不選。

< > Include chip ids for known NAND devices.,NAND flash信息,不用選。

< > NAND Device Support --->,Nand設備支持,有nand的話選上,子項默認配置即可,如果支持Nand,加選這一項就夠了。

< > OneNAND Device Support --->,One nand支持,不清楚可以不選。

LPDDR flash memory drivers --->,LPDDR Flash內存驅動,未用,不用選。

UBI - Unsorted block images --->未分類block影響,不清楚不選。

附:配置支持jffs2兩步

1) 在“memory technology devices(mtd)”選項中選擇:

<*>memory technology device(mtd)support

<*>mtd partitioning support

<*>cashing block device access to mtd devices

ram/rom/flash chip drivers--->

<*> detect flash chips by common flash interface(cfi) probe

<*> support for intel/sharp flash chips

mapping drivers for chip access--->

<*> cfi flash device in physical memory map

(0) physical start address of flash mapping

(1000000)physical length of flash mapping

(2)buswidthin octets

<*> intel strataflash device mapped on at91rm9200

這裏設置了flash芯片的起始地址、大小以及寬度,比如:起始地址為“0”,大小為“1000000”,即16mb,寬度為“2”,即16字節。然後選中自己加入的“intel strataflash device mapped on at91rm9200”這一項

2) 在“file systems”選項中選擇:

<*>joumalling flash file system v2(jffs2)support

對於其他功能,可根據自己的實際情況,進行裁減,然後保存退出,接下來編譯出操作系統內核映像。(詳細見 linux支持nor flash.txt 文檔)

< > Parallel port support --->,配置並口,如打印機,arm linux可以不用配置

< > PC-style hardware (NEW),

< > AX88796 Parallel Port (NEW),

[ ] IEEE 1284 transfer modes (NEW),

[*] Block devices --->,塊設備,一般都不用選,除非有特殊需要

< > Loopback device support,拿文件來模擬塊設備,想要mount iOS文件的話必須選上,一般不選。

< > Network block device support,網絡塊設備支持,讓PC成為網絡塊設備的客戶端。一般不選

< > Low Performance USB Block driver,低性能USB塊設備驅動程序,一般不選。

<*> RAM block device support,RAM塊設備支持,子選項保持默認就好了。

< > Packet writing on CD/DVD media,不清楚可以不選。

< > ATA over Ethernet support,不清楚可以不選。

[*] Misc devices --->,混雜設備驅動,一般不選。

< > ATA/ATAPI/MFM/RLL support (DEPRECATED) --->,不清楚可以不選。

SCSI device support --->,支持u盤的話,需要選上。

< > RAID Transport Class,不清楚可以不選。

<*> SCSI device support,支持u盤選上,子選項默認配置即可。

< > Serial ATA and Parallel ATA drivers --->,SATAPATA支持,沒有硬盤的話可以不選。

[ ] Multiple devices driver support (RAID and LVM) --->,特殊服務器管理用到,如LVM,一般用戶不會用到,不用選,

[*] Network device support --->,網絡設備支持,必選。包括前兆網卡,PPPOE等的支持。

[*] HID Devices --->,HID支持,選上

[*] USB support --->,USB支持,選上

<*> MMC/SD/SDIO card support --->,SD卡支持,選上。

……

其他選項根據需求來。在嵌入式linux中一般IIC SPIdevice都自己寫驅動,不用選。

14. File systems(文件系統)

<*> Second extended fs support,EXT2文件系統支持。

[*] Ext2 extended attribute,EXT2文件系統支持。

<*> Ext3 journalling file system support,EXT3文件系統支持,子項默認就行。

<*> The Extended 4 (ext4) filesystem ,EXT4文件系統支持,子項默認就行。

……

JFSIBM所用)文件系統等,省略,用的不多。

……

[*] Enable POSIX file locking API,使能POSIX文件鎖的API,最好選上。

[*] Dnotify support,基於目錄的文件變化的通知機制,不選nfsd起不來,比選的。

[ ] Inotify file change notification support,新式的文件體統的變化通知機制,用以替代老舊的Dnotify,選了Dnotify就不要選它了。

[*] Inotify support for userspace,用戶空間的Inotify支持,最好選上。(notify 是一個 Linux特性,它監控文件系統操作,比如讀取、寫入和創建)。

<*> FUSE (Filesystem in Userspace) support,允許在用戶空間實現一個文件系統,如果打算開發一個自己的文件系統或使用一個機遇FUSE的文件系統,最好打開。

<*> Character device in Userpace support,允許在用戶空間實現一個字符設備,

-*- Miscellaneous filesystems --->,雜項文件系統,子項很復雜,主要配置jffs2 yaffs2文件系統,一般用於嵌入式設備。

[*] Network File Systems --->,網絡文件系統,NFS等。

……

其他沒有特殊需求可以不選。

15. Kernel hacking(內核hack選項,基本上選Enable __must_check logic和Stacktrace就可以了,有需要再深入研究)

[ ] Show timing information on printks,在printk的輸出中包含時間信息,可以用來分析內核啟動過程各步驟所用時間,需要時選上。

[ ] Enable __deprecated logic,不清楚不要選。

[*] Enable __must_check logic,在編譯內核的過程中使用"必須檢查"的邏輯,禁用它將不會顯示某些警告信息,選上。

[ ] Magic SysRq key,不懂,千萬別選。

[ ] Strip assembler-generated symbols during link,,不清楚不要選。

[ ] Enable unused/obsolete exported symbols,沒用的信息符號,會使內核增大,不選.

[ ] Debug Filesystem,不是內核開發者的別選。

[ ]Run ‘make headers_check‘ when building vmlinux,在編譯內核時運行‘make headers_check‘命令檢查內核頭文件,當你修改了與用戶空間相關的內核頭文件後建議啟用該選項。

[ ] Kernel debugging,不是內核開發者的別選。

[ ] SLUB debugging on by default,不清楚不要選。

[ ] Enable SLUB performance statistics,不清楚不要選。

[*] Stacktrace,支持調用棧,用於出錯排查問題。

[ ] Debug memory initialization,調試內存初始化,不選,

[ ] Check for stalled CPUs delaying RCU grace periods ,檢查停止CPU延緩RCU的寬限期,

[ ] Latency measuring infrastructure,不清楚不要選。

[ ] Sysctl checks,不清楚不要選。

[ ] Tracers --->,不清楚不要選。

[ ] Perform an atomic64_t self-test at boot,不清楚不要選。

[ ] Sample kernel code ---> ,不清楚不要選。

[*] Enable stack unwinding support,可以不選(31沒選)。

[*] Verbose user fault messages,可以不選(31沒選)。

[ ] On-chip ETM and ETB,片上ETMETB,不清楚可以不選。

16. Security options(安全選項,一般不需要配置,)

[ ] Enable the /proc/keys file by which keys may be viewed,允許有權限的進程通過/proc/keys讀取所有的key,最好不要選。

[ ] Restrict unprivileged access to the kernel syslog,限制未經授權訪問內核日誌。

[ ] Enable different security models,允許內核選擇不同的安全模式,如果未選擇按默認處理。

[*] Enable the securityfs filesystem,不清楚可以不選(16沒選)。

Default security module (Unix Discretionary Access Controls) --->,默認安全模式。

17. Cryptographic API(支持的加密算法)

18. Library routines(庫子程序)


轉自: http://wenku.baidu.com/link?url=scHbokjqF7nK8kca00Pxrm8uaUmm7HNkgXLGaq0tNU-9T2zOrc08oZ7YJkXagD-QiGoyezaL-NNusTbqFofv9VQia3H2ZKLmVU5XX1xs6ju

linux 內核配置參考