无法使用 casper-rw 持久分区启动 Ubuntu Live USB 闪存驱动器

Clo*_*oud 11 lts live-usb unetbootin startup-disk-creator 14.04

所以,我花了最后一天的时间来研究类似的问题,并且可以首先确认这不是以下问题的重复:

顺便说一句:我已经使用 UNetbootin 以及 Ubuntu Startup Disk Creator 创建了一个 Ubuntu 14.04.03 Live USB 闪存驱动器 (32GB)。在这两种情况下,我都能够成功部署我的 Ubuntu ISO(我已经通过md5sum分析确认它完好无损)。在这两种情况下,持久性都成功运行(我在使用 Ubuntu 启动盘创建器时必须手动启用它,但 UNetBootin-persistent自动将内核参数添加到syslinux.cfg),没有问题。

我需要一个大于 4GB 的持久性文件,因为我正在为现场应用工程师 (FAE) 创建一堆这些闪存驱动器,他们需要能够在路上使用它们来诊断我公司的自定义系统的安装目前支持。如果它们因过多的写入周期而烧坏也没关系,如果每次旅行需要,每个 FAE 都会得到十几个。

此外,我们需要将磁盘上的第一个分区保留为 FAT 分区,以防 FAE 需要将文件从 Windows、Mac、Linux 等拖放到磁盘上,因为 Windows 机器拒绝在闪存驱动器上安装 FAT 分区,除非它们是磁盘上第一个也是唯一的 FAT 分区。

我已经尝试了以下文章中的步骤:

指令很明确:

  1. 使用 Ubuntu 创建 Live USB 闪存驱动器,为额外分区留出空间。
  2. 删除casper-rw闪存驱动器上第一个 FAT 分区上的环回文件。
  3. 用于在 FAT 分区之后gparted创建一个ext2/ext3/ext4分区,并给它一个卷标casper-rw

我遵循了所有建议的步骤,但启动失败。当我尝试从我新创建的闪存驱动器启动时,我被引导到一个提示而不是 Ubuntu 正确启动,尽管我简要地看到了图形 Ubuntu 启动屏幕动画

dmar: IOMMU: failed to map dmar0
ACPI PCC probe failed.

BusyBox v1.12.1 (Ubuntu 1:21.0-1ubuntu1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) _
Run Code Online (Sandbox Code Playgroud)

我已经浏览了 Ubuntu 错误跟踪器,似乎很多其他人都观察到了这个问题:

并且它已经解决了,所以我应该期望修复程序已经在我的 Ubuntu 14.04.03 映像中:

我还尝试通过LIVE-MEDIA=/dev/sdd1在启动时通过点击插入(在我的情况下)来更新我的内核启动参数TAB,即:

kernel /casper/vmlinuz.efi initrd=/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper LIVE-MEDIA=/dev/sdd1 -- persistent
Run Code Online (Sandbox Code Playgroud)

这次它至少找到了启动分区并开始尝试启动 Live USB 磁盘,但似乎一路失败,并带有一堆“casper”相关警告。不过,我似乎无法保存这些日志,因此我目前无法提供它们。我当前的默认内核参数是:

label ubnentry1
menu label ^Try Ubuntu without installing
kernel /casper/vmlinuz.efi
append initrd=/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper  quiet splash -- persistent
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

谢谢你。

小智 9

正如之前的评论中提到的,这与错误 https://bugs.launchpad.net/ubuntu/+source/casper/+bug/1489855 “挂载顺序从根分区然后持久分区(15.04)更改为无论出于何种原因,第一个持久然后根分区(16.04)。”

最近在该错误的线程中更新了一个解决方法,我将在下面详细说明,因为另一个线程似乎没有那么多的可见性(当我试图解决它时,在谷歌搜索中出现了较低的位置) .

  1. 创建分区 casper-rw 和 OS

  2. 使用通用 USB 安装程序等设置操作系统分区,并使用足够大的 casper-rw 文件进行更改 - 需要稍后步骤解决错误(我用 2gb 完成,但肯定需要更少)

  3. 使用新的 USB 启动。/usr/share/initramfs-tools/scripts/casper用root打开编辑(sudo)。将函数 setup_unionfs() 更改为以下内容:https ://launchpadlibrarian.net/258626969/casper%20function.txt

  4. sudo update-initramfs -u (必须卸载 cryptsetup 才能执行此操作)

  5. 将生成的 initrd.img 文件复制/boot到另一个位置。

  6. 从另一个操作系统,删除USB 中的 casper-rw文件。将 initrd.img 复制回 live 分区并更改菜单项以使用新构建的 initrd.img。

下次从 USB 启动时,它现在应该从 casper-rw分区启动。

在寻找解决方案的漫长令人沮丧的时间之后,这对我 16.04 有用!


ara*_*eja 2

我在创建 pendrive 并启动它时没有遇到任何问题...您是否按如下方式创建了 perndrive?

该过程涉及 3 个步骤:

  1. 对 U 盘进行分区。
  2. 使用通用 USB 安装程序制作可启动随身碟。
  3. 向 UUI 分区添加标志并完成分区过程。

步骤1:

打开 GParted 并对 U 盘进行分区,如下所示-

在此输入图像描述

未分配的分区稍后在步骤3中添加,sdc2用于Ubuntu,sdc3用于持久化。由于这是一个 8GB 随身碟,我使用 3.32GB 作为永久驱动器,但可以使用任何大小。将此分区标记为casper-rw

第2步:

将 U 盘插入 Windows 计算机。将检测到第二个驱动器(即标签操作系统)。使用通用 USB 安装程序在此驱动器中安装 Ubuntu。

在此输入图像描述

设置一个小的持久文件,我用了204MB。大小并不重要,因为无论如何我们都会在步骤 3 中删除它。按创建

步骤3:

将 U 盘插回到 Ubuntu 系统中并按如下方式更改分区表 -

在此输入图像描述

现在是最后一部分,右键单击第二个分区并选择Manage Flags。检查Bootlba


现在您拥有一个可在 Windows 中检测到其第一个分区的随身碟以及一个大于 4GB 的永久驱动器。

在此输入图像描述

在此输入图像描述

  • 持久分区适用于 32 位安装的 SDC/Unetboot,但不适用于 14.04 及更高版本的 64 位安装。64 位 grub2 / iso(多重引导类型)可与持久 casper-rw 分区一起安装。 (2认同)

tot*_*tti 1

启动过程似乎在加载初始 RAM 磁盘后就中断了。这是由于挂载根文件系统(filesystem.squashfs)失败造成的。由于在编辑分区之前一切正常,以下一个或多个可能是失败的原因。

  • UUID 的更改。
  • 损坏的文件(filesystem.squashfs、vmlinuz)
  • 文件系统损坏

尝试:

  • 格式化启动分区(使用 ext3)(现在您和之前一样拥有三个分区)。
  • 使用带有持久性选项的UNetbootin重新创建实时系统。
  • 删除持久性文件(以便它使用持久性分区)