现在的位置: 首页 > 综合 > 正文

几种减裁Linux 核心的方法

2013年08月05日 ⁄ 综合 ⁄ 共 5424字 ⁄ 字号 评论关闭

本文主要介绍了几种减裁Linux 核心的方法, 可以用于嵌入式系统、嵌入式服务器的核心配置。

1.对于一般PC 的普通内核配置
    对于一般的用户而言, 对于Linux 内核的效率和大小的要求都不高。因此一般不对内核重新配
置, 因为Linux 安装程序会在安装时对大部分设置按照安装的需求和实际的硬件做缺省设置。这样
的内核会比实际需要的繁冗, 有很多模块加载后根本就没有用到, 但是因为现在的PC 的内存一般
都是上百MB, 而一个Linux 内核再大也就是几百K, 因此对于一般用户而言, 无需再重新编译内
核了。
    在一台P3-566 的Dell 机器安装Red-Hat  7.2,内核版本为2.4.6
    以下是一些该机的配置:
    Loadable  module support :Y
    Networking support: Y
  PCI support:Y
    System  V IPC :Y因为可以做一些基于System  V的程序
    Kernel  support for a.out binaries:Y
    Kernel  support for ELF binaries:Y
  Block devices : 对此根据该机的硬件做了相应的配置, 去除一些本机没有的硬件设备的支持
模块。如:Loopback  device  support
  Networking options:
     Packet socket:Y
    TCP/IP networking:Y
    Network firewalls:Y
    The IPX protocol:Y
    Network device support:
      Network  device  support:Y
      Ethernet(10  or  100Mb/s):Y
  Character device
    Virtual terminal:Y
      Support for  console on virtual terminal:Y
    Filesystems
      Second  extended  fs  support:Y
    VFAT  fs  support :m  笔者有时会用到该机上的VFAT 分区
    /proc  filesystem support Y
      ISO9660  cdrom filesystem support:m
    Network File Systems
    NFS filesystem support:Y
    SMB filesystem support:m
  Console drivers
    VGA text console :Y
    Video mode selection  support:Y
      VESA VGA  graphics console :Y
  Kernel hacking
      Magic SysRq key:Y
    还有一些缺省的设置笔者没有改。这样编译出来的版本有700K.经过笔者调试过没有出现什么
问题。
2.PDA 的内核设置
    PDA(Personal Digital Assist)如: 手机, 快译通, 文曲星等等。这类系统要求系统稳定, 内核
小而且效率高, 常常需要一些特殊的硬件支持。对进程调度、文件系统要求单一, 有些就是单进程
系统。对网络的支持由根据需要确定。RedHat 的内核无法直接用来设计一些特殊要求的PDA,一般
还要加入对硬件的特定模块。
    可作如下设置:
    Networking support:Y :一般PDA 都支持上网更新功能
    Kernel  support for ELF binaries :Y
    Compile  as ELF –if your GCC  is  ELF-GCC  :Y 这两个设置使系统的执行文件都为
ELF
    Advanced  Power  Manager Bios support:Y
  Block devices :应该加入对硬件特殊的支持模块
  Networking options
      Packet  socket
  FileSystem
      Second  extended  fs  support:Y
    另外的一些功能为N,当然一些功能必须选择用来支持上述的模块。编译后为100KB---400KB
3.小型嵌入式系统的内核配置
    一个小型的嵌入式Linux系统只需要下面三个基本元素:
  
引导工具  
Linux 微内核, 由内存管理、进程管理和事务处理构成  
初始化进程
    如果要让它能干点什么且继续保持小型化, 还得加上:
  
硬件驱动程序  
提供所需功能的一个或更多应用程序。
    再增加功能, 或许需要这些:   一个文件系统( 也许在ROM 或RAM) 中  TCP/IP网络堆栈对
该种系统,做了不同的设置:
    不要  floppy; 不要SMP、MTRR; 不要  Networking、SCSI; 把所有的 block device 移除,
只留下 IDE device;把所有的  character  device  移除; 把所有的 filesystem 移除, 只留下
  minix; 不要 sound 支援。这样己经把所有的选项都移除了。这样做之后, 得到了一个 188K
的核心.
    把下列两个档案中的  -O3,-O2  用  -Os  取代。
      ./Makefile
      ./arch/i386/kernel/
      Makefile
    这样一来, 整个核心变小了  9K, 成为  179K。
    不过这个核心恐怕很难发挥 Linux 的功能, 因此把网络加回去。把General  setup 中的
  network support 加回去, 重新编译, 核心变成 189 K。10K 就加上个 TCP/IP stack。  有
stack 没有driver 也是枉然, 把 embedded board 常用的RTL8139 的driver 加回去, 195K.
    如果你需要 DOS 档案系统, 那大小成为  213K。如果 minix 用 ext2 换代, 则大小成
长至  222K。
    Linux 所需的内存大约在600K~ 800K 之间。1MB 内存就可能可以开机了, 但不太有用, 因为
连载入C 程序库都有困难。2MB 内存应该就可以做点事了, 但要到  4MB 以上才可以执行一个比
较完整的系统。
    因为Linux 的filesystem  相当大, 大约在 230K 左右, 占了 1/3 的体积。内存管理占了
80K, 和核心其它部分的总和差不多。TCP/IP stack 占了65K, 驱动程序占了120K。SysV  IPC
占了  21K, 必要的话可以拿掉, 核心档应该可以再小个10K左右。
    如果要裁剪核心大小, 应该动那里呢?  答案很明显, 当然是文件系统。Linux  的  VFS 简化
