方法1: 利用/dev/ram1:
linux下有很多ram,我们用ram1,首先把ram1格式化成ext2文件系统[root@gucuiwen babylinux]# sudo mkfs.ext2 -m0 /dev/ram1将ram1挂装到文件系统中:先建立一个挂装点:#mkdir /mnt/ram挂上ram1:# sudo mount /dev/ram1 /mnt/ram将先前做好的rootfs根文件系统拷贝到ram1上.# sudo cp -R dist/* /mnt/ram/拷贝好根文件系统后卸载ram1:# sudo umount /dev/ram1再用dd把这个ram1以映象方式取出来:[root@gucuiwen babylinux]# dd if=/dev/ram1 of=initrd.img读入了 8192+0 个块输出了 8192+0 个块把生成的initrd.img拷到一个地方备用gzip -v9 initrd.img //压缩成initrd.img.gz方法2 : loop device和ram disk.
loop device:
创建fs image:dd if=/dev/zero of=image.file bs=1k count=100000losetup /dev/loop0 image.filemke2fs -c /dev/loop0 100000加载:mount -t ext2 /dev/loop0 /mntumount /mntlosetup -d /dev/loop0或者mount -t ext2 -o loop image.file /mntumount /mntloop device将一个硬盘上的文件虚拟成块设备,大小取决于losetup时那个文件的大小,断电后内容不丢失;ram disk将一块内存虚拟成块设备,大小取决于ramdisk_size启动参数,断电后内容丢失。ramdisk: 根据grub启动参数ramdisk_size决定大小,默认4MB可以格式化ram disk并往里面写文件,然后dd出来做一个fs image,但这个image大小跟ramdisk一样大(疑问:好像可以比ramdisk的容量小,因为mke2fs可以指定block数目)。综上,做一个fs image的办法还是得losetup那个好些, 不用受内存大小的限制.