怎样只读加载CF卡上的文件系统?

发表于:2007-07-04来源:作者:点击数: 标签:
我在CF卡上作了一个 Linux ,正常启动是没问题的。但是因为CF不能多次写,所以想在init时将CF卡上的root文件系统只读加载。但是在rc.sysinit中修改后,系统的init过程就不能进行了。怎样才能完美的加载CF卡上的root文件系统,同时又能正常使用Linux? 零二年

我在CF卡上作了一个Linux,正常启动是没问题的。但是因为CF不能多次写,所以想在init时将CF卡上的root文件系统只读加载。但是在rc.sysinit中修改后,系统的init过程就不能进行了。怎样才能完美的加载CF卡上的root文件系统,同时又能正常使用Linux?

 零二年的夏天 回复于:2003-11-26 19:06:40
试试fstab。

另:CF卡是什么?

:)

 ljsheng 回复于:2003-11-26 19:19:08
其实以只读的方式加载root文件系统是可以的。但是系统初始化时很多程序要写文件系统,所以初始化会失败。我知道有一种方法可以:系统以ram设备启动,然后将CF卡上的文件拷入ram盘。但是这种方法太麻烦,有点小题大作的感觉。
另:CF卡就是Compact Card。一种读写介质,需要使用读卡器读取。

 ljsheng 回复于:2003-11-26 19:20:02
想请大虾指点一下简便的方法。

 chenjn 回复于:2003-11-26 19:38:23
CF卡怎么会不能多次写呢?奇怪

 ljsheng 回复于:2003-11-26 20:17:11
CF卡的写寿命远小于读寿命,而我的CF系统要运行很长的时间,所以需要尽量不写CF卡。因此才会只读加载CF卡上的root文件系统。

 零二年的夏天 回复于:2003-11-27 09:52:33
[quote:ff582f4918="ljsheng"]其实以只读的方式加载root文件系统是可以的。但是系统初始化时很多程序要写文件系统,所以初始化会失败。我知道有一种方法可以:系统以ram设备启动,然后将CF卡上的文件拷入ram盘。但是这种方法太麻烦,有点小题大作..........[/quote:ff582f4918]

谢谢! :)

 LoveFreedom 回复于:2003-11-27 09:54:22
利用ramdisk技术实现

你写启动脚本的时候在/etc/rc.d/rc.local里面添加(假如你压缩的系统叫
sys.tar.gz ,放在/home/下)
mke2fs  /dev/ram0
mount  /dev/ram0   /mnt/ramdisk0
cd  /mnt/ramdisk0
dd if=/hom/sys.tar.gz  bs=1k |gzip -d | cpio -idv
chroot  /mnt/ramdisk0/sys/

 ljsheng 回复于:2003-11-27 11:45:26
如果在rc.local中作的话,那rc.sysinit怎么办呢?因为文件系统是只读加载的,所以在rc.sysinit的过程中就会失败的。那就只能在initrd.img中的linuxrc中做了,是吗?

 gentoo 回复于:2003-11-27 13:35:04
不用加载CF卡上的FS,把你做的文件装载在内存中(RAM0)。
我的做法是:1。先准备好你的系统,KERNEL。
2。做一个内存文件,大小自定(dd if=/dev/zero of=./ramfs bs=15M conut=1)
3.mke2fs -m 0 ./ramfs
4.挂载:mount -o loop ./ramfs /mnt/tmp
5.把你的文件系统都拷过去/mnt/tmp
6.umount /mnt/tmp
7.gzip -9 ./ramfs
这样会得到一个镜象文件。用他来做initrd就可以。
注意你的系统/etc/fstab 中/目录mount 在ram0上。

 grub007 回复于:2003-11-27 15:09:24
和一张光盘上的linux系统类似,你用isolinux来引导就可以了!

 grub007 回复于:2003-11-27 15:17:48
关于isolinux的引导过程,你可以看看isolinux的网站,很容易的,很多只读系统都是放在ram中运行的。

 ljsheng 回复于:2003-11-27 16:40:15
OK!谢谢各位大虾,小弟搞定了,呵呵!!!

 LoveFreedom 回复于:2003-12-01 17:17:49
ljsheng ,可以讲一下你是怎么实现的吗?谢谢

原文转自:http://www.ltesting.net