如何编辑可启动的USB闪存驱动器?

尝试将"nomodeset"添加到16.04桌面安装程序的启动选项中。
尝试使用"hdparm"使USB可写,但没有效果。
尝试使用"isomaster"在使用"Startup Disk Creator"刷写之前修改ISO文件 - USB无法被检测为可引导设备。
查看了https://help.ubuntu.com/community/LiveCDCustomization - 这是一个过度复杂的方法,看起来不太有希望。 编辑: 尝试了那个方法,但无法引导。
类似于被关闭的这个问题: 如何创建一个非只读的可引导USB闪存驱动器

UEFI还是BIOS?通常情况下,如果是BIOS,你只需要在启动时按F6键添加nomodeset参数,或者在启动时编辑grub引导菜单,按E键。但如果需要的话,你也可以进行编辑。如果是UEFI,只需将nomodeset参数添加到/boot/grub/grub.cfg文件中。如果是BIOS,则需要将其添加到/isolinux/text.cfg文件中的syslinux引导配置中。实际上,我在我的grub.cfg文件中已经添加了nomodeset参数,用于直接循环挂载ISO镜像。https://help.ubuntu.com/community/Grub2/ISOBoot - oldfred
正如我之前提到的,没有什么是可以写的。 - Velkan
这个问题已经在这里回答了:https://askubuntu.com/questions/38780/how-do-i-set-nomodeset-after-ive-already-installed-ubuntu 这里的区别是它是一个Live USB,但是一些答案可能适用。 - Quidam
在这里:https://askubuntu.com/questions/9262/change-liveusb-default-boot-options - Quidam
这个回答解决了你的问题吗?更改“LiveUSB”默认启动选项 - Quidam
@Quidam,我完全不知道,那是很久以前的事了。为了测试这个答案,我需要找到一个空的硬盘,一台可以插入它的电脑,下载并刷写一个镜像(现在是当前的18.04还是20.04?它可能会有不同的表现)。 - Velkan
没关系,因为这些问题在这里作为知识库存在。 - Quidam
@Quidam,看来这是有关系的,因为我现在无法进行测试。 - Velkan
不要紧,如果你对答案不再感兴趣了,因为它太旧了,而且你已经转向其他事情,问题和答案始终在这里为处于相同情况的人提供帮助,这就是为什么他们禁止我们在这里多次提出同类问题的原因。 - Quidam
@Quidam,你可能是新来的。我建议你阅读一些关于旧问题和坚持接受答案的Stack Overflow元主题讨论。那里一定有一些有趣的讨论和思考。 - Velkan
谁坚持要接受答案?我不明白你的观点。我并不经常使用AskUbuntu,因为我使用的是不同的操作系统,但我在这里也不是新手。 - Quidam
4个回答

根据您创建USB启动驱动的方式,它可能是可读写的或只读的。
克隆驱动
使用Ubuntu 16.04 LTS或更新版本中的“启动磁盘创建器”创建的克隆驱动具有混合的iso9660文件系统,可以在DVD和USB闪存驱动器(以及存储卡)上使用,但出于设计原因,它是只读的,因此您无法对其进行任何编辑。另外,“Disks”别名为“gnome-disks”,以及“mkusb”(在克隆和创建仅限于现场使用的驱动器时)也会生成具有混合的iso9660文件系统的USB驱动器。
提取驱动
例如,提取驱动可以是:
- 使用mkusb创建的持久化现场驱动器,或 - 使用Rufus创建的仅限于现场使用的驱动器。
可以进行编辑。您可以将nomodeset和其他启动选项添加到引导配置文件中,以便它们持久化(在将来使用时仍然有效)。在分区#3的'usbboot'上编辑boot/grub/grub.cfg,用于mkusb。您可能需要从另一个驱动器启动,以便为Rufus挂载FAT32文件系统并进行读写操作。

制作Ubuntu 19.10+ USB启动盘的新提示

  • 你可以编辑你的二进制ISO文件,并将启动选项quiet splash替换为启动选项'persistent''nopersistent'(这些字符串包含12个字符,因此可以在ISO文件的后续部分中进行替换而不需要任何偏移量)。你可以使用sed命令来完成:

    sed 's/quiet splash/persistent  /' standard.iso > persistent.iso
    sed 's/quiet splash/nopersistent/' standard.iso > nopersistent.iso
    

    然后克隆修改后的ISO文件,或者直接刷写到设备上:

    sed 's/quiet splash/persistent  /' standard.iso > /dev/sdx
    sed 's/quiet splash/nopersistent/' standard.iso > /dev/sdx
    

    其中x是USB闪存盘的设备字母。

  • 你可以使用mkusb-minp来确保安全操作。

  • 使用mkusb-plug更加方便和安全,它包括了整个过程,包括sed命令,并提供了图形用户界面。

  • 你也可以使用提取方法自行操作,并根据此链接获取你喜欢的任意组合的启动选项。


1是的,看起来像是混合的ISO9660格式,所以没有快速的方法。对于实际的视频问题,我选择了完全安装并在之后进行调整。 - Velkan
@Velkan,我很高兴能够帮助你找到问题所在,并且你已经为安装的系统找到了解决方案。谢谢你分享你的解决方法 :-) - sudodus

如果你使用 Rufus 在 Windows 上使用 GPT 引导结构来刷写镜像,那么在 Ubuntu 16.04 LTS 上可以使用以下命令: sudo mount -o remount,rw /media/cdrom /media/cdrom 来重新挂载你的驱动器。我不建议这样做,但它确实有效。

您可以尝试使用UNetBootIn。这是一款软件,允许您将内容写入USB存储设备上的现有分区,如fat32或ext4。只有在fat32文件系统下才能实现持久化。然而,由于其文件系统,USB存储设备是可写的。
可以通过以下方式下载Unetbootin:
sudo apt update && sudo apt install unetbootin 

我不确定Unetbootin是否允许您写入分区,它更倾向于将ISO放在分区上。我不确定在这里写入分区是否有用,因为用户要求引导参数。它与持久性没有关联,它是一个引导参数。它也与U盘只读无关。 - Quidam

hdparm不是解决方案(参见man hdparm)。

你的USB闪存驱动器可能以只读方式挂载,但你没有提供这方面的信息。

假设你的USB闪存驱动器位于设备/dev/sdx上(实际情况应该不是这样,但我在示例中使用/dev/sdx,请替换为你的值),你可以通过以下方法将其挂载为可读写:

sudo mount -o remount,rw /dev/sdx

1我也尝试了重新挂载。它无法进行读写重新挂载。 - Velkan