构建pc104上的linux系统平台

上传人:宝路 文档编号:21420784 上传时间:2017-11-23 格式:DOC 页数:6 大小:29.32KB
返回 下载 相关 举报
构建pc104上的linux系统平台_第1页
第1页 / 共6页
构建pc104上的linux系统平台_第2页
第2页 / 共6页
构建pc104上的linux系统平台_第3页
第3页 / 共6页
构建pc104上的linux系统平台_第4页
第4页 / 共6页
构建pc104上的linux系统平台_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《构建pc104上的linux系统平台》由会员分享,可在线阅读,更多相关《构建pc104上的linux系统平台(6页珍藏版)》请在金锄头文库上搜索。

1、构建 PC104上的嵌入式 Linux 系统平台构建 PC104 上的嵌入式 Linux 系统平台 为了适应目前嵌入式系统操作平台在性能、成本、可靠性等各方面的要求,论述了以 Linux 作为操作系统平台的优势,分析了以 PC104 卡和 CompactFlash 卡构造带图形用户界面 (GUI)的 Linux系统的关键技术. 0 前言 嵌入式系统的商品化操作系统十分丰富,如 Palm OS、VxWorks、pSOS、Neculeus 和Windows CE 等。高端嵌入式系统要求许多高级的功能,但其价格也相对昂贵,一般用户难以接受。微软的 Windows CE 也有此类功能,却不具备大多数嵌

2、入式系统要求的实时性能,而且难以移植。 Linux 为嵌入式系统提供了一个极有吸引力的选择,对于嵌入式系统而言,性能、成本和可靠性是最至关重要的三个因素。首先,众多文献资料表明,Linux 是当前可获得的最简捷、最快速的操作系统 ,其性能优越之处,是把图形处理为一个用户级的应用,图形可根据需要被选择是否运行。Linux 系统中存在适度复杂的图形界面,但是它们并没有与操作系统的内核紧紧捆绑在一起,图形界面可按需求关闭。这样就可以在 Linux 内核上运行专门为嵌入式系统定制的图形系统,从而获得优越的性能。其次,Linux 系统源代码完全公开,可以用非常便宜的价格得到各种 Linux 分发版,不必

3、考虑许可成本,将用户从许可证的限制中解脱出来,无需去为资金短缺而烦忧。Linux 能正常运行于内存缺乏,容量紧张的系统中,减少在硬件升级上的开支。另外,在系统稳定性方面,Linux几乎不崩溃,Linux 的稳定性是由于它没有像其它操作系统一样内核极其庞大。考察资料表明,Linux 与其它 Unix 系统和大型操作系统如 VMS、IBM 大型机等一样具有相同的可靠性。在上述优势之外,Linux 还拥有众多硬件支持的特点和强大的网络支持功能。正因为 Linux 在价格、性能、稳定性以及用户定制等方面的突出优势,用它来构建系统操作平台是一个很不错的解决方案。 1 开发中的关键问题及解决方案 1.1

4、硬件及软件环境 Linux 系统的硬件环境以 PC104 卡为核心,卡上集成美国国家半导体公司(NS Geode)GX1 300MHz CPU,SVGA/LCD/LAN 接口以及增强型 IDE 硬盘接口,支持 CompactFlash 卡。硬盘和光驱接至 PC104 的 IDE1 口,设置跳线使硬盘为主设备( master) ,光驱为从设备(slave) ,CompactFlash 装在 IDE2 口,设为主设备,这样 Linux 识别 CompactFlah 卡为/dev/hdc,而硬盘和光驱分别为/dev/had,/dev/hdb.我的 Linux 开发系统是 Red Hat 7.2 版,

