ramfs
ramfs是一种基于linux磁盘缓存机制的文件系统,它是在页缓冲和目录缓冲之上的一层很薄的封装,代码量极少。ramfs的底层存储是ram,ramfs在mount时可以指定size,但是你仍然可以往其上写入一个很大的文件,由此导致ram被吃光。ramfs只能被root访问。
tmpfs
tmpfs算是ramfs的加强版,它可以使用内存或swqp分区作为存储,它使用了虚拟内存的机制,它将所有文件保存在虚拟内存中。tmpfs占用的内存有大小的限制,可以在mount时设置,当写入数据会导致超过size时会报错。tmpfs可以把暂时不用的东西回写到swap分区。
rootfs
而rootfs是ramfs/tmpfs(if tmpfs is enabled) 的一个特殊实例,用于挂载真实文件系统。
initramfs
rootfs可以被打包为一个cpio压缩包,并通过initrd=
命令行参数传递给内核。也可以通过INITRAMFS_SOURCE选项直接编译进内核。
initramfs会在内核启动启动完成后被解压为rootfs,kernel将检查rootfs中是否包含init文件。如果init文件存在,内核就会执行这个文件,并且赋予PID=1的进程号。这个init程序将整个系统引导起来,包括定位并且安装真正的root设备。如果在cpio文档解压缩后的rootfs中没有init程序(init文件),内核执行旧的代码,定位并且安装root分区,执行/sbin/init程序。
initrd
initramfs是linux中现在常用的功能,在较老的linux中,用的则是initrd(initramdisk)。
initramfs不依赖于任何其他文件系统,与initramfs不同,initrd模拟了一个磁盘(增加了linux块I/O的开销),因此,initrd要求内核镜像包含该“磁盘”的文件系统驱动程序。