V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
balduncle
V2EX  ›  云修电脑

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

  •  
  •   balduncle · 270 天前 · 727 次点击
    这是一个创建于 270 天前的主题,其中的信息可能已经有所发展或是发生改变。
    老笔记本,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 的格式?
    balduncle
        1
    balduncle  
    OP
       270 天前
    使用 DiskGenius 和傲梅助手( AOMEI Partition Assistant )这两个工具,您可以进行以下操作:

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

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

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

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

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

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

    引导进任意 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
        5
    busier  
       260 天前
    上述方法是删除 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
        6
    balduncle  
    OP
       253 天前
    @busier 我说的重新安装,是说用 u 盘重新安装 windows ,目的不是真的要重新系统,而是要系统重新部署引导分区。正好,我自己本身那块系统盘的 ssd 的 4k 也没对齐。于是,我把全盘按照分区备份。然后重新安装了系统。再按分区到分区,将数据恢复回去,最后修复 win7 引导。这样就恢复了 gpt 分区,然后也数据什么也都还在。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3760 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 05:05 · PVG 13:05 · LAX 22:05 · JFK 01:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.