Gparted 或 mkfs 损坏 GPT 备份头/表

Gparted 或 mkfs 损坏 GPT 备份头/表

- - - - 编辑 - - - -

这个问题不是关于如何将 Ubuntu 安装到 USB 驱动器(我已经知道如何做到这一点)。这个问题是关于为什么标准实用程序会破坏 GPT 表。

------- 编辑 2 -------

包括运行 gparted 之前和之后的 gdisk 输出,显示 GPT 表损坏

------- 编辑 3 -------

请参阅下面发布的我自己的回答。简而言之,USB 驱动器存在缺陷。

------- 初步信息 -------

Ubuntu 20.04

计算机是 HP Laptop 17-by1xxx 型号,大约 2 年前。我检查了 BIOS 设置中是否有提及 RAID 配置或设置,并在“系统配置”部分的“UEFI 设备配置”下找到了“Intel(R) Rapid Storage Technology”选项。选择此选项后,会出现一个标题为

Intel(R) RST 17.5.2.4317 RAID 驱动程序

但下面却显示“没有磁盘连接到系统”

我找不到任何可以完全禁用此功能的选项(这台计算机上的内置存储设备是 NVMe SSD 驱动器)。

请注意,我已安装 Ubuntu,并且它在 NVMe 驱动器上的分区上正确运行,没有任何问题。

------ 实际问题和背景 -----

我刚买了几个 2TB 的 USB 拇指驱动器。我试图将其中一个设置为 Ubuntu 的安装副本,但遇到了一个奇怪的问题。

我做的第一件事是启动 Ubuntu (20.04.4) 的 Live USB 副本。然后我启动 gparted,清除驱动器上的任何残留分区或分区表。Gparted 正常启动,并检测到新的 USB 设备,显示它上面有一个 FAT32 分区(正如预期的那样)。然后我使用设备菜单创建分区表,选择 GPT,并告诉它继续。它完成了,没有错误(至少没有它告诉我的任何错误)。

接下来,我创建了一个 200mb 的空分区,没有对其进行格式化(格式化将在安装期间将其指定为 EFI 分区时进行)。同样,没有报告错误。

接下来,我创建了一个 128000mb 的分区(用作根分区),并将其格式化为 EXT4。同样,没有报告错误。

最后,我创建了第二个 128000mb 分区(用作主分区),并将其格式化为 EXT4。这次,gparted 立即报告“备份 GPT 表已损坏,但主表看起来正常,因此将使用它”。此提示出现了 3 次,然后过程继续。当该过程完成时(根据对话框消息,据称是成功完成),我可以看到分区列表,显示所有分区都显示正确,有两个 EXT4 格式的分区,然后再次出现 GPT 表消息。关闭该消息会将第二个 EXT4 分区的显示更改为类型未知。

退出 gparted 并运行 gdisk,它报告备份表的头无效,然后主表和备份表不匹配,然后一个或多个 CRC 不匹配。

此时,我使用选项 x 进入专家模式,然后使用选项 e 将备份表重新定位到驱动器末尾(以防万一),然后使用选项 w 将信息写入驱动器。

使用 gdisk 重新扫描驱动器后,没有发现任何问题。因此,我返回 gparted(启动时未报告任何错误),发现第二个分区仍然显示为未知类型。选择将该分区重新格式化为 EXT4,启动格式化过程,但会产生与上述相同的错误。

我也在以前运行的(并完全更新)的 Ubuntu 20.04 副本和第二个 USB 拇指驱动器(容量也是 2TB)上重现了这个问题。

根据在另一篇文章中找到的线索(抱歉,我没有这篇文章的链接可以放在这里——这是一个花了几个小时和大量搜索的过程),我将磁盘的最后 50 个扇区转储到一个文件中(使用 dd 复制它们)。检查文件没有发现任何对我有用的东西(实际上根本没有)。当然没有人类可读的字符串或类似的东西。

