科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件剖析Linux 2.6内核移植—系统移植篇 (5)

剖析Linux 2.6内核移植—系统移植篇 (5)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在桌面Linux系统或较大的Linux系统中,大多数系统使用一整套的应用软件(SysVInit套装软件)和一套相关的小程序(initscripts套装软件)对系统启动进程和启动次序进行识别。

作者:tangzhu 来源:赛迪网技术社区 2007年11月2日

关键字: Linux

  • 评论
  • 分享微博
  • 分享邮件
 

在桌面Linux系统或较大的Linux系统中,大多数系统使用一整套的应用软件(SysVInit套装软件)和一套相关的小程序(initscripts套装软件)对系统启动进程和启动次序进行识别。

大多数桌面Linux系统使用“运行级别”这一概念识别系统执行的应用程序和执行顺序。不同的运行级别是定义系统使用模块所对应的某组应用软件的简单方法。例如,运行级1通常被称为单一用户模式,主要用来对系统进行维护。当系统处于第一运行级时,处理运行状态的只有系统管理员用来与系统进行交互和维护所需的核心应用程序。

同时使用SysVInit和initscripts套装软件的系统启动过程是:当内核加载完毕并开始运行时,它会调用初始化进程进行工作。该进程将读取/etc/inittab文件,并识别该命令文件启动的基本进程和程序。

在/etc/inittab文件中,缺省的运行级由包含“initdefault”字符串的命令行来识别,例如id:2:initdefault:。

在此例中,缺省的运行级是2。/etc/inittab文件中的额外入口将对初始化系统所运行的命令程序进行识别,例如si::sysinit:/etc/rc.d/rc.sysinit。

系统初始化程序运行后,使用SysVInit和initscripts的Linux套件将对系统进入某一特定运行级时发生的事件进行定义。例如,用户在/etc/inittab文件结尾部分的一些命令行中,可能会看到有关运行级2的额外信息,例如l2:2:wait:/etc/init.d/rc 2。

此命令行指明,当系统进入运行级2时,/etc/init.d/rc命令将随参数“2”一起被执行。结果导致“rc”命令执行所有在/etc/rc2.d目录下的适当文件。此目录下的文件名都为S+NN+名称或K+NN+名称,且这些文件都是可执行的外壳程序。这些程序中还包含有其它系统命令的列表。当系统进入某一特定的运行级时,名称以“S”打头的文件便会被执行。系统离开某一特定运行级时,名称以“K”打头的入口命令便会被执行。命令的执行次序依照NN所代表的两位数字的大小进行排列。至于名称则由用户自己定义,但一般应能够被文件启动的程序和子系统调用。

对启动次序中的定制进行检查

在向2.6内核进行移植过程中,用户要确定进行如下修改:

◆ 用户必须将所有强制可加载内核模块复制到用户所使用的初始RAM磁盘中。为了能与2.6内核一起工作,这些模块必须使用新的.ko命令规则。

◆ 初始RAM磁盘中的/linuxrc文件或正常启动次序中的其它文件不能包含任何使用旧模块命名规则的模块加载索引信息。

Target Configurator工具的一大优势就是它可以自动建立一个初始RAM磁盘和一个适应2.6内核的根文件系统。如果用户手工建立根文件系统或初始RAM磁盘,那么用户需要先确定根文件系统中包含有适当的初始化命令。

如果用户正在将一个基于2.4内核的TimeSys Linux系统移植到一个2.6内核下,而且用户已经对系统的启动次序或所需执行的应用软件进行了定制,那么用户必须同时对2.6内核下的系统启动次序做同样的定制。正如上文提到的,如果用户的2.4系统为特定的驱动程序或子系统加载了内核模块,那么用户必须确定已安装了这些工具软件适用于2.6内核的版本。用户的初始RAM磁盘和文件系统必须包含有为2.6内核建立的内核模块,并且以2.6内核的命名规则进行命名。

如果用户的2.6系统使用的是devfs文件系统,而不是标准的Linux文件系统或udev,那么用户也许还需要对硬件或文件系统索引进行升级。例如,如果用户正在使用2.4内核下标准的dev文件系统,并且要升级到适用于2.6内核的devfs文件系统,那么用户需要升级硬件的索引,例如,将dev文件系统中的硬件名/dev/md0改为devfs文件系统中的硬件名/dev/md/0。

2.4和2.6内核之间的另一个重要区别是,在2.6内核下,许多应用程序由于升级已无法支持GLIBC或uClibc库。在这种情况下,用户还需要确定用户的初始RAM磁盘或根文件系统中还包含有应用程序所需的新版共享库。如果用户正在创建新的初始RAM磁盘或根文件系统,那么就不必担心这一问题了。但是如果用户是对已有的初始RAM磁盘或根文件系统进行升级,那么这一点十分重要。

小结

不同内核下的Linux系统启动过程并未发生变化,但是值得注意的是,在进行内核移植过程中,用户必须了解系统是如何初始化的。尽管启动过程本身没发生变化,但是一些与内核模块相关的规则发生了变化。因此明确现在启动命令是否还能正确运行是十分重要的。用户还必须了解系统启动时所执行的文件和应用程序,以便决定哪儿需要做相应的修改。总之,只要用户了解系统的启动次序并仔细检验系统启动进程中执行的文件,移植任何定制Linux系统的实施方案都是可行的。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章