wubi インストーラーの場合の動作を教えてください。Windows 内に ubuntu をインストールする場合、boot.ini ファイルに ubuntu ローダーのエントリがあります。しかし、カーネルはどのように起動しますか?カーネルをロードする前に root.disk ファイルをマウントする方法
1 に答える
0
Windows ブートローダーは、Windows 以外のオペレーティング システムを起動することができます。Wubi のコードを見ていないので具体的に話すことはできませんが、数年前に同様のソリューションを開発し、同等に機能しました。基本的に、次のことを行います。
起動中
- カーネルのコピーとカスタム initrd を C:\ ドライブのファイルに配置します。
- ルート ファイル システムの内容を含むファイル (おそらく SquashFS イメージ ファイル) を C:\ ドライブにも配置します。
- カスタム initrd を使用してブート メニューの項目の 1 つとして Linux カーネルをロードするように Windows ブートローダーを構成し、ファイル システム イメージ ファイルの場所をブート パラメーターとして渡します (この方法は、使用している Windows のバージョンによって異なります)。 .. XP と Vista の大きな違い)
Initrd の初期のユーザー空間
- ntfs-3g を使用して Windows C:\ ドライブをマウントします。
- コマンド ライン引数を解析して、ルート ファイルシステム イメージの場所を特定します。
- 次のようなサブディレクトリにイメージ ファイルをループバック マウントします。
/read_only_root
- UnionFS または AUFS マウントを構成して、読み取り専用のルート ファイル システムに書き込み可能なオーバーレイを提供します。posixovlファイルシステムを使用して、ネイティブ Windows ディレクトリを使用するか、Windows C: ドライブ上のファイル内に固定サイズの ext3 ファイルシステムを作成できます。
- すべてのマウント マジックが完了し、書き込み可能なルート ファイルシステムのように見えるディレクトリができたら、 を使用
pivot_root
してそれを新しいルート ディレクトリに変換します。 - エグゼクティブ
/sbin/init
于 2011-06-06T13:04:23.473 に答える