1. 程式人生 > >Linux核心配置選項簡介

Linux核心配置選項簡介

Show timing information on printks
CONFIG_PRINTK_TIME
在控制檯和syslog()系統呼叫的輸出中包含printk()訊息的時間戳,以便於直接顯示核心啟動過程中各步驟所用的時間.注意:無論此項是否開啟,時間戳總會被記錄在/dev/kmsg中,開啟此項僅相當於使用"printk.time=1"核心引導引數.
Default message log level (1-7)
CONFIG_DEFAULT_MESSAGE_LOGLEVEL
printk()核心訊息日誌的預設級別,取值範圍是[1,7].數值越大顯示的訊息就越詳細:1=ALERT,2=CRIT,3=ERR,4=WARNING,5=NOTICE,6=INFO,7=DEBUG.
Enable __deprecated logic
CONFIG_ENABLE_WARN_DEPRECATED
編譯時開啟"反對使用"邏輯檢查,關閉此項將不會顯示類似"warning: 'foo' is deprecated (declared at kernel/power/somefile.c:1234)"的警告訊息.
Enable __must_check logic
CONFIG_ENABLE_MUST_CHECK
編譯時開啟"必須檢查"邏輯檢查,關閉此項將不會顯示類似"warning: ignoring return value of 'foo', declared with attribute warn_unused_result"的警告訊息.
Warn for stack frames larger than (needs gcc 4.4)
CONFIG_FRAME_WARN
堆疊幀大小警告閾值,設定過小會導致編譯時警告太多,設為"0"可以關閉警告,需要GCC-4.4或更高版本
Magic SysRq key
CONFIG_MAGIC_SYSRQ
開啟"魔法鍵"(SysRq)支援(可以通過"echo 0 > /proc/sys/kernel/sysrq"關閉).由於SysRq會帶來安全隱患(允許未經登入的操作),所以你應該僅在確實需要的場合開啟.更多詳情參見"Documentation/sysrq.txt"文件
Strip assembler-generated symbols during link
CONFIG_STRIP_ASM_SYMS
連線時剝離彙編器產生的內部符號(類似'.Lxxx'),這樣可以淨化get_wchan()之類的輸出,同時還可以減小核心尺寸.建議開啟.
Generate readable assembler code
CONFIG_READABLE_ASM
生成人類易讀的彙編輸出,以方便核心除錯.這會禁用一些編譯優化措施,也會降低核心的執行速度.
Enable unused/obsolete exported symbols
CONFIG_UNUSED_SYMBOLS
匯出無用和廢棄的符號,這將使核心不必要的增大.建議關閉.
Debug Filesystem
CONFIG_DEBUG_FS
debugfs是核心開發者用來儲存除錯資訊的虛擬檔案系統.不搞核心開發就別選
Run 'make headers_check' when building vmlinux
CONFIG_HEADERS_CHECK
在編譯核心時執行'make headers_check'命令檢查核心標頭檔案的正確性,當你修改了與使用者空間相關的核心標頭檔案後應該啟用該選項
Enable full Section mismatch analysis
CONFIG_DEBUG_SECTION_MISMATCH
僅供核心開發者使用
Kernel debugging
CONFIG_DEBUG_KERNEL
僅供核心開發者使用
Panic on Oops
CONFIG_PANIC_ON_OOPS
當核心oops時,直接panic掉(相當於Windows藍屏宕機),這樣可以確保核心停止工作,避免導致無法預料的後果.等價於使用"oops=panic"核心引導引數.不確定的選"N".
Detect Hung Tasks
CONFIG_DETECT_HUNG_TASK
探測掛起的任務(處於不可中斷的"D"狀態).由於僅能檢測,不能做進一步的處理,所以僅用於幫助核心除錯.
Collect scheduler debugging info
CONFIG_SCHED_DEBUG
提供一個"/proc/sched_debug"檔案以幫助除錯排程程式.僅供核心開發使用.
Collect scheduler statistics
CONFIG_SCHEDSTATS
收集排程程式的統計資訊,並展示在"/proc/schedstat"檔案中.可以用於除錯排程程式,或者調整特定的應用程式.不確定的選"N".
Collect kernel timers statistics
CONFIG_TIMER_STATS
收集核心計時器的統計資訊,並展示在"/proc/timer_stats"檔案中.使用"echo 1 > /proc/timer_stats"開啟統計,使用"echo 0 > /proc/timer_stats"關閉統計.不確定的選"N".
Debug object operations
CONFIG_DEBUG_OBJECTS
跟蹤各種物件的生命週期(life time),並校驗對這些物件的各種操作.僅供核心除錯.
Debug slab memory allocations
CONFIG_DEBUG_SLAB
僅供核心開發者使用
SLUB debugging on by default
CONFIG_SLUB_DEBUG_ON
預設開啟SLUB記憶體分配器除錯功能.僅供除錯,切勿用於生產環境.
Enable SLUB performance statistics
CONFIG_SLUB_STATS
收集SLUB記憶體分配器的效能統計資訊.僅供除錯,切勿用於生產環境.
Kernel memory leak detector
CONFIG_DEBUG_KMEMLEAK
核心記憶體洩漏檢測.僅供核心除錯.
Debug preemptible kernel
CONFIG_DEBUG_PREEMPT
對核心的主動搶佔特性進行除錯.僅供核心開發者使用
RT Mutex debugging, deadlock detection
CONFIG_DEBUG_RT_MUTEXES
僅供核心開發者使用
Built-in scriptable tester for rt-mutexes
CONFIG_RT_MUTEX_TESTER
僅供核心開發者使用
Spinlock and rw-lock debugging: basic checks
CONFIG_DEBUG_SPINLOCK
僅供核心開發者使用
Mutex debugging: basic checks
CONFIG_DEBUG_MUTEXES
僅供核心開發者使用
Lock debugging: detect incorrect freeing of live locks
CONFIG_DEBUG_LOCK_ALLOC
僅供核心開發者使用
Lock debugging: prove locking correctness
CONFIG_PROVE_LOCKING
僅供核心開發者使用
Lock usage statistics
CONFIG_LOCK_STAT
僅供核心開發者使用
Lock dependency engine debugging
CONFIG_DEBUG_LOCKDEP
僅供核心開發者使用
Sleep inside atomic section checking
CONFIG_DEBUG_ATOMIC_SLEEP
僅供核心開發者使用
Locking API boot-time self-tests
CONFIG_DEBUG_LOCKING_API_SELFTESTS
在核心啟動時執行一個簡短的加鎖/解鎖函式(spinlocks,rwlocks,mutexes,rwsems)自我測試.僅供核心開發者使用
Stack utilization instrumentation
CONFIG_DEBUG_STACK_USAGE
僅供核心開發者使用
kobject debugging
CONFIG_DEBUG_KOBJECT
僅供核心開發者使用
Verbose BUG() reporting (adds 70K)
CONFIG_DEBUG_BUGVERBOSE
在核心panic時讓BUG()函式報告更詳細的資訊.核心將會增大70-100K.
Compile the kernel with debug info
CONFIG_DEBUG_INFO
以除錯方式編譯核心(gcc -g).僅供核心開發者使用
Debug VM
CONFIG_DEBUG_VM
僅供核心開發者使用
Debug VM translations
CONFIG_DEBUG_VIRTUAL
僅供核心開發者使用
Debug filesystem writers count
CONFIG_DEBUG_WRITECOUNT
僅供核心開發者使用
Debug memory initialisation
CONFIG_DEBUG_MEMORY_INIT
在記憶體初始化時增加額外的合理性檢查.不確定的選"Y".
Debug linked list manipulation
CONFIG_DEBUG_LIST
僅供核心開發者使用
Linked list sorting test
CONFIG_TEST_LIST_SORT
僅供核心開發者使用
Debug SG table operations
CONFIG_DEBUG_SG
僅供核心開發者使用
Debug notifier call chains
CONFIG_DEBUG_NOTIFIERS
僅供核心開發者使用
Debug credential management
CONFIG_DEBUG_CREDENTIALS
僅供核心開發者使用
Compile the kernel with frame pointers
CONFIG_FRAME_POINTER
僅供核心開發者使用
Delay each boot printk message by N milliseconds
CONFIG_BOOT_PRINTK_DELAY
僅供核心開發者使用
RCU Debugging
僅供核心開發者使用.建議所有子項全選"N".
Kprobes sanity tests
CONFIG_KPROBES_SANITY_TEST
僅供核心開發者使用
Self test for the backtrace code
CONFIG_BACKTRACE_SELF_TEST
僅供核心開發者使用
Force extended block device numbers and spread them
CONFIG_DEBUG_BLOCK_EXT_DEVT
僅供核心開發者使用
Force weak per-cpu definitions
CONFIG_DEBUG_FORCE_WEAK_PER_CPU
僅供核心開發者使用
Debug access to per_cpu maps
CONFIG_DEBUG_PER_CPU_MAPS
僅供核心開發者使用
Linux Kernel Dump Test Tool Module
CONFIG_LKDTM
僅供核心開發者使用
Notifier error injection
CONFIG_NOTIFIER_ERROR_INJECTION
僅供核心開發者使用
Fault-injection framework
CONFIG_FAULT_INJECTION
僅供核心開發者使用
Latency measuring infrastructure
CONFIG_LATENCYTOP
僅供核心開發者使用
Strict user copy size checks
CONFIG_DEBUG_STRICT_USER_COPY_CHECKS
僅供核心開發者使用
Debug page memory allocations
CONFIG_DEBUG_PAGEALLOC
僅供核心開發者使用
Tracers
CONFIG_FTRACE
僅供核心開發者使用.建議選"N".
Red-Black tree test
CONFIG_RBTREE_TEST
僅供核心開發者使用
Interval tree test
CONFIG_INTERVAL_TREE_TEST
僅供核心開發者使用
Remote debugging over FireWire early on boot
CONFIG_PROVIDE_OHCI1394_DMA_INIT
僅供核心開發者使用
Remote debugging over FireWire with firewire-ohci
CONFIG_FIREWIRE_OHCI_REMOTE_DMA
僅供核心開發者使用
Build targets in Documentation/ tree
CONFIG_BUILD_DOCSRC
編譯核心原始碼樹下"Documentation"目錄中的目標.不確定的選"N".
Enable dynamic printk() support
CONFIG_DYNAMIC_DEBUG
僅供核心開發者使用
Enable debugging of DMA-API usage
CONFIG_DMA_API_DEBUG
僅供核心開發者使用
Perform an atomic64_t self-test at boot
CONFIG_ATOMIC64_SELFTEST
僅供核心開發者使用
Self test for hardware accelerated raid6 recovery
CONFIG_ASYNC_RAID6_TEST
僅供核心開發者使用
Sample kernel code
CONFIG_SAMPLES
核心示例程式碼.僅供核心開發者使用
KGDB: kernel debugger
CONFIG_KGDB
僅供核心開發者使用
kmemcheck: trap use of uninitialized memory
CONFIG_KMEMCHECK
僅供核心開發者使用
Test functions located in the string_helpers module at runtime
CONFIG_TEST_STRING_HELPERS
僅供核心開發者使用
Test kstrto*() family of functions at runtime
CONFIG_TEST_KSTRTOX
僅供核心開發者使用
Filter access to /dev/mem
CONFIG_STRICT_DEVMEM
如果選"N",那麼使用者空間的root使用者將可以通過/dev/mem訪問所有記憶體空間(包括使用者空間與核心空間),以方便除錯核心.如果選"Y",那麼核心空間除了PCI和BIOS部分以及資料區之外,都禁止訪問,以保護系統安全.不確定的選"Y".
Enable verbose x86 bootup info messages
CONFIG_X86_VERBOSE_BOOTUP
顯示詳細的核心引導資訊.建議選"N"使引導過程更安靜(依然會顯示錯誤資訊).
Early printk
CONFIG_EARLY_PRINTK
將核心日誌直接輸出到VGA緩衝或串列埠.這有助於除錯那些在控制檯尚未完成初始化之前就造成系統崩潰的bug.
Early printk via EHCI debug port
CONFIG_EARLY_PRINTK_DBGP
支援將核心日誌直接通過EHCI除錯埠輸出.選"N",除非你想除錯核心.
Check for stack overflows
CONFIG_DEBUG_STACKOVERFLOW
僅供核心開發者使用
Export kernel pagetable layout to userspace via debugfs
CONFIG_X86_PTDUMP
僅供核心開發者使用
Write protect kernel read-only data structures
CONFIG_DEBUG_RODATA
僅供核心開發者使用
Set loadable kernel module data as NX and text as RO
CONFIG_DEBUG_SET_MODULE_RONX
將核心模組的資料區標記為NX(不可執行),文字段標記為RO(只讀),以防止不良模組(例如被植入病毒的模組)對系統的破壞,也能預防某些型別的核心入侵.這需要CPU支援NX位(CPU flags中要含有"nx"標誌).但是這也有副作用:會與執行時程式碼補丁衝突,還會導致動態核心跟蹤失效.建議選"Y",除非你需要除錯核心,或者需要為執行中的模組打補丁.
Testcase for the NX non-executable stack feature
CONFIG_DEBUG_NX_TEST
對處理器的NX的測試用例.僅供核心開發者使用
Set upper limit of TLB entries to flush one-by-one
CONFIG_DEBUG_TLBFLUSH
僅供核心開發者使用
Enable IOMMU debugging
CONFIG_IOMMU_DEBUG
僅供核心開發者使用
Enable IOMMU stress-test mode
CONFIG_IOMMU_STRESS
僅供核心開發者使用
IOMMU leak tracing
CONFIG_IOMMU_LEAK
僅供核心開發者使用
x86 instruction decoder selftest
CONFIG_X86_DECODER_SELFTEST
僅供核心開發者使用
IO delay type
IO延遲方式
port 0x80 based port-IO delay
CONFIG_IO_DELAY_0X80
傳統的Linux IO延遲方式,久經考驗,也是最安全的預設值.
port 0xed based port-IO delay
CONFIG_IO_DELAY_0XED
基於0xed埠的IO延遲方式,主要是為了避免和基於0x80埠的主機板診斷卡衝突.絕大多數人都沒有主機板診斷卡,除非那些專門維修主機板的硬體工程師.
udelay based port-IO delay
CONFIG_IO_DELAY_UDELAY
使用核心端udelay()函式作為延遲方法(簡單的延遲2微秒).可以不佔用任何IO埠空間.
no port-IO delay
CONFIG_IO_DELAY_NONE
不使用任何port-IO延遲機制.只要你的機器不是老古董,建議選擇此項.
Debug boot parameters
CONFIG_DEBUG_BOOT_PARAMS
僅供核心開發者使用
CPA self-test code
CONFIG_CPA_DEBUG
僅供核心開發者使用
Allow gcc to uninline functions marked 'inline'
CONFIG_OPTIMIZE_INLINING
允許GCC將標記為內聯(inline)的函式變成非內聯(uninline).選"Y"後將完全無視程式碼中的"inline"標記,完全由GCC自行決定是否應該將函式內聯.由於GCC4.x系列更新了判斷函式是否應該內聯的演算法,選"Y"後,編譯出的核心體積會減小,但執行速度未必提升.建議經過測試後決定"Y"還是"N".
NMI Selftest
CONFIG_DEBUG_NMI_SELFTEST
對不可遮蔽中斷(Non Maskable Interrupt)進行自檢,僅供核心開發者使用