无法修复 GRUB

无法修复 GRUB

我正在尝试在安装 Windows 7 后修复我的 GRUB。

我有64 位和 32 位实时 Ubuntu CD +超级 Grub 磁盘 (Rescatux)+启动修复磁盘。 我正在跟进这个答案的步骤。但在第 6 步我得到了

/usr/sbin/grub-probe: error while loading shared libraries: libdevmapper.so.1.02.1: wrong ELF class: ELFCLASS32update-grub执行命令后。

然后我尝试使用启动修复. 首次尝试建议修复并且成功完成,但当我重新启动时没有启动菜单。然后下次我在启动时按住左 Shift。它仍然自动启动 Windows。

然后我尝试使用高级修复。结果相同。这是我的 Boot-Repair 日志:http://paste.ubuntu.com/936178/

我需要针对我的系统的具体答案。谢谢。

笔记 :

我安装的 Ubuntu 系统是 64 位的,我有 64 位和 32 位 Live CD

笔记2

(使用 32 位 Live CD 启动后)(查看64 位 Live CD 结果注释 3

file /lib/libdevmapper.so.1.02.1->/lib/libdevmapper.so.1.02.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

file /usr/sbin/grub-probe->/usr/sbin/grub-probe: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

ubuntu@ubuntu:~$ sudo mkdir /mnt/ubusda3
ubuntu@ubuntu:~$ sudo mount -t ext4 /dev/sda3 /mnt/ubusda3
ubuntu@ubuntu:~$ file /mnt/ubusda3/sbin/init
/mnt/ubusda3/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

注 3

(使用 64 位 Live CD 启动后)

file /lib/libdevmapper.so.1.02.1->/lib/libdevmapper.so.1.02.1: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

file /usr/sbin/grub-probe->/usr/sbin/grub-probe: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

ubuntu@ubuntu:~$ sudo su
root@ubuntu:/home/ubuntu# mkdir /mnt/ubusda3
root@ubuntu:/home/ubuntu# mount -t ext4 /dev/sda3 /mnt/ubusda3
root@ubuntu:/home/ubuntu# file /mnt/ubusda3/sbin/init
/mnt/ubusda3/sbin/init: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
root@ubuntu:/home/ubuntu# file /mnt/ubusda3/lib/libdevmapper.so.1.02.1
/mnt/ubusda3/lib/libdevmapper.so.1.02.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped

答案1

可恶!

我终于在 VirtualBox 虚拟机中安装了多个 Ubuntu 版本和 Windows 7,这样我就可以尝试修复工具了。结果发现我最初的建议是错误的,并没有像我想象的那样发挥作用。:-(

所以...重新开始...

虽然我打算用虚拟机进行更多的实验,以了解更多关于各种工具的信息,比如启动修复工具或使用 Live CD 并chroot重新安装 GRUB,我想我现在可以提供的最便捷的方法就是勾勒出一种允许从 Windows 启动到 GRUB 菜单的方法。

我并不是建议将此作为“最终”解决方案。但它至少应该能够再次启动 Ubuntu 分区,我认为这也提供了其他修复选项。

此外,在 VM 上尝试过后,我相信这应该可以工作。(心里祈祷着……)

使用 EasyBCD 2.1.2 从 Windows 启动菜单启动到 GRUB

  1. 启动 Windows。然后打开EasyBCD 2.1.2 页面在浏览器中并使用免费下载,仅限非商业用途链接下载并安装 EasyBCD。
    笔记:此链接位于立即购买按钮。
    当他们提示输入姓名和电子邮件时,您不是需要输入它们才能进行下载。
  2. 打开EasyBCD程序并选择添加新条目从左侧边栏。
  3. 选择最右边的标签,NeoGrub, 在下面 ”操作系统"并点击Install按钮。
    笔记: 这会将 NeoGrub 引导加载程序代码添加到您的C:\目录中。如果安装正确,您
    应该会看到该文件NeoGrub和目录。NSTC:\
  4. 选择Linux/BSD选项卡。选择您的安装使用的 GRUB 类型(例如 GRUB 2),并且可以选择编辑您要添加到 Windows 启动菜单的条目的名称。
  5. 单击Add Entry按钮可将启动 Linux(GRUB 菜单)的条目添加到 Windows 启动菜单中。
  6. 选择编辑启动菜单从侧边栏查看您的更改。
    笔记:您可以删除NeoGrub 引导加载程序如果您愿意的话。
    它是在您在步骤 (3) 安装 NeoGrub Bootloader 时添加的。您需要 bootloader,但不需要它的启动菜单条目。您只需要在步骤 (5) 中添加的条目。
  7. 保存更改并重新启动。当 Windows 启动菜单出现时,选择您添加的用于启动 Linux 的条目。稍等片刻后,GNU GRUB 启动菜单就会出现。

答案2

启动 Live CD 并尝试这些命令(仅当您已安装 Ubuntu 时)。这是针对 Grub2 的。

您需要找到包含 ubuntu 的分区并替换 /dev/sdAX。可以使用以下命令完成此操作sudo fdisk -l- 然后选择分区“Linux”

sudo su
mkdir /mnt/root
mount -t ext4 /dev/sdAX /mnt/root
mount -t proc none /mnt/root/proc
mount -o bind /dev /mnt/root/dev
mount -o bind /sys /mnt/root/sys
chroot /mnt/root /bin/bash
sudo grub-install /dev/sda
sudo update-grub

相关内容