欢迎 chinavb 加入本站!
 免费注册  用户登陆  汇款方式  汇款确认  产品报价  联系我们  帮助中心
加入收藏
设为首页
会员体系
申请VIP
网站首页 光盘超市 软件下载 技术文章 专题 用户中心 VIP会员 技术论坛 网站留言 娱乐中心 卓越资源
今天是:2009年01月08日 星期四  您现在位于: 首页 → 技术文章 → 从EPROM引导Linux
   从EPROM引导Linux
作者:linux培训部长  出处:Unix爱好者家园unix-cd.com  更新时间: 2006年03月20日 
本文简要介绍从486单板机的EPROM引导Linux。提供了一种在无硬盘的嵌入式系统上运行Linux的方法。我们要介绍的应用程序是一个显示器上的Operator Interface,它的显示系统是由Boeing Flight Test开发的。飞行环境需要一种可以防止突然性的电源中断的机制。为了满足这样的要求,我们决定在无硬盘的系统上实现Operator Interface。 

概况 

基本的问题包括从EPROM的SSD(solid state disk)引导,将root文件系统从EPROM拷贝至一个RAM disk,从客户机加载Operator Interface软件并且执行它。本文主要讨论系统工作机制的细节以及它所使用的开发技巧。 

我们所选用的硬件为一台拥有16M RAM、一个能够容纳4M 

EPROM的PC104 SSD和其他一些PC104板的基于VME的单板机。它的BIOS支持SSD的使用。系统使用一个可编程的键盘和一块标准的VGA显示卡。 

系统操作 

引导时我们需要考虑两个选项: 

* 在DOS下使用loadlin(可以加在Autoexec.bat文件中)引导Linux 

* 安装LILO直接引导Linux 

第二种选项的好处是引导所用的时间较小。我们采用第一种方案,因为我们使用一个可编程的键盘——在DOS运行为键盘编程的软件。 

为了使系统工作,我们需要kernel-hacking。Ramdisk.c代码被改成可以从任意的块设备加载而不仅仅是从软盘。另外,我们写一个从EPROM设备的新的块设备驱动程序。 

实现EPROM设备驱动程序的第一种思想是在EPROM中生成一 

个磁盘映像。这会为我们提供一个同EPROM相同大小的RAM disk,在这种情况下大小为3.5M(SSD的DOS分区占1/2M)。为了得到一个大的RAM disk,我们使用一个压缩的磁盘映像。压缩的思想很简单,相同的扇区之存贮一次。这样的好处是磁盘映像的空白区域不占用EPROM空间。 

为了自动运行Operator interface程序,我们需要一个程序来替代getty。 

这个程序(dboot.c)应该运行登录程序,可以为指定的虚拟终端设置stdin,stdou和stderr。 

引导的过程是这样的: 

l 加电后进行内存检测 

l 加载运行AUTOEXEC.BAT的DOS 

l 运行键盘应用程序 

l 运行LOADLIN——从DOS分区中读取Linux内核执行 

l 由linux内核接管系统 

l 从EPROM中加载RAM disk 

l 转换root文件系统到RAM disk 

l init读取inittab,注意inittab执行dboot 而不是getty 

l 启动Operator interface 

开发 

下一阶段的任务是将EPROM的磁盘内容组织在一起。我们使 

用如下分区的辅助盘来完成这项任务: 

* /dev/hda1 – 80M linux system 

* /dev/hda2 - 6M EPROM 

* /dev/hda3 - 20M DOS分区 

* 使用Lilo引导 

直接对EPROM进行编程时很费时间的事。所以,我们大部分 

的开发使用辐助盘来进行。 

磁盘映像的开发首先确定需求。首先完成一个最小的系统,然后再将operator interface所需的项目加到系统中。由于我不是Unix专家,所以这个最小系统的完成是个试验、纠错的过程。我不断的试验,直到系统正常运行。 

下一步将Linux分区的内容拷贝到6M分区中,然后在DOS下进行如下操作: 

loadlin zimage root=/dev/hda2 ro 

如果系统稳定,则将6M分区载入到RAM disk。这同从EPROM中加载是相似的。为了避免对EPROM编程而测试系统,在DOS下进行如下操作: 

loadlin zimage root=/dev/hda2 ramdisk=6144 ro 

