当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > 32M DOM或CF嵌入式Linux系统启动盘制作

Unix/Linux
实用技巧:sys 请求:内核严重错误?没问题[ZT]
LINUX 的 HOSTID
出现这个信息:neighbour table overflow,什么原因?
如果用的是SCSI硬盘,在GRUB中显示root(hd0,0)对吗?
介绍一个下载LINUX、UNIX资料的网站,很不错
大家谁知道jdk那种.bin的安装文件是怎么做的?
如何新增一块硬盘
大侠帮我看看,怎么多了条route?
不用root密码也可以執行root的程序--Sudo
访问控制大师,使用pam来支持login的访问控制
Linux知识宝库:Kylix经典十大难题解决方法
小技巧:自制c语言编制cgi实现搜索
数据库管理员的难题,选择MySQL还是SQLServer
一托N的实现GRUB引导多个操作系统
网络技术之Linux网络的IPv6应用(1)
网络技术之Linux网络的IPv6应用(2)
网络技术之Linux网络的IPv6应用(3)
MySQL的远程连接出现错误提示分析
利用Perl列出系统环境变量清单范例
系统管理员必备常识之RAID磁盘阵列

Unix/Linux 中的 32M DOM或CF嵌入式Linux系统启动盘制作


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 102 ::
收藏到网摘: n/a


作为嵌入式系统,使用环境通常都比较恶劣,而应用又比较简单。为系统的稳定通常都需要使用DOM、CF卡一类的存储设备来代替硬盘。因此需要制作一个小于32M的linux运行系统。
使用到的软件包括:syslinux, busybox, linux kernel 2.4.18, redhat 9
作为嵌入式系统,使用环境通常都比较恶劣,而应用又比较简单。为系统的稳定通常都需要使用DOM、CF卡一类的存储设备来代替硬盘。因此需要制作一个小于32M的linux运行系统。一、准备软件环境 1.一套linux的运行环境,选用redhat 9的基本安装,需要能够编译内核方便以后重新编译内核; 2.bootloader软件,选用syslinux中的extlinux; http://syslinux.zytor.com 3.主要系统应用程序,选用busybox; busybox能够以一个小型的应用程序提供整个命令集的功能。 http://www.busybox.net 二、制作可以启动的盘 fdisk /dev/hdc1 本实验使用cf盘+cf to ide转换卡,用fdisk对盘进行分区,但这一步骤需要确认哪一个设备是cf卡。这个可以同dmesg来看。 mke2fs /dev/hdc1 格式化cf盘为ext2格式 mkdir /mnt/cf mount /dev/hdc1 /mnt/cf extlinux /mnt/cf 安装bootloader到cf卡上。 完成以后cf卡基本可以引导,现在进行一次重启动测试一下。 实验结果,只需要看到Extlinux 的信息即说明安装成功。 三、安装内核和配置引导 由于目前只是实验先不进行内核裁减,直接使用redhat 9的内核文件。 mount /dev/hdc1 /mnt/cf cp /boot/vmlinuz-version /mnt/cf/ cp /boot/initrd-version.img /mnt/cf/ vi /mnt/cf/extlinux.conf 写入一下内容: default emblinux display logo.txt

label emblinux kernel vmlinuz append root=/dev/hdc1 initrd=initrd.img splash=silent ide=nodma 首先要注意的文件名为extlinux.conf,因为在syslinux和isolinux中都是使用.cfg的后缀,这样可能会给人一个错觉认为也是用.cfg。结果,我在这个地方花了不少的时间,终于找到一个帖子提到使用extlinux.conf。 另外增加ide=nodma只适用在使用cf卡的情况,这个可以避免启动时因为读盘超时而无法继续的错误(0x58)。 完成这些步骤,内核就能引导。 这一步完成,重启能看到内核引导信息即为成功。
四、安装主要应用程序和运行环境 mount /dev/hdc1 /mnt/cf 创建需要的目录 cd /mnt/cf mkdir etc bin sbin var usr lib tmp proc initrd dev 根据busybox的说明编译,然后安装。 make PREFIX=/mnt/cf install 复制基本的dev文件 cp -arf /dev/* /mnt/cf/dev/ 需要进行一些裁减,否则会超过限制大小。 复制busybox下的examples/bootfloppy/etc目录下文件 cp -arf examples/bootfloopy/etc/* /mnt/cf/etc 编辑init.d/rcS文件 vi /mnt/cf/etc/init.d/rcS 增加 /bin/sh 复制lib 先用ldd busybox看需要哪些so 把相应的so复制到lib目录下,这一步比较关键。 复制/lib/modules和/lib/security目录到/mnt/cf/lib目录下,并进行一些裁减。
完成这最后一步,整个启动盘已经可以正常启动,并进入shell下。