在移植Linux内核早期时,如果flash等存储设备的驱动还没写好,可以将文件系统放到内存中运行。
此时可以使用ramfs和ramdisk,即将内存的一部分用作文件系统。
ramfs就是将文件系统和内核一起编译,编译出来的镜像就包括 内核本身和文件系统 。
内核打开ramfs:

在Initramfs source file(s)选项中,填入文件系统的路径即可。
最后,uboot的bootargs中需要将init=/sbin/init修改为rdinit=/sbin/init,主要就是init和rdinit的区别。
ramdisk也是将内存的一部分用作文件系统,只不过不用像上面一样要重新编译内核。
ramdisk制作可以使用genext2fs工具或者mke2fs等工具制作。
genext2fs安装:
sudo apt-get install genext2fs
ramdisk制作脚本:
genext2fs -b 16384 -d /home/book/rootfs ramdisk.image
gzip –v9 ramdisk.image
mkimage -A arm -O linux -T ramdisk -C gzip -n 'xx ramdisk filesystem' -d ramdisk.image.gz uramdisk.image.gz
genext2fs把/home/book/rootfs制作成一个名为ramdisk.image的ramdiskgizp压缩ramdisk.image,得到ramdisk.image.gzmkimage工具生成uramdisk.image.gz给uboot使用ramdisk制作脚本:
dd if=/dev/zero of=ramdisk.image bs=1k count=15360
mke2fs –F –v –m 0 ramdisk.image
mount –o loop ramdisk.image /mnt/loop
cp -a rootfs/* /mnt/loop
umount /mnt/loop
gzip –v9 ramdisk.image
mkimage -A arm -O linux -T ramdisk -C gzip -n 'xx ramdisk filesystem' -d ramdisk.image.gz uramdisk.image.gz
过程类似,只不过是先制作一个空的镜像,然后拷贝文件系统的内容。
全部0条评论
快来发表一下你的评论吧 !