映像 iso 后无法在 gparted 中创建分区

映像 iso 后无法在 gparted 中创建分区

我在 64GB USB 上有 Kali Linux ISO 映像,如中所述官方文档

我还创建了持久分区分手了依据官方文档

但现在gparted显示没有分区的整个驱动器: 在此输入图像描述

为什么它不显示所有分区?这是预期的行为吗?有什么办法让它理解并显示所有分区吗?

这里是LSBLK输出: lsblk 输出

我想将所有剩余空间用作普通 ExFAT 存储。正确的做法是什么?

答案1

在此发布此内容只是为了澄清@Abhik Bose 的答案。

使用 USB 驱动器对 iso 进行映像后,dd磁盘开头有多个分区表。

v0.28 以下的 gparted 版本存在 ISO 分区映射错误,该错误修复导致了上述另一个问题。

因此,使用旧版本的 gparted(v0.28 之前),例如 v0.25,将解决此问题。但有更好的方法来做到这一点。

将 USB 连接到另一台 Linux 计算机(例如另一台 Kali 或 Ubuntu VM)检查其名称lsblk

然后查看所有分区表wipefs /dev/sdb

在此输入图像描述

正如我们所看到的,在驱动器的开头还有另外两个分区表签名:gpt和dos(我猜它与mbr相同)

做:

wipefs -o 0x8001 /dev/sdX  # X - letter of the drive

这将通过外科手术在 ISO 签名的 5 个字节上写入零,而不会触及 GPT(或者至少是这样)这个帖子说...)

现在运行gparted /dev/sdb并查看预期结果:

在此输入图像描述

就是这样。

答案2

请参见gparted 仅在 Fedora 27 中未检测到 USB 驱动器分区寻求开发商的解释gparted。我有类似的问题并询问。

后来我发现新版本的软件也有这个问题。因此您可以卸载当前安装的版本gparted。下载编译源代码gparted 25并使用它。我正在使用gparted 25并且它在您提到的情况下运行良好。

笔记您可能需要gparted 25以 root 身份运行仅终端。如果您想从与软件对应的 GUI 编辑菜单按钮启动它,请选择在终端中运行选项并sudo在启动命令之前附加。

答案3

您可以从命令行使用 gparted 访问持久分区,但不能使用以下命令更改它

gparted /dev/sdb3

否则,您可以从命令行更改文件系统,就像创建文件系统一样

mkfs.exfat -L myPartitionName /dev/sdb3

最好从您用来创建实时 USB 的发行版执行此操作,而不是从 Kali 的实时启动中执行此操作,因为持久分区包含您可能已安装的任何更新或软件包。

编辑

显而易见的一点

由于将dd'iso 映像复制到 USB,因此它还会复制系统将其识别为 iso 映像并正确启动所需的签名。正如您所发现的,如果没有此信息,它将无法启动。

有趣的一点

尽管您在创建时修改了分区表/dev/sdb3,并且可以检测并挂载您创建的持久性 FS,但gparted出于给定的原因,您仍将其视为单个 iso 卷这里

作为错误 771244 的一部分,在 GParted 0.28.0 中更改了在分区表之前报告整个磁盘文件系统的行为。这样一来,内核报告的嵌入在整个磁盘上的 ISO 映像中的分区就不会显示,因此用户不会尝试操纵那些 ISO 嵌入分区,这是不可能的。

答案4

这只是对@Abhik Bose 和@Drew 答案的补充。

使用wipefs删除ISO9660签名后,USB将不再可启动。

使用中提供的命令这篇关于撤消wifs的文章ISO9660 魔字节 [43 44 30 30 31]我能够使用以下命令恢复 USB 的可启动属性:

echo -en '\x43\x44\x30\x30\x31' | sudo dd of=/dev/sdb bs=1 conv=notrunc seek=$((0x8001))
sudo partprobe /dev/sdb

这将有效地反转wipefs操作,将USB返回到其原始状态。

相关内容