删除GPT-默认返回MBR


33

我不断收到此错误:

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

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

parted /dev/sda
mklabel msdos
quit

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


2
您要切换的原因是什么?您要解决的真正问题是什么?
jordanm

1
如果要格式化驱动器,请尝试以下操作:blog.gnub.net/2009/03/die-gpt-die.html(对不起,没有声誉可以回答!)
Lester Cheung

Answers:


28

您发布的链接看起来像一个非常难看的hack类型的解决方案。

但是,根据手册页,gdisk用于转换MBR-> GPT,在“恢复和转换”菜单中也有一个选项(按r获取),以转换GPT-> MBR。在g关键的意愿:

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

我会先尝试。


是的,这很容易,但是仍然有风险。
jordanm

@jordanm:我自己还没有做这件事(这就是为什么我承认“ google隐含”),但是既然gdisk显然具有明确的手段,那么为什么您认为它有风险呢?r-> g选项的gdisk手册页根本没有任何警告...
goldilocks 2013年

如果您将所需的gdisk步骤内联到您的答案中,将会改善此答案。特别是步骤有多短。永远不知道链接何时会失效,从而使答案毫无用处。
derobert 2014年

@derobert:是的,原始内容更多是评论。我改用了gdisk手册页中的内容。
goldilocks 2014年

1
要完全擦除,您应该在gdisk中使用ZAP
Sergey P. aka azure

16

以往大部分的受访者是正确的,当他们说,你通常可以做你需要用GPT分区表的布局是什么,但因为为希望使用MBR正当的理由,我想我会只回答你的问题,而不是假设你的问错了。

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

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

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

这将在空白驱动器上为您提供MBR分区表系统,您可以在其上重新安装OS。如果您尝试使用现有分区来执行此操作,则它会变得相当复杂,在某些情况下甚至是不可能的,因此,我建议您仅备份数据并以这种方式进行操作。


1
“我想我只会回答你的问题,而不是假设你问错了。” -那简直太疯狂了!
Michael Mrozek

6

使用 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

2
只有这个答案对我有用,感谢分享。
Aleksandar

1

这在大多数情况下应该有效。您知道当分区大于2TB或分区超过15个时,不能使用MBR。

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

为此,您应该使用活动磁盘grml。如果您做错了什么,请重新启动并重试。

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

万一您真的testdisk搞砸了并且不拍照,请尝试辨别分区边界。但是,一旦您的布局异常出色,就不要再花任何钱了。


关于缩小分区大小的调整工作,鸟瞰图:

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

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

为了能够完成所有这些操作,如果您具有PARTITION + LUKS + LVM + FILESYSTEM,则以下是一些有关如何从外壳执行此操作的提示:

  • df -h 是您的朋友,用于在挂载分区时显示文件系统大小
  • lsblk并且lsblk -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检查,然后重新启动到活动磁盘中并重新启动,在这种情况下,不会丢失任何数据。
  • 使PV 1GB比LV大。
  • 使分区比PV大1GB。100M也很容易满足,因为LVM会创建4M大小的扩展区(这有点像直接在硬盘上的块,但对于LVM),并且您只希望它不通过使分区过小而忽略最后一个扩展区。但正如我所说,应该。不要计算所有内容,只需调整并修复它们即可解决。毕竟是linux,让我们来做。

使事情变得比实际需要更大,因此您不必经常重启。

要轻松辨别什么是什么使用LVM,总是用你的主机名作为名称为VG和挂载点(rootswapvar创建你的LVM设置时,...)的LV,如果你没有已经这样做了。这是一般性提示,不需要执行上述任何步骤。


1

GParted只是通过以下方式为我完成了工作(在Kali Linux USB Live v2.1 上进行了测试):

Device --> Create Partition Tablet --> Type MSDOS

首先删除所有分区。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.