删除 GPT - 默认返回 MBR

删除 GPT - 默认返回 MBR

我不断收到此错误:

警告!!检测到不支持的 GPT(GUID 分区表)。使用 GNU Parted

我想回到正常的MBR。我找到了一些建议这里并做了:

parted /dev/sda
mklabel msdos
quit

但是当我进入该mklabel选项时,它会发出警告,提示我将丢失/dev/sda.有没有办法在不格式化磁盘的情况下恢复正常的MBR?

答案1

您发布的链接看起来像是一种非常丑陋的黑客类型的解决方案。

然而,根据手册页gdisk,用于转换 MBR -> GPT 的 ,在“恢复和转换”菜单中也有一个选项(按r即可)来转换 GPT -> MBR;关键g将:

将 GPT 转换为 MBR 并退出。该选项将尽可能多的分区转换为 MBR 形式,破坏 GPT 数据结构,保存新的 MBR,然后退出。如果您尝试过 GPT 并发现 MBR 更适合您,请使用此选项。请注意,此函数最多生成四个主 MBR 分区或三个主分区以及尽可能多的逻辑分区。每个逻辑分区在其第一个块之前至少需要一个未分配的块。

我会先尝试一下。

答案2

前面的大多数受访者说您通常可以使用 GPT 分区表布局来完成您需要的事情,这是正确的,但由于有想要使用 MBR 的正当理由,我想我只会回答你的问题,而不是假设你问错了。

要摆脱 GPT,您需要记住,使用这种格式时,有一个分区表写入结尾如果您尝试使用 fdisk 或不支持 GPT 的文件系统工具将其删除,该驱动器将保留在该驱动器中。您对parted所做的操作并没有解决这个分区表的问题。

要擦除 GPT,您需要使用 gdisk 之类的工具。在提示符下以 root身份输入gdisk,然后告诉 gdisk 您要查看哪个设备(即 /dev/sd??)。使用 gdisk 将保护性 MBR 写入磁盘只是为了确保您可以访问某些 MBR 数据结构。然后您可以导航到专家选项部分(按r然后x)(?在不同的程序提示下按以查看不同时间可用的选项)并找到“Zap(销毁)GPT 数据结构并退出”选项(z)。程序会提示您确认,然后询问您是否要保留MBR结构。一定要保存好这个。

之后,它应该像重新启动计算机一样简单(因为内核仍将使用旧的分区表,并且需要重新启动才能更新),然后启动 fdisk 并删除 GPT 分区的剩余部分。您仍然会看到与之前看到的有关使用 GNU Parted 的相同警告,但这次您可以忽略它,因为当您删除分区时它就会消失。

这将为您提供空白驱动器上的 MBR 分区表系统,您可以在其中重新安装操作系统。如果您尝试对现有分区执行此操作,则会更加复杂,在某些情况下甚至不可能,因此我建议您只需备份数据并以这种方式执行此操作。

答案3

使用gdisk /dev/sda

笔记: /dev/sda是问这个问题的人的情况,但将其更改为您的驱动器名称。

进入 gdisk 后,使用:

x   extra functionality (experts only)

然后当您键入p查看所有选项时,您将看到以下内容:

Expert command (? for help): ?
a   set attributes
c   change partition GUID
d   display the sector alignment value
e   relocate backup data structures to the end of the disk
g   change disk GUID
h   recompute CHS values in protective/hybrid MBR
i   show detailed information on a partition
l   set the sector alignment value
m   return to main menu
n   create a new protective MBR
o   print protective MBR data
p   print the partition table
q   quit without saving changes
r   recovery and transformation options (experts only)
s   resize partition table
t   transpose two partition table entries
u   Replicate partition table on new device
v   verify disk
w   write table to disk and exit
z   zap (destroy) GPT data structures and exit
?   print this menu

使用z

Expert command (? for help): z
About to wipe out GPT on /dev/xvdf. Proceed? (Y/N): Y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
Blank out MBR? (Y/N): Y

答案4

