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

2023-08-01 20:21:39 +08:00
 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 的格式?
1002 次点击
所在节点    云修电脑
6 条回复
balduncle
2023-08-01 20:34:49 +08:00
使用 DiskGenius 和傲梅助手( AOMEI Partition Assistant )这两个工具,您可以进行以下操作:

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

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

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

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

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

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

引导进任意 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
2023-08-12 09:14:59 +08:00
上述方法是删除 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
2023-08-19 10:24:11 +08:00
@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