
GRUB2を使用してドライブ上の異なるパーティションをチェーンロードして、マルチブートUSBフラッシュドライブを作成しようとしています。うまくいきません。しないでくださいマルチブートフラッシュドライブの作成方法についてアドバイスが欲しいです。それを実現する方法はたくさんあることは知っています。のみこの特定の方法がなぜ機能しないのかを解明することに興味があります。
背景情報: USB ドライブが 2 つあります。USB1 と USB2 と呼びましょう。現在、マルチブートに適した方法で、どちらかに Debian Wheezy をインストールしようとしています。ここで、iso を USB1 (/dev/sdb) に dd すると、次のようになります。
dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdb
これにより、Debian をインストールできる、起動可能なドライブが作成されます。さらに、USB2 に GRUB2 をインストールすると、次のようにして USB1 を正常にチェーンロードできます。
search --label --set=root "Debian 7.0.0 i386 1"
chainloader +1
boot
さて、私の問題ですが、代わりに USB2 に 2 番目のパーティションを作成し、そこに ISO を dd すると、次のようになります。
dd conv=notrunc bs=4M if=/path/to/iso of=/dev/sdc2
チェーンロードは機能しません。エラー メッセージは表示されず、点滅するダッシュ (応答なし) の黒い画面が表示されるだけです。(両方のドライブでこれを試したので、ハードウェアの障害が原因ではないと思います)。
なぜこれが機能しないのでしょうか? まったく同じデータが含まれている場合、異なるドライブをチェーンロードすることと、同じドライブ上の異なるパーティションをチェーンロードすることの違いは何ですか?
答え1
まず、ディスク イメージはパーティション イメージとは異なります。1 つの (一見ディスク イメージのように見える) イメージを両方として使用しようとしていますが、これは誤りです。dd
エラーが発生しないからといって、すべてが正常であると想定しないでください。何らかの実際の IO エラーが発生しない限り、指示されたことは何でも問題なく実行されます。
ドライブをチェーンロードすると、GRUB はマスター ブート レコードを探します。これは、ディスク コンテンツを開始し、ブート コードを含むものです。ただし、パーティション構造は異なります。コードから開始することすらありません。ブート レコードはありますが、さらに離れた場所にあります。GRUB はそれもチェーンロードできますが、手順は異なります。ディスク イメージをパーティションに配置すると、簡単に使用できるものは何も作成されず、GRUB はそこに MBR を期待しません。代わりに、ランダムなマシン コードを実行しますが、これは PC にとって決して健全ではありません。
これを動作させるには、Debian パーティションの内容をここにコピーし、そこに GRUB をインストールする必要があります。途中で間違いがない限り、問題なく動作するはずです。 を再作成することを忘れないでください/dev/sdc2
。