grub: ISO からの起動

boot grub iso-image

GRUBでISOファイルにブートするにはどうすればいいですか?ISO ファイルは reiserfs パーティションにあり、GRUB はそれにアクセスすることができます (既にテスト済み)

  45  None  2010-06-18


ベストアンサー

ISOファイルを起動する際の最大の問題点は、起動するように設計されているISOはほとんどCDから起動するように設計されているということです。Grub 2 については、マルコのブログで説明されています

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

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

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


Grub 1

…よくわかりません。可能であれば、メニュー項目はおそらくGrub4DOSに似ていると思いますが、”map –hook “コマンドはGrub4DOSの機能強化だと思います。プラス面では、GrubはGrub4DOSよりも幅広いファイルシステムをサポートしています

Grub with reiserfs (未確認) のメモによると、「動作させるには notail でパーティションをマウントしなければならない」とあります

Memdiskはオプションです


Grub4DOS

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

ここにサンプルエントリ(ソース)があります

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のインストールについて、a Hak5のエピソードを紹介します


Grub 2

現在のところ chainloader は ISO を起動するためには動作しないので、これらのエントリは (1) loopback を使って ISO を “マウント” し、(2) ISO ファイルを指定する linux 行に iso-scan や findiso のようなものを追加しなければなりません

残念ながら、一般的な方法はありません。それぞれのブートエントリは、ターゲットの ISO の内容に合わせてカスタマイズする必要があります。ほとんどの Linux LiveCD はブートローダとして ISOLINUX を使用しています; isolinux.cfg を見つけて、そのブートエントリを調べて、通常何が起動するかを確認してください

エントリ例(ソース

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
}

58  quack quixote  2010-06-18


ターミナルから ddd を使ってパーティションに iso ファイルを書き込むことができます。注意してください、もし dd の使い方を間違えるとすべてを拭くことになります。dd if=Desktop/LinuxCDFile.iso of=/Path/To/Partition

1  Naos parth  2014-09-03


多くの人気のあるOSのための微調整と一緒に美しい例のセットがあります Grub 2 iso ブート

menuentry "Focal Desktop iso" {
set isofile="/iso/focal-desktop-amd64.iso"
rmmod tpm // For GPT only
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd
}

0  Hank W  2020-10-05


タイトルとURLをコピーしました