应该适用于大多数情况。您知道,当您的分区大于 2TB 或超过 15 个分区时,您无法使用 MBR。

  • 使用parted检查分区的大小(即都小于2TB?),parted /dev/sdX p
  • 如果存在较大的分区,请缩小有问题的文件系统以及需要完成的所有其他操作。 (更多相关内容请参见本文末尾。)
  • 转储所有确切的分区大小parted /dev/sdX u B p(以字节为单位显示大小),以便您知道如何最终重新创建分区布局。使用手机从两个输出中拍摄照片parted
  • 请记住,由于 MBR 的内部结构,您只能有四个主分区。因此,如果您有更多分区,则需要磁盘上某处的可用空间(当然,您需要知道这可能在哪里!),以创建一个可以放置 VBR 的逻辑分区,以便您可以“分配”其他 4 个分区/先前存在的第五/第六分区。
  • 用于gdisk清除 GPT。
  • 创建一个新的 MBR。
  • 重新创建分区,第一个/第二个/第三个作为主分区,然后在一些可用空间(之前没有数据的地方!!!)创建一个逻辑分区,然后创建其他分区。
  • 保存,退出。
  • 祈祷。
  • 重启。

您应该使用像这样的 livediskgrml来完成这一切。如果您做错了什么,请重新启动并重试。

只要不向磁盘写入任何数据,就不会丢失任何数据。请记住,您的手机上仍然保留着所有分区布局,因此如果确实需要,您可以重新创建原始 GPT。

如果你真的搞砸了并且没有拍照,请尝试testdisk辨别分区边界。但是,一旦您的布局非常出色,就不要在上面赌任何钱。


关于调整大小以缩小分区的内容,鸟瞰图:

  • 首先,您始终必须缩小文件系统。对于 ext4 ( resize2fs -M dev/sdX) 来说很容易,但对于 XFS 来说则不可能,因为它无法缩小。在尝试此类特技之前,请先了解您正在使用的是什么并进行谷歌搜索。
  • 如果您有 LVM,接下来缩小逻辑卷。 ( lvreduce -L 20G /dev/mapper/<VG>-<LV>)
  • LVM 的下一步是缩小物理卷的大小。pvresize --setphysicalvolumesize 25G /dev/sdX是要走的路。
  • 然后使用选择的分区工具,删除您的lvm所在的分区,然后重新创建较小的分区。

这里提到的所有元素的大小如下:文件系统 < LV < PV < 分区,如果下次重新启动后情况并非如此,您将看到必须执行 FS 检查。不要这样做,只需再次重新启动进入 livedisk,然后进行调整即可。我保证,如果你修复了那里的问题,你的系统将再次启动。

为了能够完成这一切,如果您有 PARTITION + LUKS + LVM + FILESYSTEM,这里有一些关于如何从 shell 执行此操作的提示:

  • df -h是您安装分区时显示文件系统大小的朋友
  • lsblklsblk -f你展示分区的朋友
  • 如果您使用 LUKS,请通过 打开加密容器cryptsetup open /dev/sdX asdf,输入您的密码,它应该在 下可用/dev/mapper/asdf。加密容器不需要调整大小。 (当然,如果您没有加密分区,请跳过此步骤。)
  • vgchange -aay激活所有逻辑卷,以便您可以使用它们。
  • mkdir asdf; mount /dev/mapper<VG>-<LV> asdf然后df -h在调整大小之前检查文件系统的大小。
  • umount asdf所以它再次被卸载。
  • resize2fs -M /dev/mapper/<VG>-<LV>
  • mount /dev/mapper/<VG>-<LV> asdf; df -h检查你的文件系统还有多大。
  • 使 LV 比文件系统大 1GB。很可能,这还不够。如果你能承受的话,把它做得更大,否则 Linux 会在重新启动后告诉你它不会工作。不要在出现提示时执行 FS 检查,重新启动到 livedisk 并再次启动,如果是这种情况,不会丢失任何数据。
  • 让PV比LV大1GB。
  • 使分区比 PV 大 1GB。 100M 也应该足够了,因为 LVM 创建了 4M 大小的盘区(这有点像直接在硬盘上创建块,但对于 LVM 而言),并且您只希望它不要通过使分区太小而省略最后一个盘区。但正如我所说,应该。不要计算一切,只要调整事情并在出现问题时修复它们。毕竟是Linux,它可以让你做到这一点。

让事情变得比需要的更大,这样你就不必经常重新启动。

为了轻松辨别 LVM 的用途,请在创建 LVM 设置时始终使用您的主机名作为 VG 的名称和 LV 的挂载点(rootswapvar、 ...)(如果您还没有这样做)。这是一般提示,不需要您为上述任何步骤执行操作。

相关内容