分享
 
 
 

从EPROM引导Linux

王朝system·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

本文简要介绍从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在我们的应用程序中工作的很好。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有