不带“root=”参数的内核初始化

不带“root=”参数的内核初始化

systemd/fstab-generator.c由此可见,systemd 将其root=视为必需的内核参数,这是挂载的唯一配置源/sysroot。然而从内核/init/main.c内核/init/do_mounts.c目前尚不清楚情况是否如此。问题:如何在没有“root=”参数的情况下进行内核初始化(并告诉 systemd 支持它)?

看:https://github.com/systemd/systemd/issues/3551

答案1

do_mounts.c,该变量saved_root_name设置为root=命令行参数的值(如果存在)。该值是一个类似路径的字符串由内核传递,它通常看起来像(尽管前缀是可选的),但它实际上并不对应于任何磁盘上的路径。如果参数不存在,则使用的值;通常为 0,但可以在系统二进制文件中注入不同的值。该工具链用于包含一个名为/dev/something/dev/root=ROOT_DEVutil-linux`rdev执行此操作(仅在 x86 上)但是 它几年前就消失了

所有这一切只有在以下情况下才会发生:初始化文件系统或者初始化程序没有负责安装根(通过运行 initramfs/init应该调用mount, initrd 通过调用pivot_root)。

我不知道 systemd 部分。无论如何,除了以读写方式挂载根文件系统外,systemd 对根文件系统无能为力。

相关内容