私はさまざまなLinuxインストール(iso、Flash、Flashのiso、Flashのカーネル、FlashのisoファイルのルートFS...)を試しており、何が起こっているのか理解したいと思います。
私の質問は:ディストリビューション(vmlinuzとinitrd)で構築されたカーネルとramfsファイルが与えられたら、「/」ファイルシステムを見つける場所を見つけることができますか?カーネルを再コンパイルせずにそれを設定できますか?
もう1つ:カーネルが.isoファイルシステムによって生成されたループバックデバイスからルートファイルシステムをロードするときにこのプロセスをどのように設定しますか?ありがとうございます!
編集する: 実際、GRUB 構成には GRUB ルートが含まれています。実際のカーネルルートファイルシステムではありません。場所はGRUBコンテンツを含むフォルダです。
init
initrd
実際のルートは説明されているようにスクリプトで設定されます。ここ。
これは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設定を簡単に変更または更新できません。