如何制作一个容量超过4GB的持久化Ubuntu Live USB

我想制作一个容量超过4GB的持久化Ubuntu USB驱动器。
我知道有一种直接在驱动器上安装的选项,但我不想这样做,因为这会限制驱动器在不同计算机上的使用。
一种选择是创建一个额外的分区来获得额外的空间,但如果我这样做,如何将新安装的软件存储在这个分区上呢?

4将完整安装到USB驱动器上不会限制该驱动器在其他计算机上的使用,除非安装了专有驱动程序(如Nvidia等)。 - C.S.Cameron
http://askubuntu.com/questions/16988/how-do-i-install-ubuntu-to-a-usb-key-without-using-startup-disk-creator - Ciro Santilli OurBigBook.com
1我同意将USB驱动器安装为内部驱动器并不是一个解决方案。事实上,我尝试过这种方法。首先,Ubuntu的安装并不适用于这种模式。例如,它会要求输入计算机名称,在这种情况下几乎没有意义。我想,一些驱动程序可以根据实际硬件进行配置、安装或卸载。其次,在UEFI系统上使用这种安装方法会覆盖Ubuntu在ESP上专用的EFI目录,并且要启动内部硬盘上的Ubuntu,需要在引导过程中使用USB驱动器上的GRUB加载程序。 - Alexey
我找到了一种不需要持久性的方法来解决这个问题,适用于那些正在寻找这种解决方案的人。https://askubuntu.com/questions/1434508/creating-a-customized-ubuntu-live-usb-with-read-only-filesystem-squashfs-greater/1434528#1434528 - Bilbo Baggins
7个回答

当前的Unix USB安装程序(例如来自PenDriveLinux.com的Universal USB Installer)会在引导分区上创建一个持久文件,以及其他用于引导的文件。这个引导分区使用FAT32格式,由于FAT32的限制,该文件的最大大小为4GB。为了拥有更多的持久存储空间,可以将该文件替换为一个分区。这个分区的大小仅受USB驱动器的大小限制。
我使用GParted分区管理器调整了FAT32分区的大小,为持久存储空间腾出了足够的空间,并创建了一个大的EXT4分区。只需简单地删除持久文件,在下次引导时,Ubuntu系统将自动使用更大的持久分区。然而,有一个复杂之处:您需要另一个Ubuntu系统来完成此操作,因为Ubuntu无法修改自己的活动引导分区。
我使用了第二个带有Ubuntu Live的USB驱动器。以下说明中,我使用的是“32位Ubuntu 13.10桌面版”。
  1. 在两个USB驱动器上安装Ubuntu live。为每个USB驱动器配置大约100 MB的小持久存储。

  2. 从其中一个USB驱动器启动Ubuntu。确保另一个USB驱动器已拔下。

  3. 从Ubuntu Dash启动“GParted分区编辑器”。此分区管理器默认安装在13.10中。

  4. 插入另一个USB驱动器,等待片刻并在GParted中进行刷新(Ctrl+R)。您会注意到设备列表底部添加了一个新设备。检查大小是否与目标USB驱动器匹配。选择此设备(请参见下面的示例图片,设备名称可能在您的系统上不同)。

  5. 检查挂载点(/media/ubuntu/UUI)是否与上图相同。

  6. 打开终端窗口(Ctrl+Alt+T),并使用以下命令删除持久文件(如果挂载点在您的情况下不同,请调整此命令):

    rm -v /media/ubuntu/UUI/casper-rw
    
  7. 刷新GParted(Ctrl+R),并注意“已用”中的更改。

  8. 右键单击分区,选择卸载。您会注意到挂载点不再显示。

  9. 右键单击分区,选择调整大小/移动。选择新大小:1000。这将留下一些空间来存储其他或更新的文件。单击“调整大小/移动”。将出现一个“未分配”的分区

  10. 现在为持久存储创建一个新分区。选择未分配的分区,右键单击新建

  11. 选择文件系统“ext4”和标签casper-rw,然后单击添加

  12. 检查是否一切正常,并单击绿色复选标记以应用所有待处理操作。

  13. 关闭Ubuntu,拔下第一个USB驱动器(此USB驱动器不再需要),然后从第二个USB驱动器重新启动。

  14. 打开终端(Ctrl+Alt+T),然后键入以下命令:

    df . -h
    

    检查可用大小是否与您创建的持久分区大小匹配。


