web-dev-qa-db-ja.com

grub:ISOから起動する

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

41
Albert

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

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

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

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


グラブ1

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

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

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


Grub4DOS

Grub4DOS 実験的な「CDエミュレーション」を提供 これはいくつかのISOで動作します。残念ながら、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をフラッシュドライブに配置し、ユーティリティを実行してブートローダーをインストールし、ブートメニューを構成します。

Grub4DOSのインストールに関する Hak5エピソード です。


グラブ2

以下に、Grub2エントリの例をいくつか示します。 chainloaderは現在ISOを起動するためには機能しないため、これらのエントリは(1)loopbackを使用してISOを「マウント」し、(2) iso-scanまたはfindisoは、ISOファイルを指定するlinux行に。

残念ながら、これを行う一般的な方法はありません。ブートエントリはそれぞれ、ターゲット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
}
54
quack quixote

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

1
Naos parth