如何启动GRUB中的ISO文件?ISO文件位于reiserfs分区上,并且GRUB可以访问它(已经测试过)。
如何启动GRUB中的ISO文件?ISO文件位于reiserfs分区上,并且GRUB可以访问它(已经测试过)。
Answers:
引导ISO文件的最大问题是设计用于引导的ISO几乎总是被设计成从CD引导。正如Marco在有关Grub 2(重点是我的)的博客中所述:
GRUB可以读取ISO9660(“ iso”)图像。例如,它可以加载前几个扇区并引导它。但是大多数人没有意识到是什么呢?加载的操作系统将做什么?它很可能会寻找CDROM,但找不到并失败。
因此,从某个随机ISO文件进行引导的最简单的方法是将其作为虚拟CD加载到虚拟机(VirtualBox,VMware或Virtual PC)中,然后在其中进行引导。这几乎应该总是可行的,因为对于VM而言,它不是ISO文件,而是真正的CD硬件上的真正的CD。
从裸机上的ISO文件引导要困难得多。如何执行此操作取决于您所使用的Grub版本,结果可能会因所使用的ISO及其引导方式而异。这就是为什么大多数从USB启动ISO的工具(Unetbootin,WinToFlash等)通常将ISO内容提取到驱动器中的原因-因为那样可以直接访问它们,而不会混淆正在引导的OS。
... 不确定。如果可能的话,菜单项可能看起来很像Grub4DOS,尽管我认为“ map --hook”命令是Grub4DOS的增强功能。从正面来看,Grub比Grub4DOS具有更广泛的文件系统支持。
关于带有reiserfs的Grub的注释(未确认)表示您“必须安装分区notail
才能正常工作”。
内存磁盘是一个选项;见下文。
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放在闪存驱动器上,然后运行该实用程序以安装引导加载程序并配置引导菜单。
这是有关安装Grub4DOS 的Hak5集。
这是几个示例Grub2条目。 chainloader目前无法启动ISO,因此这些条目必须(1)使用环回 “挂载” 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
}
您可以从终端使用dd将iso文件写入分区。请注意,如果您使用dd错误,则可以擦除所有内容。它应该看起来像这样:dd if = Desktop / LinuxCDFile.iso of = / Path / To / Partition