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

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

因此,我花了一天时间研究类似的问题,并首先确认这不是重复的:

解决了这个问题:我使用 UNetbootin 以及 Ubuntu 启动盘创建器创建了一个 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) _

我已经查看过 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

这次它至少找到了启动分区并开始尝试启动 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

我该如何解决这个问题?

谢谢。

答案1

正如之前的评论中提到的,这与错误有关 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. 从另一个操作系统中删除 casper-rw文件在 USB 中。将 initrd.img 复制回活动分区并更改菜单项以使用新构建的 initrd.img。

下次从 USB 启动时,它应该从 casper-rw 启动分割

经过长时间令人沮丧地寻找解决方案后,此解决方案在 16.04 中对我有用!

答案2

于嘉的回答更新...感谢于嘉指明正确的方向。

1)首先使用 casper-rw 文件以避免 casper-rw 分区问题。500MB 或更少就足够了。

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

3)sudo update-initramfs -u(来自cryptsetup的警告,但可以安全忽略。)

4) 将生成的“initrd.img.4.4....generic”文件从 /boot 复制到另一个位置。将其重命名为 initrd.img。

5) 从另一个操作系统删除 USB 中的 casper-rw 文件。

6) 将 initrd.img 复制回活动分区并更改菜单项以使用新构建的 initrd.img。例如

label ubnentry1
menu label ^Ubuntu 16.04
kernel /casper/vmlinuz.efi
append initrd=/newly_generated_initrd.img file=/cdrom/preseed/ubuntu.seed boot=casper  quiet splash -- persistent

答案3

mkusb 版本 11 classic 和版本 12 别名 mkusb-dus可以使用所有当前的 Ubuntu 版本和风格以及 Debian Jessie 自动创建持久实时驱动器。

mkusb 使用casper-rw分区

mkusb 也适用于一些源自 Ubuntu 的 Linux 发行版。我还没有测试过最新的 Linux Mint 版本,但它可以与以前的版本一起使用,因为启动结构与 Ubuntu 非常相似。

在此处输入图片描述

在 Ubuntu 和 Ubuntu 版本(Kubuntu、Lubuntu ... Xubuntu)中使用以下命令行安装 mkusb。

如果您运行标准 Ubuntu,则需要额外指令来获取存储库 Universe。(Kubuntu、Lubuntu ... Xubuntu 已自动激活存储库 Universe。)

sudo add-apt-repository universe  # only for standard Ubuntu

sudo add-apt-repository ppa:mkusb/ppa  # and press Enter
sudo apt-get update
sudo apt-get install mkusb mkusb-nox usb-pack-efi

查看这些链接,

mkUSB-快速入门手册.pdf

help.ubuntu.com/community/mkusb

help.ubuntu.com/community/mkusb/persistent

help.ubuntu.com/community/mkusb/install-to-debian

下载并使用 mkusb-installer 适用于其他几个 Linux 发行版。使用以下链接(和方法)之一,

help.ubuntu.com/community/mkusb/gui#from_phillw.net

help.ubuntu.com/community/mkusb/gui/tarball

答案4

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

该过程涉及 3 个步骤:

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

步骤1:

打开 GParted 并按如下方式对 pendrive 进行分区-

在此处输入图片描述

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

第2步:

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

在此处输入图片描述

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

步骤3:

将 U 盘重新插入 Ubuntu 系统,并按如下方式更改分区表 -

在此处输入图片描述

现在到了最后一部分,右键单击第二个分区并选择管理标志。 查看引导利巴韦林


现在您有一个 U 盘,它的第一个分区将在 Windows 中被检测到,还有一个大于 4GB 的持久驱动器。

在此处输入图片描述

在此处输入图片描述

相关内容