2

我正在编写一个需要读取当前运行内核驱动器上的 MBR 的模块。但是,如果我硬编码 /dev/sda,如果我将模块安装在 /dev/sdb 中,它将读取错误的 MBR。

有没有办法获取当前正在运行的内核的当前驱动器路径?

(我会使用 filp_open()、vfs_read() 和 filp_close() 来读取前 512 个字节。)

4

1 回答 1

5

哪有这回事。内核不知道加载它的引导加载程序本身是从哪里加载的。引导加载程序可能根本没有从驱动器加载(例如,它可能是 PXE 网络引导,或者通过 coreboot 从 ROM 加载),并且内核可能已经由另一个内核加载,kexec而不是从引导加载程序加载。

您将需要让用户以某种方式指定从哪个设备读取 MBR,可能使用模块参数。

于 2013-07-28T13:48:23.063 回答