更换主板,现在电脑启动到 Grub2 而不是 Windows 10

更换主板,现在电脑启动到 Grub2 而不是 Windows 10

所以我将 LGA 775 设置的主板升级为华硕 P5E。我的主硬盘上安装了 Windows 10 和 Ubuntu 14.something。使用旧主板时,计算机默认直接启动到 Windows 10。但是,使用这个新主板时,计算机启动到 Grub2,无法从那里启动到 Ubuntu(它停止闪烁_我可以在 Grub2 中看到“Windows 10”,但如果我尝试加载它,它不会启动到 Windows 10,而是出现错误:

错误:没有这样的设备:CEC8392CC83913E5
将分区类型设置为 0x83
错误:无效签名

按任意键继续...

并返回到 Grub2。

我应该怎么做才能再次启动 Windows 10?


通过启动 Ubuntu 的恢复模式,然后更新 Grub2,设法修复 Ubuntu 的启动问题。

所以现在我可以启动到 Ubuntu(计算机仍然默认启动到 Grub2)。但是,更新 Grub2 也导致 Windows 10 选项消失 :/

答案1

您可能需要使用实时发行版重新安装 grub2,这将很有用https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows

该问题可能是由于 MB 上的新控制器为磁盘分配了与旧控制器不同的标签,而 grub(使用静态表进行启动)因此而“感到困惑”。

如果自动化系统没有读取 Windows 分区,您可以随时通过“终端方式”进行读取。

首先确保已安装所有分区,甚至是 Windows 分区。

生成一个 fstab 文件(分别使用 -U 或 -L 通过 UUID 或标签定义):

# genfstab -U /mnt >> /mnt/etc/fstab

您可能有一个 MBR 分区表,要检查它,您可以使用:

# parted /dev/sdx print

对于 MBR 分区磁盘,你只需要运行

# grub-install --target=i386-pc /dev/sdx
# grub-mkconfig -o /boot/grub/grub.cfg

将 grub2 安装到 /dev/sdx 磁盘(用 sdx 替换实际分区)。

如果这仍然不起作用,您将必须编写自定义的 /boot/grub/grub.cfg 文件。

为此,您需要 Windows 分区的 UUID(/SYSTEM_RESERVED 分区,而不是 C:\ 驱动器)。假设 Windows 引导加载程序的挂载点是 /media/SYSTEM_RESERVED/bootmgr,您可以:

# grub-probe --target=fs_uuid /media/SYSTEM_RESERVED/bootmgr

获取该分区的 uuid

那么您必须修改文件 /etc/grub.d/40_custom,添加以下行:

if [ "${grub_platform}" == "pc" ]; then
  menuentry "Microsoft Windows Vista/7/8/8.1 BIOS-MBR" {
    insmod part_msdos
    insmod ntfs
    insmod search_fs_uuid
    insmod ntldr
    search --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 "UUID"
    ntldr /bootmgr
  }
fi

将“UUID”替换为您分区的实际 uuid,然后重新运行 grub-mkconfig 命令,如上所述。

这可能会帮助您修改 grub 配置:

https://wiki.archlinux.org/index.php/GRUB#Windows_installed_in_UEFI-GPT_Mode_menu_entry

如果您想使用 Windows 引导加载程序,则在启动 Windows 时只需运行启动修复工具即可。

相关内容