为双系统 Ubuntu grub启动项中添加Windows启动项
文章标签: ubuntu
电脑先安装了win11,后安装了ubuntu22的双系统,两块固态硬盘,两个系统各自使用自己的硬盘分区,(选择的全盘安装在新硬盘,没有自定义分区,所以安装的时候也没有提示与当前windows系统共存)。当安装完ubuntu之后,发现启动项只有ubuntu,没有找到win11启动引导,查看grub配置文件也没有找到windows选项。
由于两块硬盘互不干扰,所以grub在扫描硬盘引导的时候(当前硬盘全新)是找不到另一块硬盘的引导文件的,所以我们要手动把另一块硬盘的启动引导加入进来。
sudo /etc/default/grub#默认启动哪个系统(后面加入win引导可以修改为对应序号)
GRUB_DEFAULT=0
#菜单显示
GRUB_TIMEOUT_STYLE=hidden
#隐藏改成菜单:
GRUB_TIMEOUT_STYLE=menu
#停留时间
GRUB_TIMEOUT=0
#0改成5,停留5秒,可以选择系统
GRUB_TIMEOUT=5
#保存,继续执行:
sudo update-grub
重启电脑,BIOS第一启动项改为Ubuntu,会发现启动菜单已经可以看到了。
终端依次执行下面命令
sudo grub-install /dev/sda
sudo chmod -x /etc/grub.d/30_os-prober
#编辑自定义菜单
sudo vim /etc/grub.d/40_custom在打开的40_custom文件中输入如下一段内容:
menuentry 'Microsoft Windows 10' {
insmod part_gpt
insmod chain
insmod ntfs
set root='(hd1,gpt1)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
终端继续执行 :
sudo update-grub重启后,win11选项就出现在grub菜单中了。
但是。选择win11后,系统提示:error: disk 'hd0,gpt1' not found
这是hd0,gpt1这块硬盘不存在,所以需要知道我的win11到底装在哪块盘上,或者说盘的名字是什么?
进入Grub启动菜单后,键入c,进入Grub命令行界面
用ls命令,查看硬盘和分区信息,找到Windows系统的启动分区
grub> ls -l 找到盘符为win11的硬盘是hd0,msdos1,按esc返回grub菜单,选择win11,键入e,进行编辑
set root='(hd1,msdos1)'
最后按F10启动,可以进入win11。但是再次启动还是硬盘不对,说明在grub下编辑是临时的,进入ubuntu,再次编辑40_custom文件,将硬盘改正sudo update-grub更新菜单。重启就可以进入win11了
设置win11为默认系统:
再次编辑/etc/default/grub文件,将GRUB_DEFAULT=0 改为3,因为我的win11在菜单里是第4条,0是1,3是4,这个梗只有程序员能懂。再次重启,进入默认win11
评论区