多重启动 ISO是一个可让您在 USB 闪存驱动器上安装 Grub 的工具。我真的很喜欢它,因为它可以让我从 ISO 文件启动,并让我将一堆 ISO 放在我的 USB 上并选择启动哪个。
问题是,这是一个 Windows 工具,我不知道如何通过命令行来完成它。我也想知道如何安装Grub(2)这样,Grub Legacy似乎更容易......
编辑:我不是在要求一个工具(绝对不是 Windows 工具)。我想知道必须执行哪些命令才能达到相同的效果。我现在脑子里想到的是 Ubuntu,但如果有一种通用方法可以引导 USB 中的任何 ISO,那就更好了。
答案1
你让我很好奇这将如何完成。Pendrivelinux 网站有一个教程我是通过我的 Mint 9 安装而不是网站建议的 Live CD 来完成此操作的。
我首先在终端中查找 USB 驱动器的位置,我运行df
它返回设备的位置:
/dev/sdg1 /media/LINUXUSB
之后我跑了
sudo su
然后安装grub 2
grub-install --no-floppy --force --root-directory=/media/LINUXUSB /dev/sdg1
我必须另外使用 --force,但网站上的示例没有。然后我做了
cd /media/LINUXUSB/boot/grub
该网站提供了一个链接,可将 grub.cfg 的副本下载到我的 USB 驱动器上的 /boot/grub 目录中。链接是
wget http://pendrivelinux.com/downloads/grub.cfg
之后,我编辑了 grub.cfg 以反映 USB 驱动器上的 iso。
set timeout=10 set default=0
menuentry "Run Fedora" {
loopback loop /Fedora13.iso
linux (loop)/isolinux/vmlinuz0 boot=isolinux iso-scan/filename=/Fedora13.iso splash --
initrd (loop)/isolinux/initrd0.img
}
menuentry "Run Ubuntu" {
loopback loop /ubuntu-10.04-netbook-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu-10.04-netbook-i386.iso splash --
initrd (loop)/casper/initrd.lz
}
menuentry "Run Clonezilla" {
loopback loop /clonezilla.iso
linux (loop)/live/vmlinuz boot=live iso-scan/filename=/clonezilla.iso splash --
initrd (loop)/live/initrd.img }
我发现在不同的iso中,vmlinuz和initrd位于不同的目录中。我能够让所有三个启动启动过程;但是,只有 Ubuntu 可以实际加载。如果我弄清楚需要什么才能让另外两个完成加载,我稍后会添加。我没有尝试过任何其他 iso,只是这三个。
答案2
GRUB2 引导加载程序完整教程是开始使用 GRUB2 进行多引导配置的好地方。
如果您熟悉 GRUB,请直接跳到第五名或者第六部分。
还有一个关于超级用户的问题使用 GRUB 设置多重引导系统。
还有一个Ubuntu多操作系统启动社区页面建议您应该坚持使用旧版 GRUB。
只要您的计算机可以从闪存驱动器启动,该技术也适用于闪存驱动器。
我已经现在使用闪存驱动器已经有一段时间了。
答案3
我花了几个小时在互联网上试图找到如何为可移动磁盘生成工作 grub.cfg。
最终基于脚本这里,我制作了我的工作脚本(以下是grub.cfg的内容):
### inputs ###
set UUID_ESP="E8C0-B8AE"
set UUID_ISO="c11f533e-a298-4381-950a-5d6d1f7f5907"
### end ###
search --no-floppy --set=ESP --fs-uuid $UUID_ESP # the address of the ESP
set ESP=($ESP) # add parentheses
echo "The address of the ESP is $ESP"
search --no-floppy --set=ISO_PART --fs-uuid $UUID_ISO # the address of the ISO partition
set ISO_PART=($ISO_PART) # add parentheses
echo "The partition on the flash drive with the iso is $ISO_PART"
echo "the prefix is $prefix" # GRUB folder with modules
sleep 5
insmod efi_gop
insmod font
if loadfont $ESP/boot/grub/fonts/unicode.pf2
then
insmod gfxterm
set gfxmode=auto
set gfxpayload=keep
terminal_output gfxterm
fi
menuentry "arch_linux_iso" {
set ISOFILE="/archlinux-2019.10.01-x86_64.iso"
loopback loop ${ISO_PART}${ISOFILE}
linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/disk/by-uuid/$UUID_ISO img_loop=$ISOFILE
initrd (loop)/arch/boot/intel_ucode.img (loop)/arch/boot/amd_ucode.img (loop)/arch/boot/x86_64/archiso.img
}