作者:解放军信息工程大学冯立功编译发文时间:2004.12.07
作为一个积极推进软件业革新的领头羊,Linux操作系统已成为开放系统运动的优秀代表。作为各种Linux发行版的共同核心,Linux内核多年来一直不间断地引进新技术进行革新,逐步提高自身的各种性能,例如可伸缩性、可用性和技术支持等。众多的改进都是围绕增加对其它架构、处理器、总线、端口和外设的支持而进行的。从Linux2.2内核开始,因为每个新内核的诞生都要经过严格的检验和测试,所以其开发周期大约都保持在两年左右。
除了增加的新功能外,每个新版稳定的Linux内核都会对大量原有功能进行改进,对内部接口进行定制使其更加标准,提高与其它设备的兼容性,并简化对新设备和子系统的支持过程。这些改进中的一部分只与内核开发人员和硬件驱动程序编写者有关,而其它的则影响到系统启动、系统管理和应用软件设置等方面。
如果用户正在把现有的应用软件移植到一个基于2.6内核的Linux套件上,例如TimeSysLinux系统,那么也许不会花费多少功夫,原因是TimeSysLinux的性能已大大改进。此外还增加了对行业标准的支持,例如对POSIX的支持。然而,如果用户正在进行硬件驱动、定制系统级的应用软件或可定制的Linux根文件系统的移植,那么可以参考内核在内部构件、子系统、系统启动和系统管理上发生的基本变化。这会为用户节省许多开发时间,并大大减少用户在移植过程可能遇到的难题。
这里主要介绍如何将现有的硬件驱动、应用软件和嵌入式Linux组件移植到一个基于2.6内核的Linux套件中(我们以TimeSysLinux为例子)。并结合一些软件工具为用户提供所需的信息,帮助用户加快开发进程,控制软件转换和改进成本,甚至可以加快基于Linux系统的设备、系统和应用软件进入市场的速度。这里所列举的软件是TimeStormLinux工具套件之类的工具软件。它们可以在开发、移植、调试和验证周期等方面为用户提供帮助。
基于2.6内核的设置
内核是Linux操作系统的核心。它管理着所有的系统线程、进程、资源和资源分配。与其它操作系统不同的是,Linux操作系统允许用户对内核进行重新设置。用户可以对内核进行“瘦身”,增加或消除对某些特定设备或子系统的支持。在开发嵌入式系统时,开发人员经常会减少系统对一些无用设备的支持,将节省下来的内存分配给各种应用软件。
Linux内核对各种硬件和端口的支持要靠各种硬件驱动程序来实现。这些驱动程序可以被直接写入内核,也可以针对某些特定硬件在需要时自动加载。通常情况下,可以被自动加载进内核的内核编码称为自动加载内核模块。
Linux内核的设置是通过内核设置编辑器完成的。内核设置编辑器可对每个内核设置变量进行描述,帮助用户决定哪些变量需要被清除,哪些需要写入内核,或者编成一个可加载内核模块在需要时进行加载。
建立新内核的第一步是对内核进行设置。当用户对内核进行设置时,必须先对内核和其它可加载内核模块进行编写和安装。如果用户要对原系统的内核进行构建设置,那么这一步是十分简单的。但如果用户要将原系统内核编译应用于其它目标系统,那么这一步就会变得相对困难一些。例如,当用户修改嵌入式系统的Linux内核时,很可能会先在一个桌面系统上对内核进行设置,然后再通过一套编译工具将其移植到嵌入式系统中。此类编译工具被称为交叉编译程序。
交叉编译程序在一类系统运行的同时会生产一系列二进制编码。这些编码是专门为另一类系统而设计的。两种系统有着完全不同的处理器或架构。在对内核或模块的编译过程中,用户必须通过多种多样的环境变量或Makefile设置来确定具体的交叉编译程序。用户还可以直接使用一个诸如TimeSys之类的集成开发环境来实现这一目标。TimeStorm可以帮助用户很容易地选择交叉编译程序。
