elaine
elaine

Reputation: 119

Get current drive path from kernel

I'm writing a module that needs to read the MBR on the drive of the currently running kernel. But if I hard code /dev/sda it will read the wrong MBR if I install the module in /dev/sdb.

Is there a way to get the current drive path of the currently running kernel?

(I would use filp_open(), vfs_read() and filp_close() to read the first 512 bytes.)

Upvotes: 2

Views: 259

Answers (1)

caf
caf

Reputation: 239341

There is no such thing. The kernel doesn't know where the bootloader that loaded it was itself loaded from. The bootloader might not have been loaded from a drive at all (eg. it could have been a PXE network boot, or loaded from ROM by coreboot), and the kernel might have been loaded by another kernel with kexec rather than from a bootloader.

You will need to have the user specify somehow what device to read the MBR from, perhaps with a module parameter.

Upvotes: 5

Related Questions