嵌入式Linux在PC104平台上的构建与实现
- 格式:pdf
- 大小:103.91 KB
- 文档页数:3
第33卷第10期应用科技Vol .33,№.102006年10月App lied Science and Technol ogyOct .2006文章编号:1009-671X (2006)10-0035-03嵌入式L inux 在PC104平台上的构建与实现许德新,谈振藩,胡文彬,曾薄文(哈尔滨工程大学自动化学院,黑龙江哈尔滨150001)摘 要:介绍了在PC104平台上构建嵌入式L inux 操作系统方法及嵌入式L inux 系统开机导入的原理,提出有效地利用最少资源在CF 卡上构建一个功能完整的最小L inux 系统,并且阐述了利用Grub 、Busy Box 等工具软件,构建生成完整的嵌入式L inux 系统所需的文件系统等资源.关健词:嵌入式L inux;PC104;Grub;Busy Box;CF 卡中图分类号:TP399 文献标识码:AConstructi on and reali zati on of e mbedded L i n ux on PC 104pl atfor mXU De 2xin,T AN Zhen 2fan,HU W en 2bin,ZENG Bo 2wen(College of Aut omati on,Harbin Engineering University,Harbin 150001,China )Abstract:This paper describes how t o construct e mbedded 2L inux operating syste m on the PC104p latfor m and the p rinci p le of leading it t o the computer at startup.A m ini m al L inux syste m constructed on the CF card is p r oposed which uses the least computer res ource .And the needed file syste m f or constructi on of comp lete e mbedded L inux is de monstrated by use of a series of s oft w are t ools such as the Grub and Busy Box.Keywords:e mbedded L inux;PC104;Grub;Busy Box;CF Card收稿日期:2006-01-06.作者简介:许德新(1979-),男,讲师,博士.主要研究方向:导航、制导与控制,E 2mail:xudexin@hrbeu .edu .cn . 对于操作系统而言,L inux 有着理想的特性:低成本、高可靠性、极好的网络和多任务支持,更重要的是他的开放源码,让使用者不仅能免费使用,更能够根据自身需要量身定制.因此除了节省支出成本之外,能更自由、更有弹性地根据自己的需要来修改系统、开发产品.嵌入式系统市场是L inux 最重要的应用领域之一,几乎所有的嵌入式产品都可以利用L inux 来完成.在制作Embedded L inux 都会面临到要如何利用最少的系统资源,来建构一个特定嵌入式环境的问题,本方式包含有把L inux Kernel [1]依所要执行的目标环境量身打造,建构一个符合该硬件平台的L inux Kernel,避免不必要的核心功能与驱动程序,并且利用动态函数库来减少储存空间.PC104作为相当广泛的嵌入式计算机平台,将量身定做的L inux 操作系统移植于其上,无疑是一件很有意义的事情.1 PC104主板上嵌入式L inux 的实现要在一块配置为集成有586CP U 、64Mb 内存、网卡、VG A 显示卡、串口、并口、32MbCF 卡、软驱接口、I D E 接口、键盘接口、鼠标接口、CRT 接口的PC104主板上实现一个能从CF 卡启动并能运行L inux 的shell 的嵌入式L inux .这样的工作需要完成内核和文件系统的裁减以及整个系统移植到CF 卡上3个部分.1.1 L inux 的启动过程图1 L inux 的启动过程系统加电自检后,位于B I O S的ROM中的引导装入程序开始寻找引导扇区,引导装入程序可以选择lil o或者grub,这里选择grub.首先加载你所选择的操作系统内核,接着内核加载并运行init程序. init程序读取/etc/inittab文件,这个文件指定了系统默认的运行级别,然后根据文件内容先由bash运行系统初始化脚本/etc/rc.d/rc.sysinit,进行诸如文件系统检查和加载、时钟设置、主机名设置等初始化工作.然后根据默认的运行级别调用/etc/rc.d/rc脚本,来启动一些服务程序,如htt p等服务.接着运行m ingetty,它使得你能够通过一个虚拟控制台进行登陆.当用户输入用户名之后,l ogin程序开始运行,它请求用户输入密码并核对密码,如果密码准确为用户调用默认的shell.至此,一个简单的L inux启动过程就结束了.1.2 内核的交叉编译为了构建目标系统(PC/104)的L inux运行环境,先要在主机系统上搭建一套完整的编译开发环境.编译开发环境可以使用商业发行版的L inux,如RedHat L inux,也可以使用W indows下的虚拟机软件如VMW are[2]等.由于目标系统与主机系统的软件和硬件配置不一样,因此需要采用交叉编译环境.所谓交叉编译是指当主机系统和目标系统的体系结构与操作系统不兼容时,将在主机系统上的编译的可执行程序应用到目标系统上运行的编译方法.内核是操作系统中最重要的部分,其地位相当于人类的大脑.就L inux而言,是指/boot目录下的v m linuz[4]文件.内核负责整个嵌入式系统的运行,包括硬件外围、应用程序等.现在的L inux内核已经开发到2.6.X版本.这样的内核几乎已经包含了所有的常见硬件设备的驱动程序,以及最新的通讯协议等等,而且所支持的文件系统的类型也是非常之多,可谓功能非常强大.由于其内核是以源代码的形式发布的,所以方便了裁减.裁减L inux内核主要就是根据目标板的硬件特点配置内核的编译选项.因此清楚地知道自己的目标板的硬件配置是必须的,尤其是各种适配器、控制卡使用的I RQ、DMA以及I/O地址等.编译内核的操作是图形化配置的,基本上一目了然,具体操作命令及步骤如下.下载L inux内核源代码,然后照如下命令操作:#make m r p r oper#make menuconfig之后会出现图形化配置界面,按提示和自己已知的硬件配置进行选择就可以了.接着执行#make dep#make clean#make bzI m age编译过程结束后,在目录../SRC/arch/i386/ boot/下的文件bzI m age即为满足目标PC104计算机的L inux内核.1.3 利用Busybox[3]创建根文件系统Busyox被非常形象地称为嵌入式L inux系统中的“瑞士军刀”,因为它将许多常用的UN I X命令和工具结合到了一个单独的可执行程序中.虽然与相应的G NU工具比较起来,busybox所提供的功能和参数略少,但在嵌入式系统中已经足够了.busybox源程序可在网络上找到相应的软件包.假设安装后源码目录为/../src/busybox,修改/../ src/busybox/Config.h文件,在不用的功能前加//,修改/../src/busybox/Makefile文件,将DOST ATI C 处改为T RUE.执行make(生成的名为busybox的文件大小应在650K左右),然后在主机上用mkdir命令建立一个临时文件目录.具体操作是mkdir/t m p/filesys2 te m.make PREF I X=/t m p/filesyste m install(此时在/ t m p/filesyste m目录下即有L inux启动运行所必须的目录和文件了).1.4 嵌入式L inux操作系统到CF卡的移植目标硬件系统为PC104计算机,所用存储设备为CF卡.所以做完内核编译及文件系统的创建后,最后要做的就是实现将内核和文件系统移植到CF 卡上,当然,这个过程不是简单的复制就能实现的,因为如果需要PC104计算机能从CF卡上启动L inux操作系统,必须有相应的引导程序,这里采用GRUB软件进行内核引导.具体步骤如下:・63・应 用 科 技 第33卷取一张CF卡,用读卡器连接到运行标准L inux 操作系统的台式计算机上,首先用Fdisk命令格式化CF卡,fdisk/dev/sda;然后建立文件格式,mkfs. ext3/dev/sda,这里采用ext3格式,sda代表是通过US B接口连接到计算机上的.接下来要将CF卡挂载到计算机上,以便将准备好的内核文件及根文件系统移植到CF卡上.用mount命令挂载CF卡后,在CF卡上用mkdir命令建立/mnt/cf/boot及/mnt/ cf/boot/grub等目录.下面开始将Grub引导程序安装到CF卡上,这样在PC104启机的时候,就会由Grub将内核文件进行引导并执行.安装的步骤如下:首先按照目标机修改下载的Grub安装包中的grub.conf文件,执行Grub文件,进入Grub的命令模式,在grub>提示符下输入r oot(hd1,0),由于现在的CF卡不是当前启动硬盘,所以硬盘参数不是hd0而是hd1.下一步在grub>提示符下输入setup(hd1),这样grub在CF 卡上的安装就结束了.最后一步在grub>提示符下输入quit,即可退出安装模式.引导程序装载成功后,最后工作是所有文件和文件系统的移植.将编译成功生成的内核文件bzI m2 age拷贝到CF卡的boot目录下,将Grub目录下的文件拷贝到CF卡的grub目录下.文件系统移植具体操作如下:将/t m p/filesyste m文件夹下的目录拷贝到CF卡,可执行文件的拷贝方式为mknod命令,或者更为简单的命令cp-dpR即可将主机上的文件移植到CF卡上,特别注意的是如果直接进行拷贝,文件将不能执行.2 结束语本文开拓性地将嵌入式L inux操作系统完整地移植到CF卡上,将CF卡插入PC104计算机,便可将操作系统导入.在台式机上开发完成的应用程序,只需复制到CF卡上,便可以在PC104计算机上运行,实现了嵌入式系统开发的方便性.只要有一台运行L inux操作系统的台式机、一块CF卡以及U sb读卡器、一块PC104计算机主板,整个开发过程就可以顺利进行.参考文献:[1]博嘉科技.L inux内核分析与实例应用[M].北京:国防工业出版社,2003.[2]李善平,刘丈峰,王焕龙,等.L inux与嵌入式系统[M].北京:清华大学出版社,2003.[3]皱思轶.嵌入式L inux设计与应用[M].北京:清华大学出版社,2002.[4]毛德操,胡希明.L I N UX内核源代码情景分析[M].杭州:浙江大学出版社,2001.[责任编辑:李玲珠]・73・第10期 许德新,等:嵌入式L inux在PC104平台上的构建与实现。