这对我来说一直有效,直到点击复选标记应用所有操作。然后我从Linux收到了一个错误消息,我忘记了确切的措辞,但是有一个“系统检测到错误,您是否想要报告问题”的提示。我回到gparted,现在无法挂载、调整大小、创建分区或对驱动器进行任何操作。我应该只是格式化它并重新开始吗? - user137717
1这种方法在64位的Ubuntu 14.04及更高版本上无效。 - C.S.Cameron
@C.S.Cameron哥,哪个部分不起作用?它是不是没有持久性? - Matt G
2这个对我也不管用。在删除casper-rw文件后,下次启动时它卡在BusyBox屏幕上。 - kirtan403
1最新的Ubuntu似乎停止工作了... - lf_araujo
驱动器无法启动,就好像casper-rw已满一样。 - C.S.Cameron

我想对V Bota和sudodus的回答进行扩展。
我之前为另一个问题写了很多内容,但我认为在这里使用会更好。
我之前也尝试过许多不同的指令,但都没有成功,几乎要放弃了,直到我找到了一个使用非常好的mkusb工具的可行方法。

先前的考虑

我假设您已经下载了.iso文件(Ubuntu 16.04/任何*buntu)。如果没有,请下载它。
我尝试从已安装的Ubuntu系统运行这些指令。 注意:目前存在一个限制,即启用EFI的操作系统无法在BIOS模式下工作。为了绕过此限制,请从另一个live系统中运行所有这些步骤。

安装mkusb

引导到现有的Ubuntu系统或者从次要的Ubuntu闪存驱动器中进行live引导。
打开终端(Ctrl+Alt+T)并逐个运行以下命令:
sudo add-apt-repository universe
sudo add-apt-repository ppa:mkusb/ppa
sudo apt-get update

sudo apt-get install mkusb usb-pack-efi

最后一条命令可能会失败(虽然很少见),因为mkusb(GUI版本)有一些依赖项在Ubuntu的实时版本中没有预装/激活。
不过,无需恐慌,开发者还创建了一个纯文本版本。运行:
sudo apt-get install mkusb-nox usb-pack-efi

创建持久驱动器

我将专注于主要的图形用户界面版本,因为那是我使用过的版本。所以如果你安装了默认的mkusb(图形用户界面版本),运行以下命令:

dus

dus是mkusb最新更新的全新版本的别名。它是旧版本的改版,使用起来更加简单方便。
运行命令后,图形用户界面将会打开。 按照以下步骤进行操作:
  • 屏幕1: 注意警告并单击确定
  • 屏幕2: 双击i选项Install(make a boot device)
  • 屏幕2: 双击p选项Persistent Live并选择.iso文件。
  • 屏幕3: 选中您要安装到的设备并单击确定
  • 屏幕4: 只需单击使用默认值,让mkusb决定最佳设置。(或者进行明智的选择。)
  • 屏幕5: 输入您想要分配给持久文件系统的USB驱动器空间的百分比。剩余部分将稍后显示为便携式存储设备。
  • 屏幕6: 仔细检查您已选择正确的设备和设置。选中Go单选按钮,然后单击Go。
  • 屏幕7,8: 只需单击确定,让mkusb自行操作。

完成!

现在将您新制作的持久驱动器插入任何系统并检查它是否确实在重启后存储数据/设置(我的可以)。

屏幕截图

整个过程应该类似于以下内容。

在终端中运行以下命令:

Run the command in terminal


请注意警告并点击“确定”:

Welcome and Notice


双击i选项进行安装(创建引导设备):

Task To Perform


双击 p 选项的 Persistent Live,并选择 .iso 文件。

