1. initrd
2. initramfs
3. nand/mmcblk/ usb/ nfs
基于android的根文件系统:
android编译完后生成三个image: boot.img, system.img, recovery.img. 它们都可以制作成根文件系统。
boot.img 是root目录生成的。
system.img是system目录生成的。
data.img 是data目录生成的。
recovery.img .....
这些目录都是用make_ext4fs命令生成的。这个命令可以把一个目录打包成ext4的image文件系统。 具体操作可参照build/core/Makefile.
make_ext4fs生成的文件系统需要用simg2img工具去除spair信息后才能mount.
initrd, 即ramfs.
它的操作方法很简单,只要把生成的ext4文件系统直接加载到内存,然后设置好bootargs即可。需要注意的是initrd=addr,size要与kernel中的RAM_size要区配。否则kernel会输出RAMDISK: ...... too large. 的提示信息。
kernel编译时必须要选上 Device Driver--> Block devices--> ram block device support 及size.
bootargs参数; root=/dev/ram0 rw rootwait mem=64M initrd=0x40000000,0x1400000 console=ttyS0,115200
uboot cmd# fatload ...... 0x40000000 boot.img.ext4 #此处还可上传cpio格式的image.
initramfs
这个必须在kernel中选中 General Setup-->Initial RAM filesystem 及 source.
initramfs只能是cpio格式的image. 生成它可以用kernel里边的scripts/gen_initramfs_init.sh命令。生成的cpio文件在usr/initramfs_init.cpio
把android中的root目录下的文件打成initramfs可以直接启动, busybox打成initramfs时没有输出,原因未知,可能与/dev/console有关。
nand/mmc/usb/nfs
pass ...