我不知道这是 gparted 的问题,还是 mkfs.ext4(gparted 用它来格式化分区)的问题,或者是 gparted 使用的其他工具的问题,或者也许我只是掷出了 5 个 A,并且有两个坏的 USB 拇指驱动器。

有人能给我一些建议,告诉我应该看什么,或者如何才能让它成功运行吗?

------- gdisk 输出 -------

sudo gdisk -l /dev/sdf
GPT fdisk (gdisk) version 1.0.5

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sdf: 4096000000 sectors, 1.9 TiB
Model: ProductCode     
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 472F2FE1-C821-4091-8529-AF88FE2EEE41
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 4095999966
Partitions will be aligned on 2048-sector boundaries
Total free space is 3571302333 sectors (1.7 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          411647   200.0 MiB   8300  
   2          411648       262555647   125.0 GiB   8300  
   3       262555648       524699647   125.0 GiB   8300  

<here I ran gparted, and attempted to format partition 3 to EXT4>

sudo gdisk -l /dev/sdf
GPT fdisk (gdisk) version 1.0.5

Caution: invalid backup GPT header, but valid main header; regenerating
backup header from main header.

Warning! Main and backup partition tables differ! Use the 'c' and 'e' options
on the recovery & transformation menu to examine the two tables.

Warning! One or more CRCs don't match. You should repair the disk!
Main header: OK
Backup header: ERROR
Main partition table: OK
Backup partition table: ERROR

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: damaged

****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
Disk /dev/sdf: 4096000000 sectors, 1.9 TiB
Model: ProductCode     
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 472F2FE1-C821-4091-8529-AF88FE2EEE41
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 4095999966
Partitions will be aligned on 2048-sector boundaries
Total free space is 3571302333 sectors (1.7 TiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          411647   200.0 MiB   8300  
   2          411648       262555647   125.0 GiB   8300  
   3       262555648       524699647   125.0 GiB   8300  

答案1

好吧,事实证明,访问 USB 驱动器的所有工具都不是问题的根源。显然,USB 驱动器本身才是问题所在。我对它们运行了 f3probe,发现这些驱动器似乎是假货 - 小型闪存驱动器,其控制器被“调整”以报告更大的尺寸。

发布此回复是为了防止有人遇到类似的问题,让他们知道去哪里检查。

------ f3probe 的输出 -------

第一次驾驶:

sudo f3probe --destructive --time-ops /dev/sdf
F3 probe 7.2
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Bad news: The device `/dev/sdf' is a counterfeit of type limbo

You can "fix" this device using the following command:
f3fix --last-sec=128337072 /dev/sdf

Device geometry:
             *Usable* size: 61.20 GB (128337073 blocks)
            Announced size: 1.99 TB (4282368000 blocks)
                    Module: 2.00 TB (2^41 Bytes)
    Approximate cache size: 1.00 MB (2048 blocks), need-reset=no
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 8.39s
 Operation: total time / count = avg time
      Read: 409.0ms / 4390 = 93us
     Write: 7.94s / 70315 = 113us
     Reset: 0us / 1 = 0us

第二次驱动:

sudo f3probe --destructive --time-ops /dev/sdf
F3 probe 7.2
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

WARNING: Probing normally takes from a few seconds to 15 minutes, but
         it can take longer. Please be patient.

Bad news: The device `/dev/sdf' is a counterfeit of type limbo

You can "fix" this device using the following command:
f3fix --last-sec=124991487 /dev/sdf

Device geometry:
             *Usable* size: 59.60 GB (124991488 blocks)
            Announced size: 1.99 TB (4282368000 blocks)
                    Module: 2.00 TB (2^41 Bytes)
    Approximate cache size: 3.00 MB (6144 blocks), need-reset=no
       Physical block size: 512.00 Byte (2^9 Bytes)

Probe time: 2.54s
 Operation: total time / count = avg time
      Read: 432.6ms / 16501 = 26us
     Write: 2.06s / 61658 = 33us
     Reset: 2us / 2 = 1us

相关内容