gpart 引导代码错误后如何修复我的分区?

gpart 引导代码错误后如何修复我的分区?

我试图让我的硬盘可启动并且做了

gpart bootcode -b /boot/pmbr -p /boot/gptboot -i1 ada0s1

现在我在启动时收到“无效分区”消息。

/boot来自 USB 驱动器,而不是来自 HDD(即ada0s1)。

这种情况下可以恢复分区吗?


# gpart show /dev/ada0s1
=>      0   976770081  ada0s1    BSD   (466G)
        0          16            - free -   (8.0K)
       16   959992849       1    freebsd-ufs  (458G)
959992865    17777216       2    freebsd-swap   (8.0G)

# fsck /dev/ada0s1
** /dev/ada0s1
Cannot find file system superblock
# fsck /dev/ada0s1a
** /dev/ada0s1a
Cannot find file system superblock
# fsck /dev/ada0s1a

尝试猜测超级块没有帮助

newfs -N /dev/ada0s1a
192, 1282432...

然后

fsck_ufs -b 192 /dev/ada0s1a
Akternate super block location: 192
** /dev/ada0s1a
192 is not a file system superblock

之前是可以工作的gpart bootcode

答案1

在发生类似错误后,我通过以下步骤成功恢复了分区上的大部分数据:

  1. dd使用或testdisk( image.dd)从损坏的分区创建文件
  2. dd if=image.dd of=ffs.dd bs=1024 count=204800
  3. newfs ffs.dd
  4. mdconfig image.dd
  5. dd if=ffs.dd of=/dev/md0 bs=512 count=140
  6. newfs -N /dev/md0(写入完成备份超级块 192、1282368 等)
  7. fsck_ffs -b 192 /dev/md0(如果这个超级块失败,请尝试另一个超级块)
  8. fsck_ffs /dev/md0

然后您就可以访问恢复的文件。小心操作,因为其中一些已损坏。

相关内容