软盘上的Linux系统方案
其他方法
将内核与文件系统进行整合,如果不用Grub引导还有两种选择,不过根文件系统就不能象上面那样打包再压缩, 也不再使用initrd。把所有根文件系统文件放到一个目录中(比如上面的rootfs/local),然后执行
dd if=/dev/zero of=/dev/ram0 bs=1k count=4096
mke2fs /dev/ram0
mount -t ext2 /dev/ram0 ramdisk/
cp -R local/* ramdisk/
umount ramdisk
dd if=/dev/ram0 bs=1k | gzip -v9 > rootfs.gz
1.将内核与文件系统放置在一张软盘上
确定内核的大小和的大小之合没有超出软盘的限制。记住内核的大小,然后将内核写到软盘上:
#dd if=bzImage of=/dev/fd0 bs=1k
353+1 records in
353+1 records out
之后,设置根设备为软盘本身,并且设置根以读写方式装载
#rdev /dev/fd0 /dev/fd0
#rdev -R /dev/fd0 0
上面这个例子表示dd写了353个完整记录和一个部分记录到软盘上,因此内核占用了软盘的前354个记录块。记住这个数字,然后设置内核的Ramdisk Word。Ramdisk Word可以通过rdev命令设置,它的内容为:
如果15位设置的话,内核在加载文件系统之前会进行提示,这在下面将内核与文件系统盘分开的情况时是必要的。
对于上面的情况,需要在0-10位指出ramdisk的偏移,并将14位置1,所以得出的ramdisk word十进制表示为:355 + 2^14 = 355 + 16384 = 16739
#rdev -r /dev/fd0 16739
之后
#dd if=rootfs.gz of=/dev/fd0 bs=1k seek=354
这样一张同时包含内核和文件系统的软盘就成功了。
2.内核与文件系统分别占用一张软盘
与上面一样
#dd if=bzImage of=/dev/fd0 bs=1k
#rdev /dev/fd0 /dev/fd0
#rdev -R /dev/fd0 0
不同的是ramdisk word为 0 + 2^14 + 2^15 = 49152
#rdev -r /dev/fd0 49152
然后换零一张软盘
#dd if=rootfs.gz of=/dev/fd0 bs=1k
内核、根文件系统、引导程序之间的整合方法有很多,他们各有各自的特点,有待读者自己思考。
八.前景
按照本文方法所构造的Linux系统虽然还不完善,但通过逐步的改进,将能做出一个有价值的系统来。真正的Linux嵌入式系统根据不同的应用方向通常还包括图形用户界面或者是网络浏览器等应用程序。值得庆幸的是很多OpenSource的项目提供了所需要的组件,结合这些优秀的开源项目,就可以形成一套真正的嵌入式Linux操作系统。
- SN2005学习系统 数字语音室解决方案(05-19)
- 以可编程DSP架构应对TD-SCDMA以及TD-LTE带来的设计挑战 (02-14)
- ARM-μCLinux嵌入式系统启动引导的实现(07-26)
- 多核处理器架构及调试方案(03-28)
- 基于DSP的电源解决方案(06-13)
- 间歇性Bug最佳解决方案(09-24)