如何在 Ubuntu 中重新创建已擦除的 /boot 文件系统

如何在 Ubuntu 中重新创建已擦除的 /boot 文件系统

我意外地覆盖了正在运行的 Ubuntu 主机上的 /boot 文件系统,其中根 fs 和交换是 LV,而内核、initramfs 等位于 /boot 下,而 grub 模块和配置位于 /boot/grub 下。

如何重新创建成功启动所需的所有文件?

# mkfs.ext2 /dev/sda1
# mount /dev/sda1 /boot
# apt-get install --reinstall linux-image-`uname -r` linux-image memtest86+
# mkdir /boot/grub
# grub-install /dev/sda

似乎已经重建了大部分内容,但这够了吗?如果没有保证可以完成,我不想冒险重启。

对于偏执的人来说,这也可能是创建闪存驱动器上备份启动分区的一种方法,例如,如果您的启动分区没有镜像但根分区有镜像的话。

答案1

如果您有一个可运行的系统,您可以跳过第 1 到第 5 部分。

  1. 启动与您正在使用的版本相匹配的 Ubuntu live-cd。

  2. 安装您的正常系统分区。X 是驱动器号。Y 是分区号:
    sudo mount /dev/sdXY /mnt

  3. 仅当您具有单独的启动分区(其中 sdYY 是 /boot 分区名称)时:
    sudo mount /dev/sdYY /mnt/boot

  4. 挂载关键的虚拟文件系统。
    for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done

  5. Chroot 进入你的正常系统设备:
    sudo chroot /mnt

  6. 重新安装 GRUB 2(用 sda、sdb 等替换正确的设备。不要指定分区号):
    grub-install --recheck /dev/sdX

  7. 安装 ubuntu 内核(需要网络)
    apt-get install --reinstall linux-image-$(uname -r)

  8. 重新创建 GRUB 2 菜单文件 (grub.cfg)
    update-grub

  9. 退出 chroot:
    CTRL-D在键盘上
    sudo reboot

https://help.ubuntu.com/community/Grub2/Installing#via_ChRoot
在 Ubuntu 10.04 上重新安装最新的 Linux 内核

答案2

我建议使用您所做的那些良好备份并恢复它们。

如果没有备份(错误的答案)...最简单的方法可能是重新安装。

如果您没有破坏文件系统元数据,即使在重新启动后,您也可以进入并使用 Linux 救援模式启动来获取信息。您的过程看起来没问题,但我无法保证,您是否将生成的 /boot 文件的内容与另一个正在运行的系统进行了比较?这可能很有趣,以确保您拥有一切。

相关内容