如何无损数据清除硬盘中的 gpt 信息而保留 mbr?

284 天前
 balduncle
老笔记本,Lenovo e540 ,增加了内存条 8+4=12g ,更换了三星 ssd ,256g ,光驱位增加了 2t ,东芝 hdd 。

ssd 应该是用三星的 ssd 克隆软件复制的,常用系统是 win7 ,中间可能我装了 win8 还是 win10 多系统。

最近使用再生龙备份,一直报错。今天终于搜到,是可以 sudo -i ,然后把错误日志拷贝出来。

问题,问题,问题:

我的问题是,我现在 win7 启动没问题,就是克隆报错,说我磁盘同时有 mbr 和 gpt 。


Starting /usr/sbin/ocs-sr at 2023-08-01 18:20:49 UTC...
*****************************************************.
Clonezilla image dir: /home/partimag
Shutting down the Logical Volume Manager
Finished Shutting down the Logical Volume Manager
Found /home/partimag is using FAT file system. Set VOL_LIMIT_IN_INTERACTIVE to 4096 MB.
The selected devices: sda2
PS. 下次您可以直接下这样的指令:
/usr/sbin/ocs-sr -q2 -c -j2 -z1p -i 4096 -sfsck -senc -p choose saveparts 2023-08-01-18-img sda2
*****************************************************.
The selected devices: sda2
这个磁盘存在不匹配的 GPT 和 MBR 分割表: /dev/sda
这将会搞混再生龙,使得产生的镜像文件无法使用,或者无法复制磁盘。
你可以使用 gdisk 或者 sgdisk 来修复这个问题。例如,如何你确认 MBR 分割表才是你要的,你可以使用这个指令来将 GPT 的分割表清除,而保留 MBR 分割表:
sudo sgdisk -z /dev/sdx
相反的,若你确认只有 GPT 分区表是你要的,你可以使用这个指令将 MBR 分区表清除,而保留 GPT 分区表:
sudo dd if=/dev/zero of=/dev/sdx bs=512 count=1
//注意// (1) 将/dev/sdx 取代成上述的磁盘名称 (2) 磁盘上的资料有可能会全部丢失,因此请务必小心使用此指令。
请修复此问题然后再启动再生龙。
程序停止!!


所以,我的 win7 所在的盘,有三个分区,
第一个是大概 200m 的 ntfs ,系统保留
第二个是 c 盘,125g ,ntfs
第三个是 d 盘,装软件,120g 左右,ntfs

所以问题转化为,选择 mbr 或者 gpt ,我为此搜索了下。

日志给的两个方法,会导致数据清楚。

1.我用 ventoy 中的 win7 的 iso 镜像进入了安装程序,修复引导失败,说版本不匹配。搞不清楚咋回事。
2.百度了,shift+f10 ,呼唤出命令行,用了 bootrec /fixmbr ,再克隆,还是提示失败
3.ventoy 换微 pe ,用傲梅助手重建 mbr ,再克隆还是失败
4.用 diskgenius 软件,重建 mbr ,再克隆还是失败

当然,你们可能会说,有助手和 dg ,干嘛还用再生龙。直接备份可以吗?

确实是可以的。而且不是这次报错,我都没意识到,原来硬盘同时保留了 mbr 和 gpt 信息。

我推测,可能是我装双系统,中间装过了 win10 ,后来没用这个系统。可能信息残留在我的电脑里面。


我的问题是,如何无损删除硬盘多余的 gpt 信息而保留 mbr 。


我搜索了下,还没敢操作,正在系统备份。

--------------------以下是搜索 chat-gpt 的回答-------------------

对于删除硬盘上多余的 GPT 信息而无损数据的情况,您可以尝试以下方法:

在 Windows 系统平台上,您可以使用"diskpart"命令行工具来删除硬盘上的 GPT 信息。请注意,在进行任何操作之前,请务必备份您的重要数据。

以下是一般步骤:

按下 Win + R 键,打开运行对话框。

输入"diskpart"并按下 Enter 键,打开命令行界面。

在 diskpart 命令行界面中,输入以下命令来列出可用的磁盘:

list disk
根据磁盘的大小和标识选择要操作的磁盘。例如,如果要操作磁盘 1 ,输入以下命令:

select disk 1
输入以下命令来查看磁盘的分区信息:

list partition
确认磁盘上的分区信息,并记下每个分区的编号。

输入以下命令来选择要删除的分区。例如,如果要删除分区 1 ,输入以下命令:

select partition 1
输入以下命令来删除选定的分区:

delete partition override
请注意,"override"参数是必需的,它将强制删除分区而不会提示确认。

重复步骤 7 和步骤 8 ,删除其他多余的分区。

删除所有多余的分区后,输入以下命令来将磁盘转换为 MBR 分区表:

convert mbr
输入以下命令来退出 diskpart:

exit
请注意,虽然这些步骤通常不会导致数据丢失,但由于操作错误或其他因素,仍然存在数据丢失的风险。因此,在进行任何操作之前,请务必备份重要的数据。

如果您对使用 diskpart 工具进行操作不太熟悉,或者遇到了困难,建议咨询专业技术人员以获取更详细的指导。

-------------------------------------------------------
另外,不清楚,硬盘前面那个 200m 的分区到底是什么,为什么是 ntfs 的格式?
742 次点击
所在节点    云修电脑
6 条回复
balduncle
284 天前
使用 DiskGenius 和傲梅助手( AOMEI Partition Assistant )这两个工具,您可以进行以下操作:

修复分区表不匹配问题( MBR 与 GPT 不匹配):

打开 DiskGenius 工具。
选择您的硬盘,并在菜单栏中选择"分区表" > "修复分区表"。
在弹出的对话框中,选择修复分区表类型为 MBR 或 GPT ,具体根据您的需求选择。
点击"确定"开始修复分区表。
删除多余的 GPT 信息:

打开傲梅助手( AOMEI Partition Assistant )工具。
选择您的硬盘,并在工具栏中选择"转换" > "转换为 MBR 磁盘"。
在弹出的对话框中,选择"是"来确认转换为 MBR 分区表。
点击"确定"开始转换。
请注意,在进行任何操作之前,请务必备份您的重要数据。这些操作涉及到对硬盘分区表的修改,存在数据丢失的风险。

此外,具体操作步骤可能会因工具版本的不同而略有差异。建议在使用这些工具时参考它们的官方文档或在线帮助,以确保正确操作和避免意外情况的发生。

如果您对使用这些工具不太熟悉,或者遇到了困难,建议咨询这些工具的官方支持或专业技术人员以获取更详细的指导。
----------------------------
备份好,我就尝试下。
balduncle
283 天前
尝试了很多次,最后成功了。再生龙可以识别,克隆了。当然,我在这些操作之前,也是用 diskgenius 软件备份过,而且有压缩。

步骤是
1.用 dg 软件,将本来是 mbr (据说残留了 gpt 信息)的硬盘转为 gpt
2.再转化为 mbr
3.启动,系统启动失败
4.再用 dg 把之前保存好的 mbr 分区表恢复回去
5.成功。
balduncle
281 天前
最后我其实重新安装了。
busier
273 天前
简单的问题搞这复杂!

引导进任意 Linux Live ,使用 gdisk /dev/sdX 操作
这种情况叫 Hybird 混合分区表,同时有 MBR 和 GPT ,并且两个分区表内的分区记录指向硬盘同样的区块!
这样的话,进 gdisk /dev/sdX 他会提示
MBR: hybrid
......中间无关的忽略......
GPT: present
Found valid GPT with hybrid MBR; using GPT.

进入 gdisk 后,用 x 命令切到扩展功能,然后用 n 命令创建新的 MBR protective 保护分区记录(即覆盖掉 MBR hybrid )。
然后 w 保持退出,y 确认就完事了!
此时分区表就只有 GPT 分区表和 MBR 保护记录(防止不认识 GPT 的古董分区软件识别成未分区)。

此时在 gdisk 查看分区表就是
MBR: protective
......中间无关的忽略......
GPT: present
Found valid GPT with protective MBR; using GPT.
busier
273 天前
上述方法是删除 MBR ,保留 GPT

如果想保留 MBR ,删除 GPT 的话,可以用 parted 操作

先进入 parted
用 unit s 命令,将分区起始结束显示单位切换成“块”
用 print 命令显示所有分区,并记录所有分区开始的块和分区结束的块
用 delete 删除所有分区
用 mklabel msdos 命令新建空 MBR 分区表
用 mkpart 新建分区,分区的起始和结束与之前的记录一致,就可以保证所有分区和数据都能正常访问了!

不能再 Windows 中如此操作,因为 Linux 的分区工具,fdisk/parted 之类等,删除分区的时候,没有擦除分区 magic 标记,所以在相同位置重建分区后,分区内的文件系统依然可以正常识别使用!而 Windows 自带工具,例如 diskpart ,以及第三方工具,删除分区的时候会擦除文件系统 magic 标记,即使在相同位置重建分区,也会变成未格式化!

最后记得设置 MBR 的活动分区和修复引导就可以了!
受到 MBR 限制,不能超过 4 个分区!
balduncle
266 天前
@busier 我说的重新安装,是说用 u 盘重新安装 windows ,目的不是真的要重新系统,而是要系统重新部署引导分区。正好,我自己本身那块系统盘的 ssd 的 4k 也没对齐。于是,我把全盘按照分区备份。然后重新安装了系统。再按分区到分区,将数据恢复回去,最后修复 win7 引导。这样就恢复了 gpt 分区,然后也数据什么也都还在。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961630

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX