grub:ISOから起動


41

GRUBでISOファイルを起動するにはどうすればよいですか?ISOファイルはreiserfsパーティション上にあり、GRUBはそのファイルにアクセスできます(既にテスト済みです)。


grubのバージョンは?
いんちきのキホーテ

1
ここで同じ質問が答えました
dma_k


回答:


55

ISOファイルをブートする際の最大の問題は、ブートするように設計されたISOがほとんどの場合CDからブートするように設計されていることです。Grub 2(強調鉱山)に関するMarcoのブログで説明されているよう

GRUBはISO9660(「iso」)イメージを読み取ることができます。たとえば、最初のいくつかのセクターをロードして起動できます。しかし、ほとんどの人は、「それでは?」ロードされたオペレーティングシステムは何をしますか?ほとんどの場合、CDROMを探しますが、CDROMは見つからず、失敗します。

したがってランダムISOファイルから起動する最も簡単な方法は、仮想CD(VirtualBox、VMware、またはVirtual PC)に仮想CDとしてロードし、そこで起動することです。VMにとっては、ISOファイルではなく、実際のCDハードウェア上の実際のCDであるため、これはほとんど常に機能するはずです。

ベアメタル上のISOファイルからの起動ははるかに困難です。これを行う方法は、使用しているGrubのバージョンによって異なります。また、使用しているISOとブートするように構成されたISOによって結果が異なる場合があります。これが、ほとんどのUSBからISOを起動するツール(Unetbootin、WinToFlashなど)が通常、ISOコンテンツをドライブに抽出する理由です-起動中のOSを混乱させることなく、直接アクセスできるためです。


グラブ1

... わからない。「map --hook」コマンドはGrub4DOSの拡張機能だと思いますが、可能であれば、メニューエントリはおそらくGrub4DOSによく似ています。プラス面として、GrubはGrub4DOSよりも幅広いファイルシステムをサポートしています。

reiserfsを使用したGrubに関するメモ(未確認)は、「動作させるにはパーティションをマウントする必要がある」ことを示していますnotail

Memdiskはオプションです。下記参照。


Grub4DOS

Grub4DOS 、いくつかのISOで動作する実験的な「CDエミュレーション」提供します。残念ながら、Grub4DOSはFAT32 / NTFSファイルシステムのみを読み取ります。 Grub4DOSをダウンロードします。

エントリのサンプル(source)は次のとおりです。

title fdfullcd.iso (0xFF)
  find --set-root /fdfullcd.iso
  map /fdfullcd.iso (0xFF)
  map --hook
  root (0xFF)
  kernel /isolinux/data/memdisk
  initrd /isolinux/data/fdboot.img

おそらく、Win7 ISOは次のエントリで起動できます。

title Windows 7
  map (hd0,0)/win7.iso (hd32)
  map --hook
  chainloader (hd32)

他のISOはMemdiskで起動できます:

title Boot Hardware Detection Tool from iso image (with 'iso' parameter)
  kernel /memdisk iso
  initrd /hdt.iso

PenDriveLinuxのMultiBootISOs.exeのようなメニューコンフィギュレーターを使用することもできます。ISOをフラッシュドライブに配置し、ユーティリティを実行してブートローダーをインストールし、ブートメニューを構成します。

ここだHak5エピソード GRUB4DOSをインストールするには。


グラブ2

以下に、Grub2エントリの例をいくつか示します。 チェーンローダーは現在ISOを起動するために動作しないため、これらのエントリは(1)ループバックを使用してISOを「マウント」し、(2)ISOファイルを指定するlinux行にiso-scanまたはfindisoなどを追加する必要があります。

残念ながら、これを行う一般的な方法はありません。ブートエントリはそれぞれ、ターゲットISOのコンテンツに合わせてカスタマイズする必要があります。ほとんどのLinux LiveCDは、ISOLINUXをブートローダーとして使用します。isolinux.cfgを見つけ、そのブートエントリを調べて、通常ブートするものを確認します。

エントリの例(source):

menuentry "Ubuntu Live 9.10 32bit" {
 loopback loop /boot/iso/ubuntu-9.10-desktop-i386.iso
 linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-9.10-desktop-i386.iso noeject noprompt --
 initrd (loop)/casper/initrd.lz
}

menuentry "Grml small 2009.10" {
  loopback loop /boot/iso/grml-small_2009.10.iso
  linux (loop)/boot/grmlsmall/linux26 findiso=/boot/iso/grml-small_2009.10.iso apm=power-off lang=us vga=791 boot=live nomce noeject noprompt --
  initrd (loop)/boot/grmlsmall/initrd.gz
}

Linux以外のLiveCDを起動しようとしている場合は、運が悪いかもしれません。繰り返しますが、Memdiskが役立つ場合があります

menuentry "Boot Hardware Detection Tool from iso" {
  linux16 /memdisk iso
  initrd16 /hdt.iso
}

@albert:フラッシュドライブでGrub2を使用していますが、同じことにイライラしているので、まとめるのは難しくありませんでした。私はあなたの他の質問を調べていますが、以前にISOをパーティションに「書き込み」しようとしたことがないので、興味深いかもしれません。
いんちきキホーテ

Ofc VMware内で起動することもできます(すでに実行しました)が、Windowsであり、VMwareを介してディスクにインストールすると、後で起動しなくなります(愚かなWindows ...)。
アルバート

Grub1、Grub2、Grub4DOSのいずれのオプションを最初に試すべきかを提案してもらえますか?必要なものは何でもインストールできますが、実際には問題になりません。
アルバート

@albert:以前の質問を参照して質問していますか? 私はあなたの最善の策は抽出方法を使用することだと信じています。Windowsインストーラーは、ハードウェアから起動しない場合に問題があるISOの1つです。memtestを試すことはできますが、私はそれについてあまり知りません。おそらく、フラッシュドライブを入手して使用したいでしょう。superuser.com/questions/66948/…またはsuperuser.com/questions/62193/install-win7-from-usb
quack quixote

1
@quackquixote、あなたの太字の言葉については、「ロードされたオペレーティングシステムは何をしますか?CD-ROMを探しますが、見つけられず失敗します」、OSはなぜCD-ROMを探す必要がありますか?すでに完璧なisoファイルであり、OSのロードに必要なものはすべてisoファイル内にあるので、CDROMの検索をスキップできないのはなぜですか?
Pacerier

1

端末からddを使用して、isoファイルをパーティションに書き込むことができます。ddを間違って使用すると、すべてを消去できることに注意してください。次のようになります。dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition


ただし、Windows Loaderで起動できるようにするには、パーティションをプライマリにする必要があります。
消防士

これはたまにしか機能せず、一般に結果は起動できません。
デビッドトンホーファー

1
@Firelord:さて、Windows Loaderは使用しないでください。Grubを使用します。はい、本当に必要な場合はWindowsも起動します。
Evi1M4chine
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.