问题现象
如何重新激活 Linux 加载程序 GRUB、GRUB 2 和 LILO
解决方法
重新激活GRUB
- 从Linux安装光盘启动并进入救援模式
- 挂载所有分区,并将root从临时root改为已安装系统的root分区
#mkdir /mnt/tmp #mount /dev/sdXY /mnt/tmp (/dev/sdXY是root分区) #chroot /mnt/tmp - 生成 /etc/mtab
#grep -v rootfs /proc/mounts > /etc/mtab - 检查一下 GRUB 配置文件是否正确:GRUB 根据你使用的发行版,会将配置存储在 /boot/grub/grub.conf 或 /boot/grub/menu.lst 中
- 自动重新激活GRUB
执行以下命令#grub-install /dev/[device name]
其中 /dev/[device name] 是你要安装 GRUB 的磁盘或分区名称,例如,以下命令将 GRUB 安装到MBR磁盘 /dev/sda#grub-install /dev/sda - 如果步骤5失败,请手动重新激活GRUB
#/sbin/grub
你将收到一个提示
你将看到输出grub> Please issue the commands (在这个例子中4是root分区): grub>root (hd0,4) grub> setup (hd0)Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/reiserfs_stage1_5" exists... yes Running "embed /boot/grub/reiserfs_stage1_5 (hd0)"... 18 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+18 p (hd0,4)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done. grub> - 重启
重新激活GRUB 2
如果使用 Acronis 软件恢复 Linux 分区,其 UUID 会发生变化,导致 GRUB 2 无法启动操作系统并出现错误,例如:Error: invalid arch independent ELF magic
在这种情况下,需要重新安装 GRUB 2
- 启动Live CD,例如Ubuntu Live CD
- 从桌面打开终端:应用程序 -> 附件 -> 终端
- 确定你的常规系统分区
sudo fdisk -l - 如果不确定,执行以下命令,查找正确的磁盘大小和ext3或ext4格式
df -Th - 挂载你的普通系统分区
sudo mount /dev/sdXY /mnt - 如果你不确定挂载了正确的分区,挂载后运行以下命令检查分区
ls /mnt
如果是正确的分区,你应该会看到正常的Linux文件夹,比如/bin、/boot、/etc、/home等
示例sudo mount /dev/sda1 /mnt
注意:挂载分区通常是安装Linux的分区:SDA1、SDB5等。如果你有单独的 /boot 分区,使用该分区所在的设备。Grub 2 在安装在 BIOS 启动的驱动器的主板(MBR)中效果最佳。还要记住,你在这一步挂载了分区(包括编号),但之后执行“sudo grub-install”命令时不会包含分区号。GRUB 2 将第一个驱动器(X)计为“0”,但第一个分区(Y)为“1”。
只有当你有独立的启动分区时才会这样做sudo mount /dev/sdXY /mnt/boot
其中 sdXY 是你的 /boot 分区编号 - 重装GRUB 2
sudo grub-install --root-directory=/mnt /dev/sdX
不要包含分区号,例如sudo grub-install --root-directory=/mnt /dev/sda
注意:替换安装Ubuntu的设备——SDA、SDB等。不要指定分区号 - 卸载分区
sudo umount /mnt - 如果你挂载了一个单独的 /boot 分区,先卸载它
sudo umount /mnt/boot - 重启
重新激活LILO
- 从Linux安装光盘启动并进入救援模式
- 挂载所有分区,并将root从临时root改为已安装系统的root分区
#mkdir /mnt/tmp #mount /dev/sdXY /mnt/tmp (/dev/sdXY是root分区) #chroot /mnt/tmp - 执行以下命令重新激活LILO
#/sbin/lilo - 重启
更多信息
原文链接:https://care.acronis.com/s/article/Reactivating-Linux-Loaders-GRUB-GRUB-2-LILO?language=en_US