使用 gpart 意外删除启动分区

使用 gpart 意外删除启动分区

我刚刚输入

gpart delete -i 1 ada0

当我应该写的时候

gpart delete -i 1 ada1

不幸的是,reboot在我注意到我的错误之前就打字了。磁盘 ada0 具有默认的 GPT 布局,FreeBSD 10.1 安装程序将其置于默认分区选项中。

显然,系统现在不会重新启动,那么有没有办法将分区添加回来呢?恢复机器最快的方法是什么?我不想完全重新安装,因为系统有大量自定义更改,这将需要大量时间来重做。

答案1

以下应该有效。下载 FreeBSD 安装盘并将其引导至单用户模式。完成后执行以下操作:

gpart show ada0

它应该打印描述磁盘布局的文本。结果如下:

=>       34  500118125  ada0  GPT  (238G)
         34       1024     1  - free -  (512K)
       1058  490732544     2  freebsd-ufs  (234G)
  490733602    8388608     3  freebsd-swap  (4.0G)
  499122210     995949        - free -  (486M)

现在您可以通过发出 来备份 GPT 进行编辑gpart backup ada0,这应该会给出类似的内容(因为您删除了分区 1):

GPT 128
2    freebsd-ufs      1058 490732544  
3   freebsd-swap 490733602   8388608

将输出复制到文件并像这样编辑它(freebsd-boot 后面的数字是来自 的可用空间的数字gpart show ada0):

GPT 128
1   freebsd-boot        34      1024  
2    freebsd-ufs      1058 490732544  
3   freebsd-swap 490733602   8388608

如果您已将上述内容存储到名为 的文件中newgpt,则以下操作会将 GPT 恢复到允许启动的状态:

gpart restore -F ada0 < newgpt
gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 ada0

最后一个命令应该是多余的,因为引导代码在磁盘上应该是完整的,但由于我没有可以破坏的系统来测试它,所以我将它放在那里以防万一。

相关内容