【已解决】旧 MBR 硬盘安装 Ubuntu 19.10 使用 UEFI 后,如何添加原本已有的 Win8 ?主板启动菜单可进入 grub 。

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
头像
yq-ysy
论坛版主
帖子: 4466
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

【已解决】旧 MBR 硬盘安装 Ubuntu 19.10 使用 UEFI 后,如何添加原本已有的 Win8 ?主板启动菜单可进入 grub 。

#1

帖子 yq-ysy » 2019-10-28 12:14

老旧硬盘,原本安装有 UbuntuStudio 18.04 后来升级到 19.04,当时是用 Grub 引导的 win81 双系统,所以硬盘仍是 MBR 模式(没有使用 GPT 模式)。
想升级到19.10却升级不了,所以只能用 U 盘手工安装 UbuntuStudio 19.10,仅仅格式化了 Ubuntu Linux 分区内容,全新安装。保留 win81 分区不动。
安装过程中提示要添加 EFI 分区,于是就添加了。
安装完成后,看上去 UbuntuStudio 应该是通过 UEFI 启动的,出现 Ubuntu 的 Logo 和转圈进度“按 Ctrl C 可以取消正在进行的所有文件系统检查”的提示。
主板 BIOS 的 UEFI Boot 也是选择“启用”了的,奇怪的是,如果我改为“关闭”,依然是出现 Ubuntu“按 Ctrl C 可以取消……检查”的提示,不理解。

启动后 UbuntuStudio 运行正常,看到 /boot/efi/EFI/ 下有 BOOT 目录和 ubuntu 目录,win81 的分区也还在,心想 win81 应该可以启动起来吧?
于是试着添加一个 win81 目录,然后把 windows\boot目录下的 bootmgfw.efi 文件拷贝到 /boot/efi/EFI/win81/ 目录下,并改名为 bootx64.efi 。
但重新启动依然没有找到 win81,按F7调用启动主板菜单,有三个选项,两个Ubuntu,最后一个显示的是“硬盘型号”。
如果选择最后一个“硬盘型号”启动,可以看到Grub提示信息,
不幸的是,提示:error file: /boot/grub/i386-pc/normal.mod not found. 以及 Grub Rescue > 救援模式的命令提示符,无法正常进入任何一个系统。

默认的 UbuntuStudio 运行正常,使用 sudo update-grub 和 sudo grub-install /dev/sda 修复无效,依然找不到 win81,
其中,运行 update-grub 时也没有出现 windows 系统的提示,运行 grub-install 显示成功,无错误。但实际什么都没生效,依然error file… not found.
查看磁盘信息,Linux 分区是 sda8,win81 分区是 sda1。
活动分区是 efi 分区也就是 /boot/efi 目录(安装时我选择它是主分区,难道应该选择逻辑分区?)。

有经验的朋友指导一下,应该如何才能启动 win81 ?
UbuntuStudio 19.10 窗口管理器是Xfce4这个应该和启动的问题没什么大关系吧?
谢谢。

上述问题已解决,过程如下:
因为磁盘还有空余空间,后来又安装了 Ubuntu 19.10 desktop 版,然后启动电脑依然是直接进入之前的 UbuntuStudio 19.10 ,看不到 Ubuntu 19.10 desktop ,/boot/efi/EFI/目录里也没有 Ubuntu 19.10 desktop 。

接着我执行命令 sudo grub-install -v 之后重启电脑,按F7调用主板的启动菜单(你的主板也许是其它按键),选择最后一个“硬盘型号”启动,
可以看到Grub提示信息——正常了!既有我最新安装的两个Ubuntu,也有win81,都能正常进入系统。

现在基本可以判断,grub修复是由新安装的 Ubuntu 19.10 desktop 完成的,因为 grub 菜单默认进入的第一个系统就是 Ubuntu 19.10 desktop 。
也许是因为硬盘仍是 MBR 模式,所以目前还找不到往 UEFI 添加 win81 或其它 Linux 系统的方法。

最近一次(3月3日)更新 Ubuntu 19.10 desktop 后,开机按F7调用主板的启动菜单(你的主板也许是其它按键)选择“硬盘型号”启动,grub 菜单里又一次不见 Windows 选项了。然后根据《怎么在grub2里添加win8.1的启动项?》这篇文章的方法,https://zhidao.baidu.com/question/24045 ... 42804.html

(1)修改一个文件

代码: 全选

sudo vim.tiny /etc/grub.d/40_custom
加上 一段内容

代码: 全选

if [ "${grub_platform}" == "pc" ]; then
menuentry "Microsoft Windows Vista/7/8 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 69B235F6749E84CE
ntldr /bootmgr
}
fi
注意:其中的 msdos1 69B235F6749E84CE 这段代码,可以通过“开始菜单——工具——磁盘管理器”查看Windows所在的分区,其中的UUID就是,如果这个代码不正确,是无法生效的。
硬盘UUID.png
(2)运行

代码: 全选

sudo grub-mkconfig
(3)运行

代码: 全选

sudo update-grub
重启电脑,开机按F7调用主板的启动菜单(你的主板也许是其它按键)选择“硬盘型号”启动,grub 菜单里就可以看到 Windows 选项,并能进入Windows系统了。
(如果以上方法还不行,就试试进入Ubuntu 19.10 desktop 后,先挂载Windows分区,然后再次执行上述两个命令,应该就可以了。)

但 UbuntuStudio 19.10 依然无法在它的启动菜单里出现 Windows 选项,真是郁闷。
testdg
帖子: 8
注册时间: 2019-11-26 5:40

Re: 【已解决】旧 MBR 硬盘安装 Ubuntu 19.10 使用 UEFI 后,如何添加原本已有的 Win8 ?主板启动菜单可进入 grub 。

#2

帖子 testdg » 2019-11-26 6:20

两种方法,一种在grub引导器添加启动菜单直接引导,第二在efi区添加启动文件
回复