linux核心裁剪選項說明

小王爺666發表於2016-12-11

配置核心的命令是:

# make config 文字配置方式

# make menuconfig 選單配置方式

# make xconfig 圖形介面配置方式(安裝qt)

我們可以採用任何一個命令配置核心,一般推薦使用make menuconfig來配置核心。

一.程式碼成熟度選項

Code maturity level options  --->

[*] Prompt for development and/or incomplete code/drivers

[*]   Select only drivers expected to compile cleanly

在核心中包含了一些不成熟的程式碼和功能,如果我們想使用這些功能,想開啟相關的配置選項,就必需開啟這一選項。

二.通用設定選項

General setup  --->

()  Local version - append to kernel release

[*]  Automatically append version information to the version string

[*]  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

[*]  Support for hot-pluggable devices

[*]  Kernel Userspace Events

[*]  Kernel .config support

[*]  Enable access to .config through /proc/config.gz

()   Initramfs source file(s)

[*]  Configure standard kernel features (for small systems)  --->

         --- Configure standard kernel features (for small systems)

         [ ]   Load all symbols for debugging/kksymoops

         [ ]    Do an extra kallsyms pass

         [ ]    Enable support for prinlk

         [ ]    BUG()support

         [ ]   Enable full-sinzed data structures for core

         [*]   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

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。只有選擇此項及它的子項,才能呼叫有關審記的系統呼叫。

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表示編譯器的預設方式。使用記憶體對齊能提高程式的執行速度,但是會增加程式對記憶體的使用量。

三.可載入模組

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

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,否則將出錯。

四.匯流排支援配置

Bus support --->

       PCCARD (PCMCIA/CardBus) support  --->

           [ ]  Enable PCCARD debugging

           [ ]  16-bit PCMCIA support (NEW)

           [ ]    Load CIS updates from userspace (EXPERIMENTAL)(NEW)

           [ ]    PCMCIA control ioctl (obsolete) (NEW)

           --- PC-card bridges

PCCard (PCMCIA/CardBus) support,你的計算機是否支援PCMCIA卡

Enable PCCARD debugging,通常不需要選擇除錯PCMCIA裝置,除非你是裝置驅動的開發人員。

16-bit PCMCIA support,16位的PCMCIA匯流排支援。

五.支援的可執行檔案格式

Userspace binary formats -à
[*] Kernel support for ELF binaries
[*] Kernel support for a.out and ECOFF binaries
[*] Kernel support for MISC binaries
[*] RISC OS personality

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等語言編寫的程式時非常有用。

六,檔案系統

File systems

       <*> 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  --->

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),新的(第四版)的核心自動載入遠端檔案系統的支援,也支援第三版。() 

相關文章