请选择段落导航
1.嵌入式Linux研究-对几种典型的系统的内核配置方案(1)
2.嵌入式Linux研究-对几种典型的系统的内核配置方案(2)
3.嵌入式Linux研究-对几种典型的系统的内核配置方案(3)
2. 提供所需功能的一个或更多应用程序。
再增加功能,或许需要这些: 一个文件系统(也许在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,允许用户这台路由器才行。