linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 内核研究 >
栏目导栏
资料搜索
热门文章
·linux-2.6内核升级文档
·Linux源代码的注释
·linux2.6内核编译方法详述
·Linux操作系统内核编译详解
·Linux内核结构详解
·Linux配置与编译内核
·定时器
·Linux内核升级全攻略
·FC5(Fedora Core5)下编译内核总
·Ubuntu 6.06 dapper 内核编译初
·Linux 内核编译详解
·Linux内核管理基础知识概述
·Linux2.4升级到2.6内核升级指南
·第八章 设备驱动
·如何编译linux内核
最新文章
·Linux内核bootsplash功能的实现
·Linux内核2.6.25全新发布加入众
·Debian Linux系统编译内核标准
·Linux2.4内核和2.6内核对Initr
·2.6.24内核编译 initrd-2.6.24
·Qtopia应用程序与Linux内核数据
·Linux 2.6内核中sysfs文件系统
·Linux2.6内核驱动移植参考
·Andrew Morton:Linux内核的执法
·Fedora 8 Linux系统的内核配置
·Kernel中的irq.c函数
·Linux核心出现权限扩张及记忆体
·Linux 2.6本地权限提升漏洞
·结合Linux系统内核源码理解SYN
·关于Linux 内核中五个主要子系
Google
 
剖析Linux 2.6内核移植—应用程序篇
[ 作者:  加入时间:2006-09-20 10:47:42  来自:赛迪网 ]

全面移植2.6内核的应用程序

前面介绍了与2.6内核相关的变化,解释了新硬件驱动程序的编译进程,并讨论了2.6内核的新功能对于已有硬件驱动程序的影响。这里将主要阐述将已有驱动程序、开发系统、应用软件和定制Linux配置移植到2.6内核的方法步骤。

因为2.6内核增加了许多新功能,特别是在硬件驱动程序和系统软件级方面,所以需要对管理工具进行相应的改变。基于2.6内核的系统需要新的启动程序。该程序必须能识别新的模块命名规则,使用新的设置文件和新的2.6内核功能。例如sysfs文件系统,该文件系统是一个虚拟的文件系统。它可以产生一个包括所有系统硬件的层级视图,与提供进程和状态信息的proc文件系统十分类似。sysfs文件系统主要供Linux系统内部使用。2.6内核已开始为存储用户信息的新型文件系统提供集成支持。诸如JSF与XFS之类的新日志文件系统和OpenAFS之类的新网络文件系统,都需要最新的针对具体文件系统的工具。

用户只需要安装与2.6内核新功能相关的工具,不需要的可以暂时略去。例如,如果用户使用的不是JFS文件系统,那么可以通过禁止JFS支持而缩减内核占用的空间。同样,也可以通过清除与JFS相关的工具,减少根文件系统占用的空间。如果用户使用的不是基于2.6内核的Linux系统,那么需要确定所安装的Linux系统套装软件内是否拥有所有2.6内核所需的特性。

对重要的套装软件进行验证和升级

所谓套装软件就是满足不同需求的一系列工具软件的集合。这些软件可以一起作为一个整体安装到系统中。不同的Linux系统所提供的套装软件和从属管理软件,首先要检测系统中是否安装了它们依赖的其它软件,而且这些软件的版本必须足够新。这些套装软件的管理器常常会对全系统范围的数据库进行维护。该数据库存储所有已安装应用软件名称和版本。最普通的套装软件格式是RPM(Red Hat Package Manager,也用于Fedora、Mandrake、SuSE和TurboLinux套件)和DEB(Debian Linux,也用于Knoppix和Xandros套件)格式。其它的套装软件格式有标准压缩程序文件TGZ格式,主要应用于Slackware Linux,自身不包括从属信息。

这些套件大多存在于基于2.4内核的Linux系统,而且可安装在所有用于软件开发的桌面Linux系统中。诸如嵌入式计算领域的专门系统也许并非缺一不可。然而如果用户正在升级某一专门系统,那么了解这些套装软件需要在哪里升级是一件非常重要的事。

如果用户正在将一个桌面Linux系统升级到2.6内核,那么对表1中的套装软件进行升级和验证的惟一场所就是用户的桌面系统。如果用户正在移植一个诸如嵌入式Linux系统之类的专门系统,那么必须首先要升级所有的交叉编译程序和正在使用的相关软件,以便为嵌入式系统生产软件。然后,才能升级嵌入式系统的文件系统中使用的所有套装软件。

当准备在现有的系统中使用2.6内核时,必须对所有安装在原系统且在表1中列出的套装软件的版本进行验证。如果版本低于表中的最低版本限制,那么必须对它们进行升级。用户只要执行第三栏中的命令,就可以查到套装软件的版本了。

如果用户计划使用某一特定的文件系统、硬件设备或管理体制,那么除了表1中列出的套装软件外,也许还需要升级其它的套装软件。 2FiLinux联盟

升级内置模块的特殊处理