5、通过 PC104 上的光驱安装在硬盘上。 CompactFlash 卡容量为 32M,如果系统的 BIOS 支持自动检测,应该可以直接探测到它。如果不行的话,需要自己输入卡的各项参数。确保不要带电插拔 CompactFlash 卡,因为这可能导致卡上数据的丢失。 由于像 Red Hat 或 Mandrake 这样的 Linux 分发版体积庞大(如果带 X-Windows 基本都在 1G以上) ,是不可能装在容量只有 32M 的 CompactFlash 卡上的。目前有许多小型的嵌入式 Linux版本,比较有名的有: ETLinux 设计用于在小型工业计算机,尤其是 PC/104 模块上运行的

6、Linux 的完全分发版。 LEM 运行在 386 上的小型(8 MB)多用户、网络 Linux 版本。 LOAF Linux On A Floppy分发版, 运行在 386 上。 uClinux 在没有 MMU 的系统上运行的 Linux。目前支持 Motorola 68K、MCF5206 和 MCF5207 ColdFire 微处理器。 出于深入了解 Linux 系统运行环境和机制的想法,建议自己构建 Linux 系统,这对于将来系统内核版本的升级和应用功能的拓展很有好处。选择 Red Hat 7.2 的 Linux 版本。 1.2 系统分区和格式化 首先,需要在 CompactFlash

7、 卡上建立分区和格式化,在 Linux 下用 fdisk 命令可以在CompactFlash 卡上创建分区,命令格式为 fdisk /dev/hdc,然后用 mke2fs 命令创建 ext2 文件系统. 1.2 系统分区和格式化 首先,需要在 CompactFlash 卡上建立分区和格式化,在 Linux 下用 fdisk 命令可以在CompactFlash 卡上创建分区,命令格式为 fdisk /dev/hdc,然后用 mke2fs 命令创建 ext2 文件系统. 1.3 编译内核 接下来要做的事情是编译一个自己的内核。内核负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的

8、性能和稳定性。从技术上而言,Linux 是一个内核,而且只是一个内核。其余我们通常称之为 Linux (例如一个 shell 和编译器)的部分实质上只是整个软件包的一部分,它们从技术上而言是与 Linux (内核)分开的。选择与开发系统一样的内核版本 2.4.7,在 Linux 内核版本发布的官方网站 http:/www.kernel.org 上可以找到内核源代码。 在编译内核的时候,由于内核是在特定的机器上使用的,所以应该对机器的情况了如指掌。另一方面,为了降低过高的复杂性,可以不用 kernel module 支持,把所有需要的东西直接编译到内核里。IDE 支持是必不可少的,因为 Linu

9、x 认 CompactFlash 卡为 IDE 硬盘,Frame buffer 的支持也是必要的,这来源于 GUI 系统 MiniGUI 的要求,网络支持可以不要,但是如果认为显示屏将来有这方面的要求也可以把它加上。 1.4 创建根文件系统(Root Filesystem) 在编译好内核后,需要在 CompactFlash 卡上创建根文件系统。每台机器都有根文件系统(一般在本地盘中,当然也可以在 RAM 盘或网络盘中),它包含系统引导和使其他文件系统得以 mount 所必要的文件,根文件系统应该有单用户状态所必须的足够的内容。还应该包括修复损坏系统、恢复备份等的工具。 如果有一个任务比其它任务

10、更能简化从头构建 Linux 根文件系统过程的话,那就是构建和安装 BusyBox 软件包。BusyBox 是一个可执行文件,它提供许多其它常用命令行工具的功能,所有这些功能都合为一体。BusyBox 的文档声称构建一个有效系统所需要的全部就是 BusyBox 和/dev、/etc 以及内核 而且他们没有开玩笑。 Busybox 编译出一个单个的独立执行程序,就叫做 busybox。但是它可以根据配置,执行 ash shell 的功能,以及几十个各种小应用程序的功能。这其中包括有一个迷你的 vi 编辑器,系统不可或缺的 /sbin/init 程序,以及其他诸如 sed, ifconfig, h

