5.把虚拟盘挂在节点/mnt/loop上
#mount –t ext2 /dev/loop0 /mnt/loop
6.用cp –af命令将所需要文件拷贝到虚拟盘上
cp –help查看cp 用法。cp –arf … -r表示拷贝目录
/bin, /dev, /etc, /lib, proc, /sbin, /usr都是不可或缺的目录,建议保留/tmp,/var,不过可以为空。而为多用户提供可扩展环境的所有目录(例如/home、/mnt、/opt、/root)都应该省略。
用cp复制文件时,建议把已建立好的文件系统中的内容全部拷贝过来,这样比较简单,不需要再去编译安装busybox等。当然自己也可以那样去做。
7.卸载文件系统,得到的/tmp/loop_tmp就是文件系统映象。
#cd /mnt/loop以外的目录 (否则会提示无法卸载,设备busy)
#umount /mnt/loop
8.压缩文件系统映象
#gzip –v9 /tmp/loop_tmp >/tftpboot/ramdisk.gz
在/tftpboot下生成了ramdisk.gz,这样一个内存文件镜象生成了。
或只是#gzip –v9 /tmp/loop_tmp,则就是在/tmp下生成loop_tmp.gz文件,一样的。
在上述的自己建立文件系统中,第3条用 losetup命令把块设备文件/dev/loop0与临时文件/tmp/loop_tmp联系起来了,我的理解是/tmp/loop_tmp必须是块设备文件,所以用/dev/loop0与之相关联,然后对/dev/loop0的操作和对其虚拟盘的操作,就间接作用在文件系统映象 /tmp/loop_tmp上。
三、自己建立根文件系统(与二中不同)
1.建立loop设备的临时挂载点
#mkdir /mnt/loop
2.建立文件系统映象
#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360
以上2条同二中是一样
3.mke2fs –F –v –m 0 /tmp/loop_tmp
此处-F选项将可迫使mkefs2在文件上运行。否则mke2fs会抱怨/tmp/loop_tmp不是个块设备(在上面说了,我的理解是/tmp/loop_tmp文件映象必须是块设备文件,前面的做法是用块设备文件/dev/loop0与之相关联)。-v 选项指出mke2fs应该以verbose模式执行,-m 0指出不必在文件系统上为“超级用户”保留任何区块,因为在嵌入式系统中通常是单用户系统,为“超级用户”保留区块没有意义。
4.挂载映象文件
#munt –o loop /tmp/loop_tmp /mnt/loop
挂载后,在/mnt/loop下就可以对文件系统的内容进行操作。
5.cp操作,同二中的第6条
6.卸载映象文件
#umount /mnt/loop
7.压缩映象文件
#gzip –v9 /tmp/loop_tmp
第三中的做法与第二中的做法不同,在第二中,把块设备文件/dev/loop0与映象文件/tmp/loop_tmp相关联,然后对/dev/loop0及虚拟盘进行操作,就作用在/ltmp/loop_tmp上。
而第三中,是直接对映象文件/tmp/loop_tmp进行操作,用mke2fs –F …将其当作块设备文件进行操作。