我不小心运行了dd if=image.img of=/dev/sda
而不是/dev/sdb
sda 是我的主分区。当我意识到我打错了它时,我立即使用 CTRL+C 停止了该进程,因此它只运行了大约 2 秒。当我重新启动时,我无法启动到任何分区,BIOS 启动菜单上的 UEFI 启动为空。我创建了 Gparted live 的实时映像并运行 a testdisk
,它发现我拥有的 6 个分区中有 4 个,efi 分区位于 sda2 上,现在位于 sda1 上,Windows 部分从 sda4 到 sda2,linux 和 linux 从 sda5 交换以及 sda6 到 sda3 和 sda4。尽管 efi 分区仍然存在,其中包含 EFI 文件夹以及其中的一些条目,但当我运行时efibootmgr
我看不到任何条目,当我在 UEFI 上实时运行 manjaro 时,它说找不到 efi。所以我想做的是能够再次启动到操作系统或至少在Windows上启动(因为我将重新安装Linux并且Windows有一些我想要的文件)。感谢您的帮助,感谢您的时间:)!
答案1
即使是 2 秒,至少磁盘的前 300MB 会被重写。您可能无法正确启动到 MS-Windows,因为您不仅需要 EFI,还需要 MS-Windows 启动管理器。我建议在其他操作系统甚至其他计算机上工作时:下载一些实时 Linux(我更喜欢 CAINE),创建启动 USB 闪存盘(或刻录 DVD)。从 CAINE 启动损坏的计算机,查找需要保存的文件并将它们复制到其他介质(不要忘记解锁目标磁盘以进行写入 - CAINE 非常严格)。
更昂贵的方法是购买一个新的硬盘来安装你的Linux,然后你可以从你损坏的磁盘上挂载一些分区到Linux下。为了轻松使用 NTFS(MS-Windows 默认文件系统),您需要安装一些 Linux 实用程序,例如parted
、gparted
、ntfs-3g
等。
在Linux下,即使MBR/EFI分区表不存在,也可以挂载分区。只需找到分区的开头(例如,通过查找 NTFS 字符串),如果您知道磁盘开头的确切偏移量,则可以通过以下方式挂载它:
mount /dev/sdX /mnt/windows -o ro,loop,offset=xxxx
另一方面,在成功安装 Linux 后,您可以尝试配置 Grub 引导加载程序来识别原始的 MS-Windows 分区并将其添加到其引导列表中。
答案2
首先,制作剩下的图像,如果可能的话,再次复制该图像;那么你至少可以回到你已经遇到的“糟糕但并非绝望”的情况。然后考虑什么是更少的工作,最有可能的是从不受影响的分区中提取数据并安装干净的操作系统(wipefs -a /dev/sda
首先)。
efibootmgr
显示 NVRAM 中存储的内容,另请参阅罗德的书主题(我最喜欢的 UEFI 链接:-)。