(2022-11-11更新)速记MBR硬盘,BIOS安装的Win7,EFI安装Ubuntu后如何引导双系统

11-11计划用grub2引导

继续用virtualbox做实验
由于EFI启动太快直机进ubuntu开机菜单了
所以要重启
电脑按ctrl+alt+del会唤起windows的菜单
所以要virtualbox的热键菜单
但是发完鼠标点进去也来不及
所以用快捷键,Host键(如右ctrl)+Del,然后我Ryzen2600X现在是用esc的
这样就切进efi的设置菜单了

在efi菜单里也没认到我往分区里放的windows的efi引导(win7没有,我是用pe的)
看来bios和efi混装 只能用bios启动两个系统了

BIOS装win7
然后efi启动装ubuntu
然后ubuntu怎么update-grub都找不到windows


切回bios启动就是上图 启动不了
……其实 是不是切回bios 去ubuntu用 update-grub装一次 也就ok了?
我之前还切pe装 grub4dos grub2装了还不会用
好吧 笔记本之前可以在bios切回wepe 虚拟机里不行 进grub(第一版本吧)了 那我进ubuntu然后update-grub也可以的吧

使用Ubuntu live CD安装Grub - Jason Sun - 博客园
根据这边的命令,我在livecd上把grub2安装到了bios的主分区引导
重启以后确实是进了grub2,只是没能正确引导系统
我可能还是要学学livecd上安装grub2正确的参数是哪个

用老一套 linux (vmlinuz root=dev/sda) initrd boot命令 启动进ubuntu
重新登进去以后再sudo update-grub就搞定了


之前update-grub的只有linux内核,以及UEFI Shell的
这下没有UEFI Shell了,但是找到了win7


结果重启完还是这
说明MBR的引导不对 刚才update-grub更新的是分区的引导的样子

噢 我不能照着网页写的 用 --root-directory参数了 虽然grub-install没报错 但是grub-install --help里没这个参数 应该用 --boot-directory 而且 命令执行完 可以去 boot目录看一眼 有没有装错地方
刚发现自己一开始执行命令好像装成了 boot/boot/grub 也是一个错误
现在成功启动进grub2 然后启动进win7了


前言

本文没有图,截图不方便,虚拟机复现可以但是不想开
本以为折腾实在不行了,用BIOS启动重装一次Ubuntu

环境

MBR硬盘

EFI Win7 拓展分区 Swap EFI by Ubuntu Ubuntu
FAT32 NTFS / / FAT32 ext4

Win7 在BIOS模式下安装(未打开EFI/进入BIOS模式PE)
第一个EFI是安装Win7时强行删除第一个分区空出来的
第二个EFI是安装Ubuntu(18.04,20.04等等)时分区出来的(打开EFI/进入UEFI模式PE)

问题

装好Ubuntu后,sudo update-grub找不到Windows

思路

调试了各种方法
最后思路考虑了两种

  1. MBR做引导两个系统
  2. EFI做引导两个系统

EFI引导

尝试了很多方式,都不成功:

  • Ubuntu下做boot-repair(没有自行敲命令,嫌麻烦,没记住)
  • WePE下用BOOTICE、Windows引导修复等配置UEFI引导
  • 根据搜索到的资料,在PE下用Win8/10内核的bcdboot.exe d:\windows /s c: /l zh-CN /f UEFI方式往EFI分区安装efi文件
  • PE用BOOTICE修改MBR 主引导为grub2(其实安装好Ubuntu之后引导已经是grub2了;但是是不是EFI不是很确定,我修改主引导后反而造成了Ubuntu的grub2找不到,两个系统都不能引导)

另外,MBR硬盘格式没有ESP分区,EFI分区有,但是设置分区属性后,PE会把它隐藏。没研究过是机制还是什么

BIOS引导

在各种摸索中逐渐有了一个意识,就是我在EFI引导修改主引导记录为grub2之后,MBR硬盘的引导从跳往第二个EFI分区被我改成第一个EFI分区了,一直提示找不到/boot/gurb/grub.cfg;当我随便放一个空文件的grub.cfg后又提示找不到/boot/grub/modules/i386-pc.img之类的东西(记不住名字)

加上我对grub2不那么熟悉,以前只折腾过win7 MBR 安装Ubuntu,那时候用的是EasyBCD的软件,所以写过menu.lst,(我才意识到是grub/grub4dos的脚本文件)

所以进PE、创建第一个EFI分区并取消隐藏,转安装主分区引导为grub4dos;重启提示找不到 menu.lst和grldr,就去官网下载了 0.46a版本(相比0.45c支持ext2启动还是什么的);然后拷贝了压缩包里几乎所有文件(压缩包/samples/目录下的default和config.sys可以保存之前使用过的引导),根据samples下的menu.lst修改菜单条目,成功引导Ubuntu。

posted @ 2022-11-01 03:38  ItsShowTime  阅读(446)  评论(3编辑  收藏  举报