内存的速度大家都知道,在内存上运行的系统不仅速度快,还可以脱离存储介质,例如光盘启动时,可以把光盘拿出来; u盘启动时,则可以拔下u盘。当然,如果运行的是只读的文件系统,要支持存储数据的话,就需要存储介质了,可以把数据保存到硬盘/u盘上。
经过摸索,有2个办法可以达到目的 :
1 是把整个系统做成initrd. initrd本来就是小文件系统
用cpio把整个系统做成initrd,系统只要2个文件就可以启动了,一个内核vmlinuz,二是initrd.gz。
普通的initrd的主要用途是用来加载一些驱动,并找到真实的文件系统,最后切换根,起到一个中介的作用。而这里的initrd则不切换根了,直接运行/sbin/init。
发行版SliTaz, pudlinux也有一个版本xpud 就是这种方式。
但是initrd太大的话,loader(grub/syslinux)加载要花很长时间,还有个问题就是cpio不是设备,保存数据很麻烦,反正我没想到办法。 那位高手指点指点吧。
2 是在initrd中使用tmpfs技术把压缩的文件系统复制到内存中运行。
tmpfs 是一个文件系统,而它又是使用RAM,可以很好解决在内存中运行,而又支持保存数据。
看下面几行脚本就可以大概了解:
代码: 全选
mkdir /store
mount -t tmpfs -o size=200M none /store
mkdir /store/iso
cp -a /iso_dir/*.iso /store/iso
/sbin/losetup /dev/loop6 /store/iso/*.iso
http://ftp.ubuntu.org.cn/home/yaska/prayaya-804-hack/
用户名:ubuntu
密码:ubuntuftp
qemu/kvm运行看这里:
在启动项按f6, 把quiet splash去掉,加上boot2ram,还可以加上verbose,可以看到整个启动过程。由于iso文件120多M,所以必须最少分配300m内存。
代码: 全选
sudo kvm -cdrom boot2ram.iso -m 300
http://www.inlsd.org/forum/viewtopic.php?t=313
启动参数加上boot2ram, 把quiet splash去掉,加上verbose可以看到整个启动过程。 同样,在内存大于300m以上机器测试。
保存数据就根据帖子做就可以了。
一些链接:
有关initrd的: http://blog.linux.org.tw/~jserv/archives/001954.html
xpud的站点:http://xpud.org
SliTaz: google吧,很牛的linux系统。