我使用 debian 9。由于某种原因,我所在的分区/boot
损坏了,e2fsck
报告了许多错误。不知怎的,我仍然能够启动进入紧急模式。我可以格式化该分区。如何再次在那里写入所需的所有内容(grub、内核等)?
答案1
运气好的话,里面的所有内容/boot
都可以轻松自动复制。
- 启动进入救援模式。
- 卸载/boot(如果已安装 - 有可能无法安装。命令是
umount /boot
:) - 修复你的
/boot
文件系统。如果是 ext2-3-4,则命令:e2fsck -f -y -C0 /dev/your-boot-partition
。这些是非常具有攻击性、强制破坏性的标志,但您不必非常小心其中的数据 - 所有这些都可以自动重现。而且,如果它运行没有问题,您可以确定您的/boot
文件系统最终会正常。 - 如果 e2fsck 输出没有显示任何糟糕的信息(P > 90%),那么您的 /boot 可能已经修复,您可以重新启动。但如果没有,那么您的系统可能无法启动。
- 重新挂载分区(
mount /boot
) - 检查哪些软件包将任何内容安装到
/boot
.这可以通过命令来完成dpkg -S /boot
。就我而言,结果是这样的:
# dpkg -S /boot
linux-image-4.4.0-38-lowlatency, memtest86+, grub2-theme-mint, memtest86, linux-image-4.4.0-38-generic, base-files: /boot
然后,您只需通过命令重新安装这些软件包即可
apt-get --reinstall install linux-image-4.4.0-38-lowlatency memtest86+ grub2-theme-mint memtest86 linux-image-4.4.0-38-generic base-files
那里还有各种引导和配置文件,但这些包的(重新)安装脚本将自动重新构建它们。
这应该足够了,但是如果您想非常非常确定,您还可以使用以下命令再次手动重新生成引导文件
update-grub
...然后将 grub 重新安装到 MBR
grub-install /dev/your-boot-disk (most probably /dev/sda)
在不太可能出现问题并且系统无法启动的情况下,您可以从救援 CD/随身碟执行几乎相同的步骤。详细信息在这回答。
e2fsck
扩展名:毕竟,您可以检查in恢复的文件/boot/lost+found
。您不需要它们,因为它们中的所有数据都已复制。为了节省(通常是小的)启动分区的空间,您可以删除它们。