因为对ramdisk.c进行了修改,/dev/hda2磁盘映像被加载到RAM中,然后root分区转换为RAM disk。我们需要不断地修改disk image直到它正常工作为止。 

对EPROMs编程 

首先使用tar将小的disk image打包,然后解压缩到一个干净的文件系统。 

为了打包disk image。我们从Linux引导,然后加载6M分区。不要对proc文件系统执行tar命令。我们使用以下的命令: 

mount –t ext2 /dev/hda2 /mnt 

cd /mnt 

tar –cpf /tmp/eprom.tar * 

为了生成disk image,我使用另一拥有6M RAM disk的计算机和如下的命令行: 

dd if=/dev/zero of=/dev/ram count=12288 

mke2fs /dev/ram 6144 

mount –t ext2 /dev/ram /mnt 

cd /mnt 

tar –xpf ~/eprom.tar 

dd if=/dev/ram of=~/eprom.dsk count=12288 

这生成一个eprom.dsk文件,我们使用med.c程序将disk image(eprom.dsk)写入EPROMs(即对EPROMs编程)。 

Med ~/eprom.dsk ~/eprom.img 

然后EPROM程序员将EPROM image刻入EPROM中。 

DOS boot SSD 
SBC的SSD功能帮助我们构建disk image。DOS SSD disk最少需要如下的文件:DOS引导文件,command.com,autoexec.bat,键盘加载程序,loadlin与zImage。 

结论 

辅助盘上的开发工作量很大,我们需要采取措施来减少工作量。EPROM disk在我们的应用程序中工作的很好。
 (本文已被浏览 1720 次)
 发布人:sdccf
 → 推荐给我的好友
上篇文章:在Linux下安装gd-1.8.1
下篇文章:Grub轻松解决单硬盘3OS+n个Linux多系...
 相关文章:
很强悍!Ubuntu也能玩Photoshop CS2 35款Linux发行版名字的含义
Sybase Ase 12.5 for Linux全攻略 SYBASE 12.5 for Linux安装
红旗软件宣布推出支持英特尔MID的Midinux操作系统 使用Windows Vista引导Linux
Linux下的绘图程序-Gogh Linux DOSBOX 运行DOS游戏
VMware 6 Linux 版本下载安装配置编译序列号注册码 2007年八款最令人上瘾的Linux游戏
Linux系统下的攻击软件全接触 远程网络安装RedHat Linux系统的方法
六脉神剑捍卫企业 Linux系统(三) 六脉神剑捍卫企业 Linux系统(二)
在Linux高负载下mysql数据库彻底优化 VMware下编译Linux内核(2.4.32)全过程
Linux截图与考屏方法总结 基于网络的RedHat Linux无人值守安装
用比较法学Linux基本命令 Linu系统管理新手要了解的十个知识点

相关搜索
查看百度中关于从EPROM引导Linux的更多内容
查看google中关于从EPROM引导Linux的更多内容
   文章分类
操作系统 |
SCO_UNIX  Sun_Solaris  IBM_AIX  HP_UX  Linux  BSD  Tru64_UNIX 
通用UNIX知识  Windows  Minix 
程序设计 |
Shell编程  C/C++  汇编  PHP  JAVA  Perl  Python 
ASP/HTML  XML  中间件 
数据库 |
Oracle  Informix  Sybase  Fox  DB2  SQL  MySQL 
PostgreSQL 
网络应用 |
网络应用 
计算机硬件 |
计算机主机  打印机  路由器  交换机  终端  磁带机  MO 
刻录机  终端服务器  调制解调器 
   文章评论
  → 评论内容 (点击查看)   共0条评论,每页显示5条评论   浏览所有评论
(没有相关评论)
  → 发表我的评论
您的姓名: 您的Email:
评论内容:
250字内
发表评论:      发表评论须知 →
  • 尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法;
  • 本站有权保留或删除您发表的任何评论内容;
  • 关于我们 ┋  网站留言 ┋  网站地图 ┋  友情链接 ┋  与我在线 ┋  汇款确认 ┋  管理 ┋  TOP
    Unix爱好者家园  http://www.unix-cd.com/
    联系我们:sdccf@163.com
    腾讯QQ: 7644599
    备案序号:鲁ICP备05000455号
    Copyright (c) 2001-2008 Unix-cd.com. All Rights Reserved.