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

所以,我在最后一天经历了类似的问题,并且可以首先确认这不是重复的:

  • Ubuntu Live-USB使用“casper-rw”分区
  • 永久Ubuntu 14.04 USB在创建ext4 casper-rw分区后无法启动

解决了这个问题:我使用UNetbootin以及Ubuntu Startup Disk Creator创建了一个Ubuntu 14.04.03 Live USB闪存盘(32GB)。 在这两种情况下,我都能够成功部署我的Ubuntu ISO( 我通过md5sum分析证实它是完整的 )。 在这两种情况下,持久性都成功运行(我必须在使用Ubuntu Startup Disk Creator时手动启用它,但是UNetBootin会自动将持久性内核参数添加到syslinux.cfg ),没有问题。

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

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

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

  • 如何制作超过4GB的持久性Ubuntu USB
  • 如何让live-USB使用分区进行持久化?

说明很清楚:

  1. 使用Ubuntu创建一个Live USB闪存驱动器,为额外的分区留出空间。
  2. 删除闪存驱动器上第一个FAT分区上的casper-rw环回文件。
  3. 使用gparted在FAT分区后创建一个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 bug跟踪器,似乎许多其他人都观察到了这个问题:

  • 错误#1241589:ubuntu 13.10无法在live usb上启动(忙箱 – initramfs)

它已经解决了,所以我希望修复已经在我的Ubuntu 14.04.03映像中:

  • bug#1293811:casper不再想启动硬盘设备

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

 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 

我该如何解决这个问题?

谢谢。

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

