歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 2.6.25 內核編譯配置選項簡介

Linux 2.6.25 內核編譯配置選項簡介

日期:2017/2/28 16:19:12   编辑:Linux教程

1.Code maturity level options代碼成熟度選項
1.1General setup

常規設置

1.1.1 Prompt for development and/or incomplete code/drivers

顯示尚在開發中或尚未完成的代碼與驅動.除非你是測試人員或者開發者,否則請勿選擇

1.1.2 Local version - append to kernel release

在內核版本後面加上自定義的版本字符串(小於64字符),可以用"uname -a"命令看到

1.1.3 Automatically append version information to the version string

自動在版本字符串後面添加版本信息,編譯時需要有perl以及git倉庫支持

1.1.4 Support for paging of anonymous memory (swap)

使用交換分區或者交換文件來做為虛擬內存

1.1.5 System V IPC

System V進程間通信(IPC)支持,許多程序需要這個功能.必選,除非你知道自己在做什麼

1.1.6 POSIX Message Queues

POSIX消息隊列,這是POSIX IPC中的一部分

1.1.7 BSD Process Accounting

將進程的統計信息寫入文件的用戶級系統調用,主要包括進程的創建時間/創建者/內存占用等信息

1.1.8 BSD Process Accounting version 3 file format

使用新的第三版文件格式,可以包含每個進程的PID和其父進程的PID,但是不兼容老版本的文件格式

1.1.9 Export task/process statistics through netlink

通過netlink接口向用戶空間導出任務/進程的統計信息,與BSD Process Accounting的不同之處在於這些統計信息在整個任務/進程生存期都是可用的

1.1.10 Enable per-task delay accounting

在統計信息中包含進程等候系統資源(cpu,IO同步,內存交換等)所花費的時間

1.1.11 Enable extended accounting over taskstats

收集額外的進程統計信息並通過taskstats接口發送到用戶空間

1.1.12 Enable extended accounting over taskstats
在統計信息中包含擴展進程所花費的時間

1.1.13 Enable per-task storage I/O accounting
在統計信息中包含I/O存儲進程所花費的時間

1.1.14 Auditing support

審計支持,某些內核模塊(例如SELinux)需要它,只有同時選擇其子項才能對系統調用進行審計

1.1.15 Kernel .config support

把內核的配置信息編譯進內核中,以後可以通過scripts/extract-ikconfig腳本來提取這些信息

1.1.16 Kernel .config support
把內核的配置信息編譯進內核中,以後可以通過scripts/extract-ikconfig腳本來提取這些信息

1.1.17 Kernel log buffer size (16 => 64KB, 17 => 128KB)
內核信息大小

1.1.18 Control Group support
cgroup支持,如cpusets那樣來使用cgroup子系統進程(不確定可以不選)
1.1.19 Example debug cgroup subsystem
cgroup子系統調試例子
1.1.20 Namespace cgroup subsystem
cgroup子系統命名空間
1.1.21 Group CPU scheduler
CPU組調度(Group Scheduling,可以為進程賦予不同於nice level的調度 優先級。尤其在企業級硬件系統上,可以進一步優化實時任務的調度。桌面用戶可以不選)

1.1.22 Group scheduling for SCHED_OTHER
SCHED_OTHER(SCHED:Process Scheduler,負責控制進程對CPU的使用.調度算法的公平,有效,硬件有關事件的及時處理)組調度

1.1.23 Group scheduling for SCHED_RR/FIFO
SCHED_RR?FIFO組調度
1.1.24 Basis for grouping tasks
基於組分配的任務
1) user id
使用者id
2)Control groups
控制組
1.1.25 Simple CPU accounting cgroup subsystem
簡單cgroup子系統cpu所花費的時間
1.1.26 Resource counters
資源計數器
1.1.27 Memory Resource Controller for Control Groups
cgroup內存資源控制器
1.1.28 Create deprecated sysfs files
建立過時的sysfs文件系統(雖然寫著過時然而許多版本仍然有編譯)
1.1.29Kernel->user space relay support (formerly relayfs)
在某些文件系統上(比如debugfs)提供從內核空間向用戶空間傳遞大量數據的接口
1.1.30 Namespaces support
命名空間支持,允許服務器為不同的用戶信息提供不 同的用戶名空間服務
1)UTS namespace
UTS命名空間,不確定可以不選
2)IPC namespace
IPC命名空間,不確定可以不選
3)User namespace
User命名空間,不確定可以不選
4)PID Namespaces
PID命名空間,不確定可以不選
1.1.31 Initial RAM filesystem and RAM disk (initramfs/initrd) support
初始RAM的文件和RAM磁盤( initramfs /initrd)支持(如果要采用initrd啟動則要選擇,否則可以不選)
1.1.32 Initramfs source file(s)
initrd已經被initramfs取代,如果你不明白這是什麼意思,請保持空白
1.1.33 Optimize for size (Look out for broken compilers!)
編譯時優化內核尺寸(使用"-Os"而不是"-O2"參數編譯),有時會產生錯誤的二進制代碼
1.1.34 Configure standard kernel features (for small systems)
配置標准的內核特性(為小型系統)
1)Include all symbols in kallsyms
在kallsyms中包含內核知道的所有符號,內核將會增大300K
2)Do an extra kallsyms pass
除非你在kallsyms中發現了bug並需要報告這個bug才打開該選項
1.1.35 Disable heap randomization
禁用隨機heap(heap堆是一個應用層的概念,即堆對CPU是不可見的,它的實現方式有多種,可以由OS實現,也可以由運行庫實現,如果你願意,你也可以在一個棧中來實現一個堆)