Live-only or Persistent


点击USB驱动器以使其持久化。我想使用我的32GB的,所以我选择了单选按钮:

Select_target_device


点击“使用默认值”让“mkusb”选择默认设置:

Custom options or default


输入一个保留用于持久性的驱动器百分比。我的是一个大容量(32GB),所以我只分配了20% ~ 6GB。剩余的空间将被转换为一个空的便携式驱动器。

Enter Space for Persistance


仔细检查并确认一遍。你可不想再搞砸另一个驱动器。

Double check and confirm


如果一切顺利,您将会看到一个漂亮的绿色完成屏幕。

Finished Successfully



现在将您新制作的持久驱动器插入任何系统,并检查它是否真的可以在重新启动时存储数据/设置(我的确实可以)。

参考和致谢

您可以参考Calvin Bui的一个不错的教程这里可以逐步指导您完成GUI操作,或者阅读详细的文档https://help.ubuntu.com/community/mkusb

再次感谢V Bota提供这个答案,以及andrea-lazzarotto帮助编辑这篇文章


我在Ubuntu 12.04中尝试使用32位版本的Ubuntu 14.04.5无法让这些说明起作用。但当我切换到64位版本并在Ubuntu 16.04.1上运行mkusb时,它就成功了。感谢@Harsh编写了如此全面的指南。我对它没有更多的赞同表示惊讶。 - Adam
1谢谢你的鼓励,@Adam。就我个人而言,我自己并没有遇到过这个问题。但是我查了一下,似乎在Ubuntu 12.04上安装mkusb需要额外的步骤。你可以参考这个链接:https://help.ubuntu.com/community/mkusb/install-to-ubuntu-12.04。 - Harsh
@Harsh,请考虑使用mkusb版本12别名dus的截图更新你的回答 :-) - 当你安装了mkusb版本12时,仍然可以选择mkusb版本11。我知道有些人更喜欢版本11,但我认为版本12对于新用户来说更容易使用。 - sudodus
@sudodus 我会尽快更新。虽然我这周非常忙碌,手头没有我的Ubuntu电脑,所以可能要等一段时间。谢谢你的更新。 :-) - Harsh
1@sudodus 我已经修改了这个答案,使其适用于 dus。花费的时间比预期的要长一些 :-) - Harsh
@Harsh,也许这个延迟是好事,因为在此期间我一直在解决bug的问题:-) 现在mkusb-dus已经相当经过调试和测试,并且在大多数情况下应该能很好地工作。(对于特殊情况还有一些改进正在进行中:你所拍摄的截图是稳定版本12.1.5,而不稳定版本已经达到12.2.0。) - sudodus
如果add-apt-repository返回"command not found":在Elementary OS中运行sudo apt-get updatesudo apt-get install software-properties-common - Oneiros
今天我尝试运行mkusb。它成功地创建了一个包含usbdata分区的可引导驱动器,但似乎并不真正具有持久性:在一次使用中创建的设置或文件(例如在~目录下)在下一次使用时都不见了。这是在Ubuntu 18上进行的。我选择在mkusb中创建持久性,并在引导加载程序中选择了持久模式。你知道我是否漏掉了什么吗? - Dave Pritchard
有什么原因不让整个驱动器成为一个持久文件呢? - General Redneck
我使用的是Windows系统,在成功制作了持久化Live USB并进行了冷启动后,会出现四个选项供选择:1. 运行Ubuntu-持久化Live 2. 运行Ubuntu-持久化Live到RAM 3. 运行Ubuntu-仅限于RAM的Live 4. 尝试Ubuntu而不安装。请问我应该选择哪一个? - June Wang

在尝试了几次使用启动盘创建器失败后,我最终通过遵循这里的https://help.ubuntu.com/community/mkusb指示成功地使用mkusb。

或者在这里: http://phillw.net/isos/linux-tools/mkusb/mkUSB-quick-start-manual.pdf

以下几行表示我尝试并在同一操作系统的Lubuntu 15.10上成功运行的步骤。

