在 USB 闪存驱动器上安装 Grub 2

在 USB 闪存驱动器上安装 Grub 2

多重启动 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
}

相关内容