カーネルがどのディスクからブートされたのか、どうすればわかりますか?

カーネルがどのディスクからブートされたのか、どうすればわかりますか?

特に同じ(-ish)システムを複数のディスクにインストールできる場合は、初期initramfs Linuxシェルスクリプトでカーネルが起動した起動ディスクをどのように検出しますか?

ユースケースは、静的パーティションを置き換えて非ブートパーティションをマウントする場所を決定する動的ロジックなので、/etc/fstabそのファイルの出力を見てくださいmount

具体的には、RPiディスクイメージがSD / MMCカードとUSBフラッシュドライブの両方に記録されている場合、システムはどのカーネルが実行されているかどうかを確認しますか? RPi ブートローダはブートディスクの順序を制御し、root=/mmcblk0p2RPi 理由の組み合わせのため、どちらの場合も同じカーネルパラメータを使用できます。/proc/cmdline実際に検出されたカーネルルートに基づいてコンテンツが更新されますか?

[編集する]

RPiブートローダが前にいくつかのカーネルパラメータを追加しているように見えますが、それに触れないようroot=です/proc/cmdline

これは、initramfsのみを使用するシステムでは依然として「一般的な」問題である可能性があります。この場合、root=ルートファイルシステムはデバイスなしのRAMイメージにあるため、パラメータはとにかく意味がありません。

私は偶然会ったBootlin.comの素晴らしい関連ブログ投稿です。そして、それを試すとstat /02hの「デバイス」が生成され、これはデフォルトのデバイス番号0にデコードされました...文書は次の場所にあります。https://www.kernel.org/doc/Documentation/admin-guide/devices.txt「名前が指定されていないデバイス(デバイス以外のインストールなど)」と表示されます。

カーネルブートプロセスの私の漠然とした理解が正しい場合、カーネルはブートローダによってメモリにすべてロードされるので、実際にそれがどこから来たのかを知る方法はありません。

しかし、もっと深いブートローダー関連の項目を見つけて解析できなかったのは幸運ではないと思います。

関連情報