2

現在実行中のカーネルのドライブで MBR を読み取る必要があるモジュールを作成しています。しかし、/dev/sda をハードコーディングすると、モジュールを /dev/sdb にインストールすると、間違った MBR が読み取られます。

現在実行中のカーネルの現在のドライブ パスを取得する方法はありますか?

(最初の 512 バイトを読み取るには、filp​​_open()、vfs_read()、および filp_close() を使用します。)

4

1 に答える 1

5

そのようなことはない。カーネルは、それをロードしたブートローダー自体がどこからロードされたのかを知りません。kexecブートローダーはドライブからまったくロードされていない可能性があり (たとえば、PXE ネットワーク ブートであったか、コアブートによって ROM からロードされた可能性があります)、カーネルはブートローダーからではなく別のカーネルによってロードされた可能性があります。

おそらくモジュールパラメーターを使用して、MBRを読み取るデバイスをユーザーに何らかの方法で指定させる必要があります。

于 2013-07-28T13:48:23.063 に答える