安装mkusb: 如果您使用标准的Ubuntu,您需要额外的指令来获取宇宙存储库。(Kubuntu,Lubuntu ... Xubuntu会自动激活宇宙存储库。)
sudo add-apt-repository universe # 仅适用于标准Ubuntu
sudo add-apt-repository ppa:mkusb/ppa # 然后按Enter sudo apt-get update sudo apt-get install mkusb mkusb-nox usb-pack-efi
从版本11升级到版本12需要一些特殊的命令。请参阅此链接, help.ubuntu.com/community/mkusb/gui#Upgrading_from_mkusb_11_to_12 如果您没有官方的Ubuntu(Lubuntu,Xubuntu,Kubuntu ...)ISO映像,请下载一个。
从Dash或菜单(取决于Ubuntu的风格)或在终端窗口中运行mkusb以下命令之一:
mkusb版本12别名dus:
dus # 进入主菜单'Install/Restore/Wipe' dus file.iso # 直接指定源文件 dus /dev/sdx # 指定源设备
mkusb版本9-11:
sudo -H mkusb # 进入主菜单 sudo -H mkusb file.iso p # 通过参数指定源文件和持久性
当要求输入密码时,请输入管理员密码
然后在mkusb的主菜单中选择您已下载的ISO映像。
我还切换了选项以创建一个持久驱动器。
选择安装所选的ISO映像的选项。
点击确定,然后选择要安装的驱动器(务必选择正确的驱动器!)
选择您想要用于持久数据的内存量
点击确定并等待安装完成
然后重新启动系统。
如果你到现在还没有检查过,确保BIOS设置允许从USB启动而不是硬盘。

2谢谢这个。虽然当我选择100%的持久存储空间时,我的失败了。我选择了90%,它成功了。 :) - jbrock
1感谢您发现这个错误 :-) 它将在mkusb 11.1.7中修复。 - sudodus
MKUSB毁了我的USB,安装在LXLE上很麻烦,即使格式化了USB,它仍然无法启动。 - user132992
今天我尝试运行mkusb。它成功地创建了一个包含usbdata分区的可引导驱动器,但似乎并不真正具有持久性:在一次使用中创建的设置或文件(例如在~目录下)在下一次使用时都不见了。这是在Ubuntu 18上进行的。我选择在mkusb中创建持久性,并在引导加载程序中选择了持久模式。你知道我是否漏掉了什么吗? - Dave Pritchard
谢谢。在我的情况下,这个过程对于Ubuntu 16.04和Linux Mint 18.3都非常有效! - jaumetet

如果你使用的是Windows系统,你可以直接使用 Rufus 3.8或更新版本,与Ubuntu 19.10或更新版本一起使用(19.10的每日实时ISO镜像可在此处找到),并将持久化分区大小设置为你想要的任意大小。Rufus对持久化的限制不仅为4GB,并且甚至不需要你使用NTFS文件系统(主分区使用FAT32就可以)。

是的,就是这么简单

  • 选择你的Ubuntu ISO文件
  • 将持久化分区的滑块从5GB调整到你的驱动器允许的最大大小
  • 点击开始

请注意,由于 Ubuntu/casper bug #1489855的问题, 你必须使用已经修复了上述持久化的bug的Ubuntu版本,目前只有19.10(特别是18.04 LTS和19.10将无法工作)。

