如何创建一个可启动的USB,其中包含多个ISO镜像。

我想要创建一个可启动的U盘,显示GRUB菜单,我可以从中选择任何一个可启动系统进行安装/运行。我有几个ISO镜像,我想要在U盘上安装,比如Ubuntu、Fedora、System Rescue CD、Windows XP和Windows 7(Windows版本是可选的,主要是为了多系统安装程序,特别是Ubuntu版本)。
默认的“启动盘创建器”只能使用Linux镜像,并且一次只能使用一个(至少目前是这样。如果它允许更多系统和多个ISO镜像,那将非常棒)。
有什么方法可以逐步创建一个可启动的U盘,其中包含多个镜像,可以从U盘启动并从GRUB中选择。它必须支持Windows镜像和Linux镜像。
另外,是否还有一种方法可以在同一个U盘上拥有多个版本的Ubuntu安装ISO,例如,在从中引导时,我可以选择要安装的Ubuntu版本和架构,例如:
引导菜单 Ubuntu 12.04 32位 Ubuntu 12.04 64位 Ubuntu 12.10 32位 Ubuntu 12.10 64位
更新:想要补充一下,daithib8提到的帖子的英文版本在这里:MultiSystem – Create a MultiBoot USB from Linux | USB Pen Drive Linux

1多系统在14.10上无法正常工作。 - Anon
16个回答

创建和安装多个发行版到USB / 闪存驱动器涉及两个部分:

“在谷歌搜索几天后,我找到了这个有用的脚本,来自www.multicd.tuxfamily.org。 Multicd.sh是一个由maybeway36编写的shell脚本,它使得两个或更多个Live Linux发行版/实用工具能够从单个CD / DVD引导。通过一个简单的方法就能在一张光盘上创建多个Live Linux发行版。在您的主文件夹中创建一个名为multicd的文件夹,并将所有的Live Linux ISO映像文件以及multicd.sh脚本放入multicd文件夹中。关闭窗口。打开终端并执行以下命令

cd multicd
chmod +x multicd*.sh
sudo ./multicd*.sh
上述命令将执行multicd.sh脚本。在执行过程中,该脚本将从互联网下载一些软件包,并在multicd文件夹内为您创建一个名为multicd.iso的新ISO映像文件。检查multicd.iso映像文件的大小。如果超过700 MB,则必须插入DVD进行写入。选择您喜欢的映像刻录软件中的刻录映像选项来写入multicd.iso文件。重新启动时,将CD/DVD放入CD/DVD驱动器中,新的GRUB将显示光盘中可用的Live发行版列表。选择您喜欢的发行版以登录...
注意:当您从互联网下载任何Linux ISO映像时,它的名称可能是"ubuntu-9.04-desktop-i386",但必须将其重命名为ubuntu.iso(位于multicd文件夹内)。目前,此脚本支持20个Live发行版。此脚本支持的Live Linux发行版列表如下(每个发行版右侧是此脚本接受的名称)。
博客页面上有一个发行版列表。
  • 将多个Live发行版安装到USB / 闪存驱动器中。

UNetbootin 安装UNetbootin 允许您创建可引导的Ubuntu、Fedora和其他Linux发行版的Live USB驱动器,而无需刻录光盘。它可以在Windows、Linux和Mac OS X上运行。您可以让UNetbootin为您下载其中一款已经支持的发行版,或者如果您已经下载了某个Linux .iso文件或您的首选发行版不在列表中,也可以提供自己的Linux .iso文件。

支持的发行版包括:Ubuntu(及其官方衍生版)8.04 LTS、9.10、10.04 LTS、10.10、11.04每日CD映像,Fedora 10、11、12、13、14、Rawhide以及还有很多其他发行版

如果您查看图像,您可以选择发行版或自己下载ISO文件并添加它们,或者添加一个自定义的发行版。您可以将其设置在硬盘或USB闪存驱动器上。

enter image description here

希望这些信息足够了,但是在这个博客上还有很多更多的信息

