Linux内核编译选项学习(一)(综合整理)

   用了一段时间的Ubuntu了。打算装个Gentoo来用用。那么关于内核的编译那是必须得学的。这里以Linux/i386 3.3.3 Kernel Configuration为例来学习关于内核编译中选项配置的学习。

         Linux/i386 3.3.3 Kernel Configuration

  │ │        General setup  --->   常规选项
  │ │    [*] Enable loadable module support  --->可引导模块支持(建议作为模块加入)    
  │ │    [*] Enable the block layer  --->   块设备支持                              
  │ │        Processor type and features  --->   处理器类型和功能                  
  │ │        Power management and ACPI options  --->   电源管理和ACPI选项                 
  │ │        Bus options (PCI etc.)  --->   总线选项(PCI等)                               
  │ │        Executable file formats / Emulations  --->   可执行的文件格式                 
  │ │    -*-Networking support  --->   网络支持                               
  │ │        Device Drivers  --->   设备驱动                                      
  │ │        Firmware Drivers  --->   固件驱动 
  │ │        File systems  --->   文件系统                               
  │ │        Kernel hacking  --->   核心黑客                         
  │ │        Security options  --->   安全选项                                   
  │ │    -*-Cryptographic API  --->   密码编译API                              
  │ │    [*] Virtualization  --->   虚拟化                 
  │ │        Library routines  --->   函式库

   以上为make menuconfig 出来的选项菜单。在第一篇里先把这主菜单进行说明。
(一)General setup:与Linux 最相关的程序互动、核心版本说明、是否使用发展中程序代码等信息都在这里设定的。 这里的项目主要都是针对核心不程序之间的相关性来设计的。
(二)Enable loadable module support:模块是一小段代码,编译 后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在 运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不 需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块,否则无法启动系统。在启动时不用到 的功能,编成模块是最有效的方式。
(三)Enable the block layer:使用硬盘/USB/SCSI设备者必选这选项使得块设备可以从内核移除。如果不选,那么 blockdev 文件将不可用,一些文件系统比如 ext3 将不可用。这个选项会禁止 SCSI 字符设备和 USB 储存设备,如果它们使用不同的块设备。

(四)Processor type and features:根据自己CPU的类型进行适合的设置。
(五)Power management and ACPI options:对电源进行管理。ACPI表示高级配置和电源管理接口(Advanced Configuration and Power Management Interface。
(六)Bus options (PCI etc.) :这个项目和总线有关。分为最常见的 PCI和 PCI-express 的支持,还有笔记本电脑常见的 PCMCIA 插卡等等。
(七)Executable file formats / Emulations:是给 Linux 核心运作执行文件之用的数据。通常是不编译行为有关。
(八)Networking support:是相当重要的选项,因为他还包括了防火墙相关的项目。由于防火墙是在启动网络之后再设定即可,所以绝大部分的内容都可以被编译成为模块,而且也建议你编成模块!有用到再载入到核心即可。
(九)Device Drivers:设备驱动设定。
(十)Firmware Drivers:固件驱动设定。
(十一)File systems:文件系统的支持也是很重要的一项核心功能!因为如果不支持某个文件系统,那我们的 Linux kernel 就无法识别,当然也就无法使用。
(十二)Kernel hacking:这里翻译为核心黑客。有点怪怪的。这里和核心开发者比较有关的部分,这部分建议保留默认值即可, 应该不需要去修改他!除非
你想要进行核心方面的研究。
(十三)Security options:这里是属于信息安全方面的设定, 包括 SELinux 这个细部权限强化模块也在这里编入核心的!这部分可以作一些额外的设定。
(十四)Cryptographic API:是微软在 Windows 操作系统中添加的密码编译机能,作为资料加密与解密功能的重要基础,CryptoAPI 支援同步,异步的金钥加密处理,以及操作系统中的数位凭证的管理工作。
(十五)Virtualization:虚拟化是近年来非常热门的一个议题,因为计算机的能力太强,所以时常闲置在那边, 此时,我们可以透过虚拟化技术在一部主机上面同时启劢多个操作系统来运作,这就是所谓的虚拟化。 Linux 核心已经主动的纳入虚拟化功能!而 Linux 认可的虚拟化使用的机制为 KVM(Kernel base Virtual Machine)。 
(十六) Library routines:常用的核心函式库也可以全部编为模块。
   今天就学到这里。(2012.04.29)

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