这个bug很可能也解释了为什么很多人在使用Ubuntu时遇到了很多麻烦,无法让持久分区正常工作。实际上,你一直都应该能够在同一媒体上简单地创建一个casper-rw ext3ext4分区,并使其被识别为持久性分区。然而,不幸的是,直到最近,bug #1489855一直存在问题...
(免责声明:我是Rufus的主要开发者,我花了很多时间确保持久性与Ubuntu兼容,首先是努力确保修复了bug #1489855)。

1+1,临时评论:特别是18.04 LTS和19.10将无法正常工作 --> 特别是18.04 LTS和19.04将无法正常工作 - sudodus
1rufus-3.7_BETA和eoan-desktop-amd64在我这里完美运行,下次会试用rufus-3.8。干得好,很高兴看到在Windows上安装Ubuntu时持久分区再次正常工作。 - C.S.Cameron
1你有没有考虑加入一个NTFS数据分区的选项(例如mkusb)? - C.S.Cameron
啊,糟糕!我真希望SO/AU允许编辑评论的时间超过5分钟,这样我就可以修正19.10和19.04的拼写错误了。关于NTFS数据分区,首先,在Windows上有点棘手,因为在Windows 10 1703之前的版本无法同时挂载来自可移动介质的两个分区。而且,现在我们已经有了持久化功能,所以我觉得这样做没有太大意义。人们可以根据需要调整FAT32和持久化分区的大小,这样他们就可以使用驱动器与不支持ext文件系统的系统交换数据了。我真的很难想象出一个常见的情况,会受到4GB文件限制的影响。 - Akeo

更新于2017年8月-持久文件大于4GB

Syslinux在4.06版本开始添加对NTFS的支持,但直到6.03版本才提供完全支持。

UNetbootin-655使用Syslinux 4.03,并且仅限于每个FAT32的4GB持久文件。

MultiBootUSB-8.8使用Syslinux 4.07,并将安装在NTFS上,持久文件不受4GB限制。

Rufus 2.16使用Syslinux 6.03,并将安装在NTFS上,不提供持久文件,但可以手动添加,且不受4GB限制。

YUMI-2.0.4.9(MultiBoot USB)使用Syslinux 6.03,并将安装在NTFS上,持久文件不受4GB限制。与MBUSB 8.8一样,它可以为每个安装的发行版设置持久文件。


Mkusb现在是我最喜欢的Linux Live/Persistent闪存驱动制作工具,然而原帖中关于完整安装在多台电脑上无法运行的说法是错误的。
只要没有安装专有驱动程序,将完整安装到USB上的系统可以在任何一台能够运行持久化安装的电脑上正常工作。
不仅如此,完整安装还有其他优点,比如启动速度更快,可更新等。

https://ubuntuforums.org/showthread.php?t=1655412


我认为他的意思是完全安装将使用ext4格式,并防止该驱动器在其他Windows电脑上用作数据驱动器。然而,这很容易克服。 - phuclv
@Lưu Vĩnh Phúc 是的,只要第一个分区是Windows兼容的文件系统(FAT32或NTFS),USB就可以在Windows PC上用作数据驱动器。如果是Windows 10 PC,甚至不需要是第一个分区。 - C.S.Cameron

在UNetbootin持久性USB中添加一个持久分区(Ubuntu 19.10+)

无需额外的USB驱动器。

  • 备份可引导驱动器,复制并保留其casper-rw文件。

  • 以“toram”模式引导USB驱动器,在UNetbootin引导菜单上按下Tab键。输入一个空格后输入“toram”,然后按回车键。

现在计算机将以toram模式启动(UNetbootin驱动器需要8GB RAM)。您将能够编辑和覆盖Live USB。

我们将添加一个持久分区和一个NTFS分区(用于数据存储)。

  • 打开GParted,选择USB驱动器并卸载它。

  • 将FAT32分区缩小到最小。

  • 为持久性添加一个新的ext4分区。

  • 将ext4分区标记为"casper-rw"。

  • 在剩余空间中创建一个NTFS分区。

  • 应用所有操作。

  • 重新启动以填充casper-rw分区。

现在我们将现有的casper-rw文件复制到新的casper-rw持久分区:

挂载旧的casper-rw文件:

  • sudo mkdir /media/casper

  • sudo mount -o loop /cdrom/casper-rw /media/casper/

将旧的casper-rw文件内容复制到新的casper-rw分区。

sudo rsync -a /media/casper/ /media/cscameron/casper-rw/

重启
原始的casper-rw文件将变得无用并可以被删除。
类似的步骤也适用于使用其他启动盘应用程序制作的驱动器,例如Rufus,但无法修改SDC驱动器。