了档案系统的设计, buffer  cache, directory cache 增加了系统的效率。但这些embedded 系统根
本就用处不大。如果可以把它们拿掉, 核心可以马上缩小 20K 左右。如果跳过整个  VFS, 直接
将文件系统写成一个 driver 的型式,应该可以将  230K 缩减至50K 左右。整个核心缩到100K
左右。
4.工控机的内核配置
    对于工控机内核,对于内核的大小要求并不严格,关键的是正确性,健壮性和实时性(某些机子要求
实时性较高).对文件系统要求单一,但保证正确性.网络按需设置。
    可作如下配置:
  Symmetric multi-processing  support:Y
    Loadable  module support:N 工控机一般将可能用到的模块都全部装入内存.
  Networking support:Y
    System  V IPC :Y
    Kernel  supply for ELF binaries:Y
  Block devices:根据具体硬件配置
  Networking options
     packet  socket:Y
      根据具体需要,一般工控机是通过LAN连接,与外界隔离故要IPX协议,另外Tcp/ip一般也需要.
    QoS  and/or fair queueing:Y
      QoS(Quality Of  Service  ) and fair queueling 是一种排定某种封包先送的网络线程
表,可同时针对多个网络封包处理并依优先处理顺序来排序,称之为packet  schedulers.此功能特别是
针对实时系统时格外重要,当多个封包同时送到网络设备时,Kernel 可以适当的决定出哪一个封包必
须优先处理.因此Kernel 提供数种packet scheduling algorithm.
    Filesystems
      Second  Extended  fs  support:Y
    其余配置和小型嵌入式系统差别不大.同一台机器上编译出来的内核大小为800 多KB。
5.服务器的内核配置:
      
    服务器的内核对网络设置和进程调度都非常关键.做如下配置:
  Symmetric multi-processing  support:Y
    Loadable module support:Y
  Networking support:Y
  Networking option
     Packet socket:Y。
    TCP/IP networkeing:Y
    Network firewalls:是否采用网络防火墙。如果计算机想当firewalls server 或者是处于
TCP/IP  通信协议的网络的网路结构下, 这一项要选[Y]
    Network aliasing[Y/m/n/?]:一台网络上的计算机可以拥有多组IP 地址。如果计算机想拥有多
个IP 地址, 就选择[Y].
      IP:forwarding/gatewaying[Y/m/n/?]:假如用户想当路由器的话, 选择[Y],但先决条件是有“两张”
网卡, 一张对外部网络、一张对内部网络, 并且使用的ISP 那一端也必须设定routing, 允许用户这
台路由器才行。
      IP:multicasting:可以一次就完成传送一个packet 到好几台计算机的操作。
      IP:syn_cookies:一种保护措施, 将各种TCP/IP 的通信协议加密, 防止Attacker 攻击用户的计
算机, 并且可以纪录企图攻击用户的计算机的IP 地址。
      IP:firewalling:该台计算机是否是防火墙服务器。
      IP:firewall packet logging:是否由klogd记录防火墙服务器到底接收了哪些Packet。
    IP: masquerading:可以将内部网络的计算机送出去的封包, 通过防火墙服务器直接传递给远
端的计算机, 而远端的计算机看到的就是接收到的防火墙服务器送过来的封包, 而不是从内部的计
算机送过来的。这样如果内部只有一台计算机可以上网, 其余的机器可以通过这台机子的防火墙服
务器向外连线。选择这个选项必需先确定先前的
Network  Firewalls  IP:forwarding/gatewaying    IP: firewalling  这三个选项选[Y]。以及下一个选
项IP: always  deframent  也要选[Y].
      IP:ICMP masquerading: 一般masquerading  只提供处理TCP,UDP  packets, 若要让
masqurerading  也能处理ICMP  packets,这个选项要选[Y].
    IP:always defragment:可将接收到的packet  fragments 重新组合回原来那个封包。
      IP:accounting:统计IP  packet 的流量, 也就是网络的流通情况。
      IP:optimize  as router not host:可以关闭copy&checksum 技术, 防止流量大的服务器的
IP  packets 丢失。
      IP:tunneling:可在不同网域中使用linux,且都不用改IP 就可以直接上网了。适合于笔记本型计
算机用户。
      IP:Reverse ARP :主要是提供bootp 的功能, 让计算机从可以从网卡的Boot  Ram 启动。
      IP:Disable Path MTU Discovery:是否取消Path MTU Discovery.MTU 有助于处理拥
挤的网络。
    The IPX protocol:IPX 为Netware  网络使用的通讯协议。
    其余根据需要设置。编译出的内核为800K。

 

服务器的内核:

服务器的内核对网络设置和进程调度都非常关键.做如下配置:

Symmetric multi-processing support:Y
Loadable module support:Y
Networking support:Y
Networking option
Packet socket:Y。
TCP/IP networkeing:Y
Network firewalls:是否采用网络防火墙。如果计算机想当firewalls server 或者是处于TCP/IP 通信协议的网络的网路结构下,这一项要选[Y]
Network aliasing[Y/m/n/?]:一台网络上的计算机可以拥有多组IP地址。如果计算机想拥有多个IP地址,就选择[Y].
IP:forwarding/gatewaying[Y/m/n/?]:假如用户想当路由器的话,选择[Y],但先决条件是有“两张”网卡,一张对外部网络、一张对内部网络,并且使用的ISP那一端也必须设定routing

抱歉!评论已关闭.