如何检测我的内核从哪个磁盘启动?

如何检测我的内核从哪个磁盘启动?

我如何从早期的 initramfs Linux shell 脚本中检测到我的内核是从哪个可启动磁盘启动的,特别是当相同的(-ish)系统可以安装在多个磁盘上时?

用例是动态逻辑来确定在哪里挂载非引导分区作为静态分区的替代/etc/fstab,因此查看该文件或 的输出mount不是一个选项...

更具体地说,如果 RPi 磁盘映像同时写入 SD/MMC 卡和 USB 闪存驱动器,系统如何确定正在运行哪个内核? RPi 引导加载程序控制引导磁盘顺序,并且root=/mmcblk0p2无论出于何种 RPi 原因组合,在任何一种情况下都可以使用相同的内核参数。内容是否会/proc/cmdline根据实际检测到的内核根进行更新?

[编辑]

看起来 RPi 引导加载程序确实在前面添加了一些内核参数,但似乎没有触及该root=参数,因此/proc/cmdline.

对于任何仅使用 initramfs 的系统,这仍然可能是一个“通用”问题,在这种情况下,该root=参数无论如何都毫无意义,因为根文件系统位于无设备 ram 映像中。

我碰巧遇到Bootlin.com 上这篇优秀的相关博客文章,并尝试过stat /,它产生了 02h 的“设备”,它解码为主设备号为零......文档位于https://www.kernel.org/doc/Documentation/admin-guide/devices.txt说这是“未命名设备(例如非设备安装)”

如果我对内核启动过程的模糊理解是正确的,那么内核实际上无法知道它来自哪里,因为它全部由引导加载程序加载到内存中。

话虽如此,我认为我运气不好,没有找到并解析一些更深入的引导加载程序特定的东西。

相关内容