8给那个给我点踩的人:真的吗?三年过去了,你还是不同意其他16个人的观点吗? - Rinzwind
2对于我的一些回答,我有同样的想法,哈哈。我觉得他们把“非常糟糕的回答”和“缺少一些额外信息”混淆了... 或者他们不知道他们可以评论如何改进回答。 - Luis Alvarado
可以使用Unetbootin工具来创建Ubuntu 14.04和Gparted ISO映像的启动盘吗?如果不能,请问还有哪些工具可以用于这两个ISO映像? - Ravi
是的,两者都可以。Gparted和Unetbootin:http://gparted.org/liveusb.php#windows-method-c - Rinzwind
@Rinzwind 成功创建了可双启动的USB,但当我选择“安装Ubuntu”选项时,系统重新启动。 - d a i s y
@MicrosoftLinux 没有消息?那就没有太多线索了.... 可能是与显卡相关的问题:尝试使用内核参数 "nomodeset"。或者可能是硬件故障... - Rinzwind
@Rinzwind 如果我有2个ISO文件,一个是14.04版本,另一个是15.10版本,那么我需要给它们改名吗?之前我用命令行创建了可启动的文件,现在用unetbootin创建时出现了“Failed to load COM32 file menu.c32”错误。 - d a i s y
@MicrosoftLinux不应该是必需的。这两个ISO文件应该有唯一的名称。 - Rinzwind
4如何使用UNetbootin创建多启动USB?答案没有解释这个问题。 - wjandrea
剧本现在在哪里? - Nuwan Thisara
@NuwanThisara https://github.com/IsaacSchemm/MultiCD/tarball/master - xtrchessreal

我找到的唯一一种多启动引导盘系统,而不使用Windows的方法是Multisystem。虽然文档只有法语版本,但你可以很容易地在Ubuntu上安装它,使用项目的官方存储库

sudo apt-add-repository 'deb http://liveusb.info/multisystem/depot all main' 
wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add - 

sudo apt-get update 
sudo apt-get install multisystem

它可以处理burg、syslinux、grub4dos、plop、Virtualbox、qemu等等,但是对于许多发行版来说,一个基本的多启动U盘只需拖放几分钟即可完成。对于Slitaz cooking,我需要在/boot/grub/menu.lst中添加几行代码。根据我所了解,通常使用Grub 1来创建多启动环境,但这个工具使用的是Grub 2。可以通过使用EasyBCD或Plop引导管理器从Windows引导菜单中运行它。

测试过那个了。我所知道的只有Multisystem和UNETbootin,但它们不适用于Windows,因此不支持Windows和其他Linux发行版的可行liveusb无法完成。尝试了您在这里提到的那个工具,我感到非常惊讶。 - Luis Alvarado
1请参阅:http://www.pendrivelinux.com/multiboot-create-a-multiboot-usb-from-linux/ - Wilf

我了解到了另外两个工具。一个是名为MultiSystem的工具,另一个是YUMI
安装MultiSystem非常简单,你可以通过项目的官方仓库轻松在Ubuntu上安装它。
sudo apt-add-repository 'deb http://liveusb.info/multisystem/depot all main' 
wget -q -O - http://liveusb.info/multisystem/depot/multisystem.asc | sudo apt-key add - 

sudo apt-get update 
sudo apt-get install multisystem

然后你只需要选择你的USB设备,然后简单地将ISO文件拖放到MultiSystem工具中。如果拖放不起作用,你也可以点击“添加”按钮。

enter image description here

enter image description here


YUMI也是一个类似的简单工具。他们提供 .deb 文件,您可以像这样安装:

sudo dpkg -i <filename.deb>

