Alb*_*ert 8 boot iso-image grub
我已将 ISO 文件复制到一个分区中(即 dd if=isofile of=/dev/sdb1)。如何通过 GRUB 引导到该分区?
当我只尝试使用 chainloader (hd1,0)+1 时,它显示未知的可执行格式。
请参阅我对您的从 ISO 文件启动问题的回答。以此为起点,我用旧硬盘进行了一些测试。我之前已经将 Grub2 配置为启动多 ISO闪存驱动器,所以我所做的是:
在旧硬盘上创建几个分区。这是使用 USB 至 IDE 适配器完成的,因此驱动器显示为 /dev/sdb。
将第一个分区挂载到 /mnt 并将 Grub 的副本从我的系统安装到驱动器上:
sudo grub-install --no-floppy --root-directory=/mnt /dev/sdb
Run Code Online (Sandbox Code Playgroud)
将 ISO“刻录”到第二个分区:
sudo dd if=avg.iso /dev/sdb2
Run Code Online (Sandbox Code Playgroud)
这是一个 AVG 病毒扫描程序 ISO;在我的多 ISO 闪存驱动器上,我使用它直接启动 ISO:
menuentry "AVG Rescue CD" {
loopback loop /iso/avg.iso
linux (loop)/isolinux/vmlinuz max_loop=255 vga=791 init=linuxrc iso-scan/filename=/iso/avg.iso
initrd (loop)/isolinux/initrd.lzm
}
Run Code Online (Sandbox Code Playgroud)
为了使这项工作从硬盘驱动器分区开始,我们需要取消环回命令并设置根设备等。我尝试让 Grub2 自动发现根设备都失败了,所以我直接将其指向分区。这可行,但要注意 Grub 的设备枚举;您尝试启动的驱动器可能不是 (hd0)。这是 ISO 分区的工作条目:
menuentry "AVG Rescue CD" {
linux (hd0,2)/isolinux/vmlinuz max_loop=255 vga=791 init=linuxrc
initrd (hd0,2)/isolinux/initrd.lzm
}
Run Code Online (Sandbox Code Playgroud)
这会生成可启动的分区 ISO。
这是可行的,因为 Grub2 可以读取 ISO9660 文件系统,因为这个特定的 ISO 正在加载一个可以处理分区上 ISO 的操作系统,并且因为实际上内核加载的所有内容都在 initrd中。
如果您使用 Grub4DOS 或 Grub 1,您也许可以使用 chainloader 实现类似的技巧。假设这可以直接启动 Win7 ISO(来源):
title Windows 7
map (hd0,0)/win7.iso (hd32)
map --hook
chainloader (hd32)
Run Code Online (Sandbox Code Playgroud)
您可能会幸运地进行此修改(假设您将 ISO“刻录”到第二个主分区 (hd0,1);否则替换正确的分区):
title Windows 7
map (hd0,1) (hd32)
map --hook
chainloader (hd32)
Run Code Online (Sandbox Code Playgroud)
你也可以摆脱这个:
title Windows 7
chainloader (hd0,1)
Run Code Online (Sandbox Code Playgroud)
但是,ISO 并未真正配置为从驱动器启动,因此您可能会遇到其他问题。
归档时间: |
|
查看次数: |
17357 次 |
最近记录: |