最近在bug的主题中有一个更新的工作,我将在下面详细说明,因为其他主题似乎没有那么多的可见性(当我试图解决时谷歌搜索中出现较低) 。

  1. 创建分区casper-rw和OS

  2. 使用通用USB安装程序等设置操作系统分区,其中casper-rw文件足够大,可以进行更改 – 需要以后的步骤来解决bug(我用2gb做了,但肯定需要更少)

  3. 使用新USB启动。 打开/usr/share/initramfs-tools/scripts/casper with root to edit(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复制回实时分区并更改菜单项以使用新构建的initrd.img。

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

经过漫长的挫折时间寻找解决方案后,这对我来说是16.04的作用!

更新余佳的回答……感谢余佳指出了正确的方向。

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

2)使用新USB启动。 打开/ usr / share / initramfs-tools / scripts / casper with root to edit(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 

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

mkusb使用casper-rw分区

mkusb也适用于从Ubuntu派生的一些Linux发行版。 我没有使用最新的Linux Mint版本进行测试,但它适用于以前的版本,因为启动结构与Ubuntu类似。

在此处输入图像描述

在Ubuntu中使用以下命令行安装mkusb和Ubuntu(Kubuntu,Lubuntu … Xubuntu)。

如果您运行标准的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

我没有任何问题创建pendrive并启动它…你是否按如下方式创建了perndrive?

该过程包括3个步骤:

  1. 分配pendrive。
  2. 使用Universal USB Installer制作可启动的pendrive。
  3. 将标志添加到UUI分区并完成分区过程。

步骤1:

打开GParted并按照以下方式对pendrive进行分区 –

在此处输入图像描述

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

第2步:

将pendrive插入Windows机器中。 将检测到第二个驱动器(即标签-OS)。 使用Universal USB Installer在此驱动器中安装Ubuntu。

在此处输入图像描述

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

第3步:

将pendrive插回Ubuntu系统并更改分区表,如下所示 –

在此处输入图像描述

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


现在你有了一个pendrive,它将在windows中检测到第一个分区,并且持久驱动器大于4GB。

在此处输入图像描述

在此处输入图像描述

您的问题与此错误有关: https : //bugs.launchpad.net/bugs/1489855

较早版本的14.04 LTS可以使用。

  • 14.04.2的作品
  • 14.04.3失败了
  • 14.04.4失败了

也:

  • 15.04的作品
  • 15.10失败了

我只是通过这组非常有用的答案得到了很多帮助。

作为参考,我正在设置一个16 GB的金士顿数据旅行器,其中包含我之前使用SystemBack构建的自定义ISO映像。

我正在研究的操作系统是Lubuntu,我的自定义ISO有很多软件包更改(我删除了很多gumpf并安装了一些必要的实用程序)。

我开始使用araghuteja非常有用的指令集,并使用三个分区设置我的设备:

  • Windows可访问FAT32分区4 GB( /dev/sdc1
  • OS为2 GB( /dev/sdc2
  • 其余的(低于8 GB,但/dev/sdc3 )作为casper-rw分区( /dev/sdc3

遗憾的是,这并不是很有效,因为从OS分区中删除casper-rw 文件还不够。

真正的帮助来自Yu Jia Cheong和StarBloom,他们解释了如何重置GRUB引导程序以“看到”casper-rw 分区

我确实需要提供一些可能使余佳的指示更加清晰的细节。 (请注意,这些说明可能不完全适用于默认的Ubuntu ISO映像,因为我认为某些文件位置可能会被Systemback配置更改)。

具体来说 – 在第5部分,生成的文件

 sudo update-initramfs -u 

被命名为initrd.img-4.4.0-47-generic

所以 – 我将这个文件复制到我的’casper-rw’分区,但后来我意识到我的GRUB启动菜单看起来是引用/casper/initrd.gz (在四个地方),它位于UUI分区的/ boot / grub中

所以 – 我将initrd.img-4.4.0-47-generic重命名为initrd.gz ,并替换了UUI / boot / grub / casper /中的文件(显然保留了旧文件的副本以防万一!)。

使用特定的USB记忆棒启动并在“计算机”根文件夹中使用df -h ,我得到以下内容:

 $ df -h Filesystem Size Used Avail Use% Mounted on udev 16G 4.0K 16G 1% /dev tmpfs 3.2G 1.6M 3.2G 1% /run /dev/sdb1 2.0G 1.3G 729M 65% /cdrom /dev/loop0 1.3G 1.3G 0 100% /rofs /cow 8.2G 118M 7.7G 2% / none 4.0K 0 4.0K 0% /sys/fs/cgroup tmpfs 16G 4.0K 16G 1% /tmp none 5.0M 0 5.0M 0% /run/lock none 16G 0 16G 0% /run/shm none 100M 16K 100M 1% /run/user /dev/sdb3 4.0G 4.0K 4.0G 1% /media/silver/DATA /dev/sdb2 8.2G 118M 7.7G 2% /media/silver/casper-rw 

我假设/ cow是casper live分区,它显示的是正确的大小。

我觉得有趣的是,当我使用机器时,我实际上可以将casper-rw分区看作/ dev / sdb2 – 这是正确的吗?

我也不相信三向分区。 在Windows(10)中,我只能看到操作系统分区,而不是数据分区。

非常感谢所有人,我希望我的经验可以帮助别人! (注意 – 我对Stack Exchange的用法不够新,我无法评论 – 因此我的回答是新的,而不是对Yu Jia的评论)。

更新

我正在尝试再次创建另一个’Pen-Machine’,我意识到ISO映像越大,运行UUInstaller时为casper-rw 文件创建的空间就越大。

我最新的ISO映像类似于3.8 GB(它是一个定制的Ubuntu 16.04),经过三次尝试后,我必须创建5 GB的初始操作系统分区,并在安装程序中使用1 GB持久性设置 – 否则在更新时会耗尽存储空间initramfs函数。

注意 – 我最终将操作系统分区设置为8 GB,以确保我有空间!

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

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

尝试:

  • 格式化启动分区(使用ext3)(现在您有三个分区,如前所述)。
  • 使用具有持久性选项的UNetbootin重新创建实时系统。
  • 删除持久性文件(以便它使用持久性分区)

我一直在使用Lubuntu 14.04.3 i386 ISO镜像遇到类似的问题而放弃了。 然后我尝试了Lubuntu 15.04 AMD64 ISO映像(我早先在15.04放弃了,因为启动时出现了一个错误,但结果只是一个小问题* )。

casper-rw分区在后面的系统中运行正常(遵循通常的说明),因此问题似乎与进程无关,而是与某些14.04 ISO映像特有的问题有关。

我以前成功安装了带有casper-rw持久分区的Lubuntu 14.04系统,所以我知道原来的14.04确实有效。 那么问题可能只是14.04.3?

*如果您使用15.04并在启动时遇到问题“配置文件中缺少参数…” ,则输入“live”并输入。