如果 /dev/root 丢失,您如何确定根设备?

Mel*_*lab 4 mount filesystems

在我现在使用的发行版 Arch Linux ARM 上,Linux 是在没有初始 RAM 磁盘的情况下启动的,这意味着内核会完成挂载根文件系统的所有工作。该系统安装在 SD 卡上,上面有一个脚本,需要确定它所在文件系统的设备节点。这个设备节点可以根据我如何启动设备而改变(例如,我将它附加到另一个已经在运行的设备上)。

我能够使用df -k --output=target ${0} | sed "1d". 为了确定源设备,我运行df -k --output=source ${0} | sed "1d". 如果我已经启动到 Arch Linux,最后一个命令的结果会吐出/dev/root它不存在。当然,在某些系统上,udev 会创建一个指向/dev/root真实根设备的符号链接,但我的不会这样做。我可以查看/proc/cmdline但在内核正常运行期间保持不变的内容,因此这意味着它不可靠。

当我得到 时/dev/root,如何确定它所代表的真正底层块设备?

小智 7

这里的评论的答案非常简单。只需致电:

findmnt -n -o SOURCE /
Run Code Online (Sandbox Code Playgroud)

前提是findmnt存在...


小智 5

mount命令将显示它:

  mount | sed -n 's|^/dev/\(.*\) on / .*|\1|p'
Run Code Online (Sandbox Code Playgroud)


eck*_*kes 1

您可以使用stat /和检查设备主/次编号,或者借助命令rdev自动解释该编号。