我对此进行了一些网络搜索,但只能找到有关获取与设备节点关联的内核模块的结果。无论如何,我是否可以获得当前系统根设备的主设备号和次设备号,以及根设备的父设备(如果适用)(例如,
/dev/sda
是/dev/sda2
的“父级”)?内核是否导出一些函数来获取它,或者我需要间接获取它?
没有可移植的方法,因为您没有指定上下文(中断上下文、进程上下文或整个系统上下文)。 当然,根索引节点是上下文相关的资源。 如果您处于中断代码中或独立于进程上下文,则您将没有全局根设备。
当然,获取系统根文件系统的唯一与上下文无关的方法是导航挂载表(全局)以获取没有“挂载”位置的条目。 应该有一个,而且只有一个。 否则,每个进程都有一个根 inode 和一个当前工作目录 inode。 拥有不同的系统范围根文件系统应该没有问题,以实现与根文件系统没有连接的类似监狱的容器。