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