令人沮丧的是,在Ubuntu上,至少在14.10版本上,多重引导功能无法正常工作。我认为它可能使用了旧的GTK库或其他原因。你能让它正常工作吗? - Anon
@Akiva 你是在说MultiSystem还是YUMI? - Raja G
MultiSystem。我刚刚发现了一个很棒的叫做multibootusb的工具。 - Anon
@Akiva 为什么你不改进一下答案,从2011年的multibootusb 作者那里拿回来呢?这对网站来说比几个闲聊的评论更有用。另外,你应该发布安装MultiSystem时的错误信息或安装日志,而不是简单地说“不起作用”。我已经在我的答案中添加了我的发现。 - LiveWireBT
1YUMI不再提供Linux版本。 - user435587

你可以通过将GRUB2安装到USB驱动器的MBR来直接循环挂载isofiles。你也可以通过这种方式创建可引导的UEFI USB驱动器,或者结合两种方法。
大多数其他解决方案都是针对MBR/传统PC的,并且在UEFI机器上不可靠。
我建议阅读项目网站上的文档以及相关的man页面(grub-installgrub-mkimage)。
编辑1:我之前在一个类似的问题上扩展了我的答案。第2节是关于循环挂载一个镜像,像问题中那样挂载多个Ubuntu镜像可以通过复制和修改菜单项或从Arch Wiki的文章中选择适当的模板来完成。另一个答案中提到的MultiSystem应该非常相似,因为它也利用了GRUB的循环挂载功能。
编辑2:说到MultiSystem,由于gtkdialog依赖项中存在以下错误,该软件包目前无法安装在较新版本的Ubuntu上:
install-info: warning: no info dir entry in `/usr/share/info/gtkdialog.info.gz'

似乎这些文件的格式已经发生了变化,以下是gzip信息文件的摘录,供参考:
INFO-DIR-SECTION Compression
START-INFO-DIR-ENTRY
* Gzip: (gzip).                 General (de)compression of files (lzw).
END-INFO-DIR-ENTRY

gtkdialog已经不再维护,并且很久以前就从Debian中移除了,建议应用程序开发者转向其他解决方案。MultiSystem似乎仍在积极开发中,但仍然依赖于gtkdialog,有人应该与开发者联系,但我不会说法语。

Ubuntu 20.04及更高版本中测试过的一个解决方案是使用Ventoy。直接来自工具描述:

Ventoy是一个开源工具,用于创建ISO/WIM/IMG/VHD(x)/EFI文件的可启动USB驱动器。 使用Ventoy,您无需反复格式化磁盘,只需将映像文件复制到USB驱动器并引导即可。您可以一次复制多个ISO文件,Ventoy会给您提供一个引导菜单以选择它们。 同时支持传统BIOS和UEFI。 同时支持MBR和GPT分区样式。

我已经创建了一个可启动的USB,只需使用复制/粘贴程序将我的ISO文件复制到其中,这样当使用USB闪存作为可启动驱动器时,它们会显示在菜单中。同时,我还可以使用此USB存储我的个人数据(它们不会出现在Ventoy菜单中)。
这意味着当我将这个USB闪存作为可启动驱动器时,我会有一个如下所示的菜单(从官方网站截图):

ventoy menu

当我通过Nautilus打开它时,它就像一个普通的USB闪存驱动器,你可以把文件放在里面(截图来自我的Ubuntu 20.04):

nautilus

Ventoy没有deb格式或安装脚本,所以您需要从发布页面下载Ventoy。如果您下载了.tar.gz版本(以下示例中将引用版本1.0.61),您可以在终端中执行以下命令进行解压: sudo tar xzf ventoy-1.0.61-linux.tar.gz -C /opt 考虑到/opt文件夹的含义,我认为/opt是目标文件夹的最佳选择。
现在,您需要至少给Ventoy2Disk.shVentoyGUI.x86_64赋予权限: sudo chmod +x /opt/ventoy-1.0.61/Ventoy2Disk.sh /opt/ventoy-1.0.61/VentoyGUI.x86_64 现在你已经准备好使用它了。要创建一个可引导的USB,映射为/dev/usb(始终使用lsblk正确识别你的USB磁盘!)并采用GPT分区方式,你可以运行以下命令: sudo bash /opt/ventoy-1.0.61/Ventoy2Disk.sh -I -g /dev/sdb 接下来是Ventoy2Disk.sh提供的参数列表:
Ventoy2Disk.sh CMD [ OPTION ] /dev/sdX
  CMD:
    -i   install ventoy to sdX (fail if disk already installed with ventoy)
    -I   force install ventoy to sdX (no matter installed or not)
    -u   update ventoy in sdX
    
  OPTION: (optional)
   -r SIZE_MB  preserve some space at the bottom of the disk (only for install)
   -s          enable secure boot support (default is disabled)
   -g          use GPT partition style, default is MBR style (only for install)

否则,您可以使用图形界面运行Ventoy,方法如下:
sudo /opt/ventoy-1.0.61/VentoyGUI.x86_64
更多详细信息请参考Ventoy安装
另一个有趣的资源是来自RedHat.com:创建多启动Linux桌面系统的文章。

2+1;很好,你不仅提供了Ventoy的链接,还描述了如何安装和使用这个工具。不幸的是,由于总共有20个回答(包括一些已删除的回答),你的新回答可能不会引起太多关注。也许更高效的做法是以类似的方式回答一个当前的问题,即使那个问题被归类为重复。 - sudodus
1@sudodus增加了一些细节,感谢您的反馈,非常感激。 - Lorenz Keel

MultiBootUSB是我最喜欢的多重引导驱动器制作工具。

它可以制作一个能够引导超过150个发行版的USB驱动器,它基于grub2 iso引导,非常易于使用。

Ubuntu的各个版本和衍生版都可以拥有自己的持久性文件。其他多重引导驱动器制作工具没有提供持久性功能。

Sundar_Ima在这个实用程序上做得很出色。

有Linux和Windows版本。

我第一个MultiBootUSB驱动器使用了七年后仍在使用中。


好的,这是我用SD卡运行Xubuntu的方法,同样适用于USB闪存,实际上非常简单。虽然我只使用了(x)Ubuntu,但我相信它也适用于其他发行版,不确定是否可以在Windows上使用。

首先,我们需要两个USB闪存,一个用于liveCD,另一个用于安装操作系统。

由于您想在其中安装多个操作系统,因此应使用16或32 GB的USB闪存,如果可能,请使用USB 3.0,因为从2.0设备传输速率相当慢,例如,我使用了一个8GB的Class 2 SD卡来安装Xubuntu,虽然它没有爬行,但也没有飞起来,尽管SD卡比USB慢,但对于livecd,您可以使用1或2 GB的驱动器。

现在,制作一个可启动的liveUSB驱动器,我建议您使用UNetbootiN,选择ISO并创建liveUSB。

现在,您已经拥有可引导的USB,重新启动计算机并启动liveUSB,一旦进入那里,开始live会话。

一旦连接上第二个USB到电脑,将其格式化为EXT4,然后只需将安装程序指向USB驱动器即可(我采取了一些极端的措施,断开了所有硬盘,以避免grub被安装在它们上面或破坏现有的安装)。

添加更多发行版只是创建更多分区的问题,尽管我不知道USB是否和常规硬盘一样,只能容纳一定数量的扩展分区,虽然你可以共享/home、swap,但我真的不知道/boot能否共享或者这样做是否安全。

至于将Windows添加到USB设备,也许只有可能,如果你创建一个NTFS分区并在其中安装Windows,然后恢复GRUB以添加Windows,它可能会起作用。


这个答案解释了如何制作一个带有多个已安装发行版的USB,但我觉得原帖的作者是在寻找如何创建一个多重启动的Live USB - user435587

多系统完全安装

自2011年以来,闪存驱动器变得更大更快。

现在可以合理地将多个操作系统完全安装到闪存驱动器上(或者制作一个混合驱动器,其中包含Live、Persistent和Full安装)。

与持久安装相比,完全安装更稳定、更安全,但制作时间较长。它们更好地利用了磁盘空间,因为不需要固定大小的casper-rw文件或分区。

使用UNetbootin、Rufus等工具,在小型闪存驱动器上创建活动安装程序驱动器。 在大型目标闪存驱动器上创建GPT分区表。 根据您拥有的操作系统数量,创建尽可能多的ext4分区。每个分区的大小应该约为8GB或更大。 以模式引导活动驱动器,然后插入较大的目标驱动器。 点击安装Ubuntu图标(Ubiquity)。 在分区选择中,选择"Something else"。 选择sdx1作为/(其中sdx是目标驱动器)。 将引导加载程序安装到目标驱动器的根目录。 不要选中其他分区的格式框。 如果使用全盘加密进行安装,请确保移除或禁用任何内部驱动器。 对于您选择安装的每个操作系统,重复上述步骤,使用sdx2、sdx3等。 在最后一次安装后,启动闪存驱动器并执行update-grub命令。这将添加所有操作系统到grub.cfg文件中。
你可以为希望进行Live boot或persistent boot的ISO文件留下一个分区,并使用grub.cfg来循环挂载这些ISO文件。
看起来这个答案可能在某种程度上重复了Uri Herrera的答案。他的回答先出现在这里,我将保留这个回答以供包含额外信息的参考。

在分区时选择了"其他选项"。你所说的"在分区时"是指在哪个应用程序中,在什么时候?是在GParted中吗? - Santropedro
@Santropedro:在Ubuntu Ubiquity安装程序中添加“其他选项”。我已更新答案,请告诉我是否还有疑惑。 - C.S.Cameron

选择合适的软件

首先,你需要一个分区编辑器,比如GParted或者KDE Partition Manager。可以参考这个list列出的Linux分区编辑器清单。如果你使用基于GTK的桌面环境,比如Gnome、Unity或者LXDE,建议使用Gparted。如果你使用基于QT的桌面环境,比如KDE或者LXQT,请使用KDE Partition Manager。

其次,你还需要一个用于安装它们的工具,比如Unetbootin,或者你可以使用终端命令。

安装软件

Gparted

点击这个链接安装Gparted Install Gparted,在Ubuntu软件中心找到它,或者在终端中输入sudo apt-get install gparted。更多的安装指南请参考这里

点击链接安装Gparted后,它应该会打开Ubuntu软件中心,你只需要点击安装按钮即可。

Unetbootin

点击此链接安装Unetbootin Install Unetbootin ,在Ubuntu软件中心中找到它,或在终端中输入sudo apt-get install unetbootin。这里有更多的说明here

点击链接安装Unetbootin后,应该会打开Ubuntu软件中心,你只需要按下安装按钮即可。

分区闪存驱动器


查看此tutorial以获取图形界面教程。查看此tutorial以获取终端教程,不推荐使用。

将ISO文件安装到每个分区

请参考tutorial了解Unetbootin。请参考tutorial了解终端。

@akiva 好吗? - MathCubes
哦,抱歉;没看到这个回答;我已经给agentcool发放了悬赏 >_< - Anon
1你的UnetBootin链接有问题,对我来说,它指向了一个PDF阅读器。 - Anon
@Akiva,谢谢。我在编辑前确实以它为基础使用了一下。 - MathCubes
@Akiva 我修好了。 - MathCubes
1@MathCubes 终端指南适用于单个 ISO 文件。如果要处理多个 ISO 文件,您需要为每个包含 ISO 存档内容的分区运行 syslinux -s 吗? 请在您的回答中添加更多描述!谢谢! - ArchLinuxTux

YUMI(2018)

YUMI现在有适用于BIOS引导的版本和适用于UEFI引导的测试版。

YUMI满足多引导ISO镜像的要求。

它直观易懂,使用方便。

引导菜单实际上是syslinux,但类似于grub2。

YUMI的一个优点是,在NTFS安装中,每个独立的casper-rw持久性文件可以超过4GB。

下载 - https://www.pendrivelinux.com/yumi-multiboot-usb-creator/

YUMI是一个Windows应用程序,据说可以在Wine中运行,但我没有太多运气。


@Ploni 已添加注释, - C.S.Cameron