我知道它们是两个不同的实体。 Rootfs 是一个文件系统,描述如何存储和访问数据。内核是实际执行的代码。
但是,内核代码不是存储在Rootfs中吗?
那么为什么它们存储在闪存中的不同分区上呢?我总是看到嵌入式系统中 emmc 设备的分区布局,例如一个分区用于内核,另一个分区用于 Rootfs。这让我很困惑。
答案1
较旧的引导加载程序只能挂载原始文件系统,因此内核保持在引导状态,操作系统保持在根状态。防止由于文件系统已满而导致某些类型的故障的一种方法是为每个事物提供其自己的文件系统。多个分区的另一个便利是可以轻松地单独备份和恢复它们。有些文件系统是 ZFS、BTRFS、LVM?本身不使用 Linux 内核的引导加载程序不支持。
这些想法的问题在于,如果引导卷已满且有大量其他可用空间,则更新内核可能会失败。快速增量快照仅适用于高级文件系统。
因此,由操作系统发行版来决定进行哪些权衡。
完全独立于文件系统,有一些功能(安全性和其他)将内核映射到内存,然后使用硬件和/或软件限制对该内存的访问,以强制执行权限并减轻权限升级。看用户模式与内核模式。
答案2
内核是驻留在 RAM 中的可执行代码。 rootfs 是系统的基本文件系统(最初是 ramfs 或 tmpfs),但更常用来指代某种类型的文件系统(例如 ramfs、ext2/3/4、jffs2、ubifs)中的文件集合,这些文件系统由基本的初始化和用户空间程序组成。两者都是启动 Linux 系统所必需的。
摘自一个姐妹社区,其中有人问了类似的问题。点击这里了解更多信息。