1.1.36 Enable Android’s Shared Memory Subsystem

1.1.37 Choose SLAB allocator
選擇內存分配管理器(強烈推薦使用SLUB)
SLAB
各種環境通用的內存分配管理器
SLUB (Unqueued Allocator)
更加優秀的內存分配管理器
1.1.38 Profiling support (EXPERIMENTAL)

#支持系統評測(對於大多數用戶來說並不是必須的),其實就是提供一種檢測代碼運行效率的工具,如果你不編程的話,這個東西也沒有用.

Profiling是用來檢核一支程式中那些部份(which bits)是最常呼叫或是執行的時間最久的方法.這對程式的最佳化與找出何時時間是浪費掉的而言,是相當好的方式.你必須就你所要的時程資訊(timing information)的目的檔案(object files)加上-p來編譯,而且如果要讓輸出的檔案(output files)有意義(make sense),你也會需要gprof(來自binutils套件的命令).

1.1.39 Activate markers
激活標志(不確定可以不選)
1.1.40 OProfile system profiling
OProfile評測和性能監控工具
1.1.41 Kprobes
除非開發人員,否則不選

2 Enable loadable module support可加載模塊支持
2.1Enable loadable module support
打開可加載模塊支持,如果打開它則必須通過"make modules_install"把內核模塊安裝在/lib/modules/中

2.2 Module unloading
允許卸載已經加載的模塊

2.3 Forced module unloading
允許強制卸載正在使用中的模塊(比較危險)

2.4 Module versioning support
允許使用其他內核版本的模塊(可能會出問題)
2.5 Source checksum for all modules
為所有的模塊校驗源碼,如果你不是自己編寫內核模塊就不需要它
2.6 Automatic kernel module loading
讓內核通過運行modprobe來自動加載所需要的模塊,比如可以自動解決模塊的依賴關系

3. Enable the block layer塊設備支持,使用硬盤/USB/SCSI設備者必選
3.1 Support for Large Block Devices
僅在使用大於2TB的塊設備時需要
3.2 Support for tracing block io actions
塊隊列IO跟蹤支持,它允許用戶查看在一個塊設備隊列上發生的所有事件,可以通過blktrace程序獲得磁盤當前的詳細統計數據
3.3 Support for Large Single Files
僅在可能使用大於2TB的文件時需要
3.4 Block layer SG support v4
通用scsi塊設備第4版支持
3.5 IO Schedulers
IO調度器
3.5.1 Anticipatory I/O scheduler
假設一個塊設備只有一個物理查找磁頭(例如一個單獨的SATA硬盤),將多個隨機的小寫入流合並成一個大寫入流,用寫入延時換取最大的寫入吞吐量.適用於大多數環境,特別是寫入較多的環境(比如文件服務器)
3.5.2Deadline I/O scheduler
使用輪詢的調度器,簡潔小巧,提供了最小的讀取延遲和尚佳的吞吐量,特別適合於讀取較多的環境(比如數據庫)
3.5.3 CFQ I/O scheduler
使用QoS策略為所有任務分配等量的帶寬,避免進程被餓死並實現了較低的延遲,可以認為是上述兩種調度器的折中.適用於有大量進程的多用戶系統
3.5.4 Default I/O scheduler
默認IO調度器(建議選擇CFQ)

1)Anticipatory

2) Deadline

3)CFQ

4) No-op

4.System Type 系統類型
此部分暫時未整理,要根據芯片的具體指標確定。

5 .Bus support
5.1 PCCard(PCMCIA/CardBus) supoort

5.1.1 Enable PCCARD debugging

僅供調試.通常不需要選擇調試PCMCIA設備,除非你是設備驅動的開發人員。

5.1.2 16-bit PCMCIA support

一些老的PCMCIA卡使用16位的CardBus

5.1.3 Load CIS updates from userspace

有些PCMCIA卡的正確使用需要升級的CIS,選這個選項就可以實現自動的使用內核的固件加載以及熱插拔子系統。

如不確定,就選Y。(本選項為測試級)

5.1.4 PCMCIA control ioctl (obsolete)

本選項是個很舊的選項,應該用新的組件代替,詳情見:Documentation/Changes

6 .Kernel Features
6.1 Preemptible Kerenl (EXPERIMENTAL)

搶占式內核

6.2 Dynamic tick timer

6.3 use the ARM EABI to compile the kernel

我們必須使用ARM的eabi兼容的工具鏈編譯內核。

6.4 Allow old ABI binaries to run with this kernel(EXPERIMENTAL)

6.5 Memory model (Flat Memory)

6.5.1 Falt Memory

一般選"Flat Memory",其他選項涉及內存熱插拔

6.6 64 bit Memory and IO resources

6.7 Timer and CPU usage LEDs

6.8 Timer LED

6.9 CPU usage LED

7.Boot options啟動選項
7.1 Compressed ROM boot loader base address

7.2 Compeesed ROM boot laoder BSS address

7.3 Kernel Execute-In-Place from ROM

7.4 Kexec system call

8 Floating point emulation

8.1 NWFPE math emulation

Copyright © Linux教程網 All Rights Reserved