11、alt, reboot, mkdir, mount, ln, ls, echo, cat . 等等这些都是一个正常的系统上必不可少的。但是如果我们把这些程序的原件拿过来的话,它们的体积加在一起,让人吃不消。可是 busybox 有全部的这么多功能,大小也不过 100K 左右。而且,用户还可以根据自己的需要,决定到底要在 busybox 中编译进哪几个应用程序的功能。这样的话,busybox 的体积就可以进一步缩小了。Busybox 的具体编译和配置方法请参阅 Busybox 的官方文档,用户可以在 http:/ 系统启动后内核调用的第一个进程是/sbin/init。init 进程是系统所有进程

12、的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载 init 程序,它的进程号是 1。init 程序需要读取/etc/inittab 文件作为其行为指针,inittab 是以行为单位的描述性(非执行性)文本,inittab 文件至少应该包含下面几行: :sysinit:/etc/init.d/rcS /运行系统公共脚本 :respawn:/bin/sh /立即进入 shell 环境 :ctrlaltdel:/bin/umount -a /捕捉 Ctrl+Alt+Del 快捷键,退出系统 由于 init 进程第一个执行的脚本文件是/etc/init.d/rcS,编辑 rcS 文件: #

13、! /bin/sh mount -a 接着还需要编写/etc/fstab 文件: proc /proc proc defaults 0 0 none /var/shm shm defaults 0 0 1.5 安装系统引导工具(boot loader) 现在 CompactFlask 卡上新的内核已经有了,文件系统也已经建好了,接着要做的事情是安装系统引导工具(boot loader) 。目前可以选用的引导工具很多,象 LILO 或 GRUB 都是挺不错的,用户可以按自己的喜好来选择。在这里我们选用 LILO,它在硬盘开始的 MBR 写入引导代码,这些代码不经过文件系统,直接从硬盘扇区号读内核

14、映象(kernel image)装入内存。那么要如何安装 LILO呢?首先需要根据用户系统的搭建情况编辑/etc/lilo.conf 文件,下面是我的/etc/lilo.conf 文件,配有注释,你可以根据自己的情况进行更改,具体你可以参考 LILO mini-HOWTO: boot=/dev/hdc #从 CompactFlash 卡启动 disk=/dev/hdc bios=0x80 #使 BIOS 认 CompactFlash 卡为启动盘 delay=0 #可选,以秒为单位 vga=0x311 #可选,参照 Frame buffer 的配置 image=/boot/vmlinuz-2.4

15、.7 #内核文件位置 root=/dev/hdc1 #root 分区位置 label=CompactFlash #嵌入式 Linux 的名字 read-write #以 read-write 方式 mount 根文件系统 编辑完/etc/lilo.conf 后,将它写到 CompactFlash 卡上,假设 CompactFlash 卡已经被 mount到了/mnt/CompactLinux 目录下,运行命令: /mnt/CompactLinux/sbin/lilo -r /mnt/CompactLinux -C etc/lilo.conf 使用这个命令时必须非常小心,它可能会破坏开发系统上的

16、引导系统而使它不能启动,为确保安全应在运行此命令前先创建系统引导软盘。 嵌入式 Linux 系统的雏形建立完成后,应先对其进行简单测试。关上 PC104 卡的电源,拔下接在IDE1 口的硬盘和光驱,合上电源重启 PC104,在 BIOS 中设置 IDE1 口硬盘为 None,存盘退出BIOS,进入 CompactFlash 卡上的系统。如果系统可以一直运行到出现 shell 提示符#,那就证明Linux 平台已经初步搭建成功了。 1.6 MiniGUI 现在面向嵌入式 Linux 系统的图形用户界面很多,如 MicoroWindows/NanoX ,OpenGUI,Qt/Embedded,MiniGUI 等,我们选用的是 MiniGUI . MiniGUI 是由魏永明主持,并由许多自由软件开发人员支持的一个自由软件项目(遵循 LGPL 条款发布) ,其目标是为基于 Linux 的实时嵌入式系统提供一个轻量级的图形用户界面支持系统。该项目自 199

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号