我有一台 2009 年的电脑,现在坏了。我有一个硬盘映像,现在想将其恢复到新电脑上。我设法重新映像了新电脑,但无法让 grub 工作。
grub>
每次启动时它都会停在提示符处。
我如何恢复 grub 以使其不会在grub>
提示符处停止并在新计算机上启动到正常登录屏幕?
Ubuntu 桌面版本是 15.10。
我的 BIOS 的 Boot 菜单中的设置如下:
+---------------------------+
| Boot Mode | UEFI |
| USB Boot | Enabled |
| PXE Boot to LAN | Enabled |
| PXE IPV4 First | Enabled |
+---------------------------+
我的分区如下所示:
/dev/sda8 /usr /dev/sda9 /home /dev/sda10 / /dev/sda11 /usr/本地
分区 1-7 与恢复 Ubuntu 分区之前安装的 Windows 10 相关。
因此,首先安装了 Windows 10,它占用了整个驱动器(1TB)。我将 Windows 分区缩小到~300G,并在剩余空间上创建了 Linux 分区。
我打开电脑,它停在
grub>
然后我按照这里的说明进行操作:如何在 Linux 上修复无法启动的 GRUB 2
首先我挂载 / 分区,设置内核、initrd,然后启动。
grub> set root=(hd0,10) grub> linux /boot/vmlinuz-4.2.0-34-generic root=/dev/sda10 grub> initrd /boot/initrd.img-4.2.0-34-generic grub> boot
这将带我进入 Linux 提示符。
然后我跑
root@lnx-R560>update-grub
Found linux image /boot/vmlinuz-4.2.0-34-generic
Found initrd image /boot/initrd.img-4.2.0-34-generic
[ 279.358637] EXT4-fs (sda2): VFS Can't find ext4 filesystem
[ 279.360540] EXT4-fs (sda2): VFS Can't find ext4 filesystem
[ 279.362423] EXT4-fs (sda2): VFS Can't find ext4 filesystem
[ 279.364298] FAT-fs (sda2): bogus number of reserved sectors
[ 279.396817] FAT-fs (sda2): bogus number of reserved sectors
[ 279.421858] qnx4: No qnx4 file system (no root dir)
[ 279.423659] ufs:You didn't specify the type of tyour file system
[ 279.423659]
[ 279.423659] mount -t ufs -o ufstype=sun|sunx86|44bsd|ufs2|5xbsd|old|hp|nextstep|nextstep-cd|openstep
[ 279.423659]
[ 279.423659] >>>WARNING<<< Wrong ufstype may corrupt your filesystem,default is ufstype=old
[ 279.426405] ufs: ufs_fill_super(): bad magic number
Found Windows Boot Manager on /dev/sda1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot meny entry for EFI firmware configuration
done
sda2 是一个 Windows 分区。
然后我们安装grub
lnx-R540> grub-install /dev/sda
Installing for i386-pc platform
grub-install: warning: the GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: warning: Embedding is not possible.GRUB can only installed in this setup by using blocklists. However blocklists are UNRELIABLE and their use is discouraged.
grub-install: error:will nnot proceed with blocklists
然后我们重新启动。
root@lnx-R540>reboot now
重启后,计算机仍然停留在grub>
提示符处。
我如何恢复 grub 以便它启动到正常登录提示?
答案1
您的某些输出表明 Windows 以 EFI/UEFI 模式安装并使用磁盘上的 GUID 分区表 (GPT)。这意味着您必须为 Linux 安装 EFI 模式引导加载程序。但由于您的原始计算机是 2009 年的,因此它可能是仅限 BIOS 的型号,这意味着磁盘可能使用主引导记录 (MBR) 分区表并安装了 BIOS 模式引导加载程序。这解释了您在使用 和 时遇到的问题update-grub
;grub-install
这些命令根据您拥有的 BIOS 模式 GRUB 包尝试更新和安装 BIOS 模式 GRUB,而它在您的 GPT 磁盘上无法正常工作。即使您在磁盘上创建了 BIOS 引导分区,Linux 的 BIOS 模式引导加载程序也无法正常工作,因为在引导模式之间切换通常很麻烦,有时甚至是不可能的。
Linux 有不少 EFI 模式的引导加载程序,详情请参见我的这个页面。最容易安装的两个可能是:
- GRUB(通过启动修复)- 这启动修复实用程序可以安装 EFI 模式版本的 GRUB 并半自动更新软件包;但是,您必须以 EFI 模式启动计算机执行此操作。通常的做法是使用 Ubuntu 安装程序在“安装前尝试”模式下进行启动;但控制启动模式(EFI/UEFI 与 BIOS/CSM/legacy)可能很棘手,如我的这个页面。确保 EFI 模式启动的另一种方法是使用 rEFInd,如下所述......
- 重新索引- 我的rEFInd 启动管理器以 CD-R 和 USB 闪存驱动器映像以及 Debian 软件包和 PPA 形式提供。如果您从匹配的映像准备 CD-R 或 USB 闪存驱动器,则可以使用它以 EFI 模式启动。然后,您可以安装 Debian 软件包或 PPA 以使用 rEFInd 作为默认操作系统;或者运行 Boot Repair 来安装 GRUB。需要注意的是,我提供的 rEFInd USB 闪存驱动器和 CD-R 映像未设置为支持安全启动,现在安全启动可能处于活动状态,也可能处于非活动状态。如果您无法启动 rEFInd,可能需要至少暂时禁用安全启动。(rEFInd 可以在安全启动处于活动状态时工作,但需要完成一些额外的工作;请参阅rEFInd 关于安全启动的文档了解详情。
请注意,您可能需要在磁盘传输(如您所述)后更新/etc/fstab
文件。听起来您至少可以强制系统启动,因此您的根 ( /
) 文件系统可能配置正确;但您可能需要调整其他内容。特别是,安装EFI 系统分区 (ESP)建议/boot/efi
使用,因为这是 Ubuntu 的默认设置。