如果想实现2.6/2.4双内核启动,那么还需要对表1列出的内置模块工具套装软件进行特殊处理。内置模块工具的套装软件可为系统应用软件提供模块加载(insmod和 modprobe)、卸载(rmmod)、列表(lsmod)和从属关系分析(depmod)功能。由于新内核的模块命名和加载规则发生了变化,所以不能简单地对这些工具的现有版本进行覆盖,否则将无法正常管理2.4内核模块。因此,内置模块工具的套装软件的升级过程首先包括对2.4内核下的工具软件重新命名,例如utility.old。这样可以保留2.4内核需要的套装软件版本。如果内置模块工具的套装软件经编译后支持向下兼容,那么套件中的工具软件可以自动执行这些工具的旧版本。这样用户可以不加任何修改,就实现双内核启动的目标。

如果用户使用诸如DEB或RPM事先建立的套件升级内置模块工具的套装软件,而且仍然需要双内核启动,那么在安装新版本前,应该先检查套件中是否包含一个预装的小程序。该程序可以对已有相关模块的二进制命令进行重命名。更简单的方法是,从源代码中为用户的系统建立内置模块工具的套装软件,此时“make”命令的目标之一是moveold,它可以复制已有相关模块的二进制命令,以便它们在新版本安装时不会丢失。这里给出对内置模块工具的套装软件进行设置、组建和安装的过程如下:

#./configure --prefix=/#make moveold#make#make install

上面代码中,第一行命令对内置模块工具的套装软件进行设置,以便它与原套件安装在同一位置。第二行命令对现有的二进制命令进行重命名。第三行命令在内置模块工具的套装软件中建立应用软件。第四行命令对这些软件进行安装。

当然,从源代码建立并安装这些套装软件不会升级任何已安装应用软件的数据库。这些数据库通常由套件管理器进行维护。

安装新版内置模块工具的套装软件的最后一步是运行一个外壳软件。该软件可以将2.4内核使用的模块设置文件登录口,转换成为同等的2.6内核的(/etc/modprobe.conf)。该外壳软件名为generate-modprobe.conf程序,只有一个参数,就是已有modules.conf文件的路径名。运行完毕后,用户还需检查新文件,并根据两个版本下硬件名称变化,对它进行适当的升级。

应用高级Linux声音架构

如果用户使用的系统音频功能不仅限于内置的扬声器和相关的发声装置,那么2.6内核的一个主要变化就是它采用了高级Linux声音架构(ALSA)。ALSA目前是播放并管理音频录制和回放的缺省数字音频架构。ALSA很早以前就代替开放声音系统(OSS)应用于Linux平台。尽管在2.6内核下,ALSA可提供一种OSS模拟模式对旧的应用软件提供支持,但是升级系统使用ALSA才是长久之计。

TimeSys公司发现在升级内核前便采用ALSA是十分明智的。这样,在用户升级内核时可以减少多个不确定因素,并确保ALSA与硬件一起工作正常。此外,用户还能避免一些内核升级过程中遇到的困难,并确保ALSA模块设置命令已经存在于/etc/modules.conf文件中。

ALSA升级步骤如下:

◆ 从预先准备好的套装软件中获取最新版本的ALSA驱动程序、库和工具。虽然,2.6内核源代码中有ALSA驱动程序,但用户最好事先准备好ALSA套件。这样用户就可以在升级内核前,将系统升级到ALSA。如果用户想使用ALSA的OSS模拟模式,那么也需要用户获取它的源代码并安装ALSA套件。

◆ 配置、编译并组建ALSA套件,或者在系统中安装二进制命令。

◆ 使用Alsaconf应用软件对ALSA软件进行配置。该软件可搜索用户安装的声音软件,生成当前模块加载信息,并选择性地升级/etc/modules.conf文件。

◆ 使用alsamixer应用软件激活ALSA。该软件可开启ALSA的设置(ALSA最初是关闭着的)。

◆ 将/etc/rc.d/init.d/alsasound启动文件与系统启动时执行的命令文件连接起来。

◆ 执行generate-modprobe.conf程序,从而将ALSA模块设置移植到/etc/modprobe.conf文件。它可与2.6内核需要的模块工具一起工作。

ALSA与OSS相比有许多优势。ALSA可以支持更多的音频端口、声卡和模块化的驱动程序。由于内核和用户空间是分开的,这样可以简化编写、维护驱动程序和音频应用软件的过程。

升级系统设置文件

除了升级套装软件外,用户通常需要手工升级一些系统启动和设置程序,以便安装使用新的文件系统,并支持2.6内核使用的模块命名规则。

在升级内核时,用户必须在/etc/fstab目录下,为sysfs文件系统添加一行指令,建立一个入口。该入口指令的形式如下:

none /sys sysfs noauto 0 0

该入口可以为用户的系统提供识别安装sysfs文件系统的相关信息。如果用户只想从2.6内核启动,那么用户只需指定defaults安装选项,而不需指定noauto。这样,无论何时当用户执行“mount -a”命令时,系统就会自动安装sysfs文件系统。

如果系统既能以2.4内核启动,也可以2.6内核启动,那么当以2.4内核启动时,noauto安装选项将禁止用户的系统自动安装sysfs文件系统。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论

分页:[1] 2
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·剖析Linux 2.6内核移植—系统移植篇  (2006-09-20 10:42:21)