vmlinuzとinitrd.gzが与えられたら、カーネルが/(ルート)ファイルシステムをロードする場所をどうやって知ることができますか?

vmlinuzとinitrd.gzが与えられたら、カーネルが/(ルート)ファイルシステムをロードする場所をどうやって知ることができますか?

私はさまざまなLinuxインストール(iso、Flash、Flashのiso、Flashのカーネル、FlashのisoファイルのルートFS...)を試しており、何が起こっているのか理解したいと思います。

私の質問は:ディストリビューション(vmlinuzとinitrd)で構築されたカーネルとramfsファイルが与えられたら、「/」ファイルシステムを見つける場所を見つけることができますか?カーネルを再コンパイルせずにそれを設定できますか?

もう1つ:カーネルが.isoファイルシステムによって生成されたループバックデバイスからルートファイルシステムをロードするときにこのプロセスをどのように設定しますか?ありがとうございます!

編集する: 実際、GRUB 構成には GRUB ルートが含まれています。実際のカーネルルートファイルシステムではありません。場所はGRUBコンテンツを含むフォルダです。

initinitrd実際のルートは説明されているようにスクリプトで設定されます。ここ

これはDebianカーネルがハードドライブから起動したときにISOファイルを見つける方法です - initramfsはISOファイルを探します:http://www.debian.org/releases/stable/i386/apas02.html.en#howto-getting-images-hard-disk;GRUB 構成ノートISOの場所への参照は含まれていません。

ベストアンサー1

起動時に提供されます。ブートローダー、Grubのような。

カーネルがどのパラメータで始まったかを確認するには:

$ cat /proc/cmdline

私にとって、この結果は次のとおりです。

BOOT_IMAGE=/vmlinuz-3.5.0-13-generic root=/dev/mapper/crypt-precise--root ro

したがって、initrd/initramfsは私の/dev/mapper/crypt-precise--root(暗号化されたLVM)論理ボリュームを/

同じカーネル(マルチブート)を使用してハードドライブから別のオペレーティングシステムをロードするようにGrubを再設定するか、e(まだ起動していない)Grubエントリが選択されているときにランタイムを押してこの行を編集できます。

最近のDebianベースのディストリビューションでは、永久に変更する方法は次のとおりです。
(元のオペレーティングシステムで再起動できない場合がありますのでご注意ください!)

ファイルに/etc/default/grubいくつかの点を直接設定し、次の手順をGRUB_CMDLINE_LINUX="root=/dev/mydevice"実行してGrubを更新しますupdate-grub

ただし、マルチブートを設定することをお勧めします。そうしないと、Grub設定を簡単に変更または更新できません。

おすすめ記事