1

wubi インストーラーの場合の動作を教えてください。Windows 内に ubuntu をインストールする場合、boot.ini ファイルに ubuntu ローダーのエントリがあります。しかし、カーネルはどのように起動しますか?カーネルをロードする前に root.disk ファイルをマウントする方法

4

1 に答える 1

0

Windows ブートローダーは、Windows 以外のオペレーティング システムを起動することができます。Wubi のコードを見ていないので具体的に話すことはできませんが、数年前に同様のソリューションを開発し、同等に機能しました。基本的に、次のことを行います。

起動中

  1. カーネルのコピーとカスタム initrd を C:\ ドライブのファイルに配置します。
  2. ルート ファイル システムの内容を含むファイル (おそらく SquashFS イメージ ファイル) を C:\ ドライブにも配置します。
  3. カスタム initrd を使用してブート メニューの項目の 1 つとして Linux カーネルをロードするように Windows ブートローダーを構成し、ファイル システム イメージ ファイルの場所をブート パラメーターとして渡します (この方法は、使用している Windows のバージョンによって異なります)。 .. XP と Vista の大きな違い)

Initrd の初期のユーザー空間

  1. ntfs-3g を使用して Windows C:\ ドライブをマウントします。
  2. コマンド ライン引数を解析して、ルート ファイルシステム イメージの場所を特定します。
  3. 次のようなサブディレクトリにイメージ ファイルをループバック マウントします。/read_only_root
  4. UnionFS または AUFS マウントを構成して、読み取り専用のルート ファイル システムに書き込み可能なオーバーレイを提供します。posixovlファイルシステムを使用して、ネイティブ Windows ディレクトリを使用するか、Windows C: ドライブ上のファイル内に固定サイズの ext3 ファイルシステムを作成できます。
  5. すべてのマウント マジックが完了し、書き込み可能なルート ファイルシステムのように見えるディレクトリができたら、 を使用pivot_rootしてそれを新しいルート ディレクトリに変換します。
  6. エグゼクティブ/sbin/init
于 2011-06-06T13:04:23.473 に答える