ILD

initramfs vs initrd
作者:Yuan Jianpeng 邮箱:yuanjianpeng1@gmail.com
发布时间:2026-2-9 站点:Inside Linux Development

内核文档:

https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

讲的很清楚了,


What is rootfs?

rootfs是一种特殊的ramfs,2.6内核总是编译它(没有选项可以关闭)。

它不能被卸载。新的文件系统只能挂在它上面,覆盖它。

如果开启了CONFIG_TMPFS,那么rootfs尝试使用tmpfs。

# mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime)
tmpfs on /ram type tmpfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime,mode=1777)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noatime,mode=1777)
/dev/vda on /mnt/vda type ext4 (rw,relatime)
host0 on /mnt/host0 type 9p (rw,relatime,access=client,trans=virtio)


What is initramfs?

initramfs是gzipped cpio格式的文件,它打包进linux内核镜像。内核启动后,将其解压到上面的rootfs。

启动文件是/init


和initrd的区别

initrd总是一个单独的文件,文件是一个gzipped filesystem image,例如ext2镜像。这是根本的区别。

initrd的启动文件是/initrd,并且执行完后会返回kernel。


initrd切换rootfs,使用pivot_root,然后可以卸载ramdisk。

initramfs切换rootfs,只能使用switch_root,而且不能卸载rootfs,但是可以删除rootfs下面的所有文件,节省内存。


Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.