我正在编写一个需要在当前运行的内核的驱动器上读取MBR的模块。但是如果我硬编码/ dev / sda,如果我在/ dev / sdb中安装模块,它将读取错误的MBR。
有没有办法获取当前正在运行的内核的当前驱动器路径?
(我会使用filp_open(),vfs_read()和filp_close()来读取前512个字节。)
答案 0 :(得分:5)
没有这样的事情。内核不知道加载它的引导加载程序本身是从哪里加载的。根本没有从驱动器加载引导加载程序(例如,它可能是PXE网络引导,或者是由coreboot从ROM加载),并且内核可能已被另一个内核加载kexec
而不是来自引导程序。
您需要让用户以某种方式指定从哪个设备读取MBR,可能使用模块参数。