Introduction
解决双系统的 Windows 的启动项失踪和grub正常的情况下启动 Windows 系统出现黑屏的问题。
Note:
- 我的系统是
Ubuntu 24.04 LTS desktop
,安装了双系统(先安装 Win ,再安装 Ubuntu)
文章目录
-
- Introduction
- [Stage1: 我看不到任何让我选择系统的界面](#Stage1: 我看不到任何让我选择系统的界面)
- [Stage2: 对 GRUB 的文件的介绍,了解和编辑](#Stage2: 对 GRUB 的文件的介绍,了解和编辑)
-
- [对 GRUB 文件的概要介绍](#对 GRUB 文件的概要介绍)
- [深入了解 GRUB 配置文件并按需编辑](#深入了解 GRUB 配置文件并按需编辑)
- [GRUB 菜单正常,引导启动 Ubuntu 系统正常但是引导启动 Windows 系统却黑屏](#GRUB 菜单正常,引导启动 Ubuntu 系统正常但是引导启动 Windows 系统却黑屏)
- References
Stage1: 我看不到任何让我选择系统的界面
假如你的安装顺序是先安装 Windows ,再安装 Ubuntu(安装时选择了为Windows安装) 的话,你可能很想先重启一下,看能不能正常进入 Windows 系统。
答案很明显,不能,你什么都没有看见,除了大概在左上角闪动了一下光标外,你什么都没有看见。
首先点出一个须知:GRUB(GRand Unified Bootloader)是 Linux 操作系统中广泛使用的一种引导加载程序 。
这里并不需要深究,只需要知道 Ubuntu 是使用 grub(确切来说,现在所用的是 grub2 ) 做引导,如果想要进一步了解的话,可以访问 https://www.pavelhan.tech/2024-06-21-BIOS-UEFI-MBR-GPTGRUB-EFI-Basics 看一看。
既然使用了 GRUB 来引导启动系统,且我们可以直接进入到 Ubuntu,这就说明我们的 GRUB 是正常工作的,为什么看不到 Windows 的启动项呢?答案就是被藏起来或者找不到了。
那么,怎么确定是哪种情况呢?这就要涉及到对 GRUB 的使用了。
Stage2: 对 GRUB 的文件的介绍,了解和编辑
对 GRUB 文件的概要介绍
首先,了解一下 GRUB 有哪些文件,以及它们存放的位置。
-
配置文件:
/etc/default/grub
If you change this file, run 'update-grub ' afterwards to update
/boot/grub/grub.cfg.
For full documentation of the options in this file, see:
info -f grub -n 'Simple configuration' -
可执行文件目录:
/etc/grub.d
All executable files in this directory are processed in shell expansion order.
00_*: Reserved for 00_header.
10_*: Native boot entries.
20_*: Third party apps (e.g. memtest86+).
The number namespace in-between is configurable by system installer and/or
administrator. For example, you can add an entry to boot another OS as
01_otheros, 11_otheros, etc , depending on the position you want it to occupy in
the menu ; and then adjust the default setting via /etc/default/grub. -
自动生成的文件:
/boot/grub/grub.cfg
(避免直接编辑它)It is automatically generated by grub-mkconfig using templates
from /etc/grub.d and settings from /etc/default/grub
很多教程让你直接去改 /boot/grub/grub.cfg
,我想说这是一种偷懒的行为而不是根据实际需要的,因为这个文件是根据我们的配置文件自动生成的,假如说我们需要修改配置文件并使其生效,前面我们直接修改的 /boot/grub/grub.cfg
就会直接失效,导致我们还需要再度直接修改这个文件,这里,或许有人认为很少会去编辑引导加载程序的配置而认为这没有必要折腾。
但个人来看,与其逃避这个问题,不如直接解决它(何况这并不是一个难以解决的或者考虑到实际需求没有必要折腾的问题,至少我个人实践后是这么认为的)。
深入了解 GRUB 配置文件并按需编辑
-
为了解更多信息,可以在终端上运行命令:
bashinfo -f grub -n 'Simple configuration'
-
编辑配置文件
bashvim /etc/default/grub
-
阅读前面的命令打开的手册,但是仅仅关注我们需要的信息
-
GRUB_DEFAULT
- 含义:默认引导的菜单启动项(从0开始)
- 值:数字(默认值为 0 )|菜单启动项的标题|特殊字符串值 'saved'
-
GRUB_TIMEOUT_STYLE
-
含义:GRUB 倒计时样式
-
值: 'menu' or unset | 'countdown' or 'hidden'
-
'menu' or unset
- 设置该值,GRUB 会显示菜单,然后在启动默认启动项前等待 GRUB_TIMEOUT 设计的倒计时,按下一个按键会打断倒计时。
-
'countdown' or 'hidden'
- 设置该值, GRUB 会在显示菜单前等待 GRUB_TIMEOUT 设计的倒计时,
- 如果等待期间按下了 或 或 ,就会显示菜单并等待输入;
- 如果和某个菜单启动项的热键被按下,则会立刻引导对应的菜单启动项;
- 如果在倒计时结束时没有进行上述任何操作,则会引导默认的菜单启动项;
- 如果设置的是 'countdown',会显示一行剩余时间的指示。(如果是 'hidden',则不会显示任何信息)。
-
-
GRUB_TIMEOUT
-
含义:GRUB 倒计时
-
值:数值,默认值5
-
0
- 不显示菜单,立刻引导默认菜单启动项
-
-1
- 无限等待
-
-
-
为了让我们能看到菜单,可以进行以下设置
bashGRUB_TIMEOUT_STYLE='menu' GRUB_TIMEOUT=20
-
完成上述设置之后,需要运行命令以使得更改生效:
bashsudo update-grub
如果没有别的需求的话,你可以运行:
bash
sudo reboot
或者:
bash
sudo shutdown -r now
来重启系统以确认我们的设置是否有效,个人确认是有效的。
GRUB 菜单正常,引导启动 Ubuntu 系统正常但是引导启动 Windows 系统却黑屏
可能是显卡驱动冲突造成的,可以添加 nomodeset
参数禁用内核的图形模式设置功能以避免因显卡驱动问题造成的启动失败。
bash
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
References
-
How to add Windows 10 to grub boot loader: https://superuser.com/questions/1392316/how-to-add-windows-10-to-grub-boot-loader
-
Add Windows 10 to GRUB OS list: https://askubuntu.com/questions/661947/add-windows-10-to-grub-os-list/661954#661954
-
Boot-Repair: https://help.ubuntu.com/community/Boot-Repair
-
Offical docs of grub: https://www.gnu.org/software/grub/manual/grub/grub.html
-
Red Hat document:
-
Chinese(Zh-cn):
-
English(US-en):
-
-
Grub:
-
MBR vs GPT: What's the Difference Between an MBR Partition and a GPT Partition? [Solved]: https://www.freecodecamp.org/news/mbr-vs-gpt-whats-the-difference-between-an-mbr-partition-and-a-gpt-partition-solved/
-
BIOS/UEFI/MBR/GPT/GRUB/EFI等概念的总结: https://www.pavelhan.tech/2024-06-21-BIOS-UEFI-MBR-GPTGRUB-EFI-Basics
-
Understanding the Difference: BIOS, UEFI, Bootloader, and U-Boot/GRUB: https://usercomp.com/news/1198820/bios-vs-uefi-vs-bootloader-vs-u-boot-grub
-
怎样修复grub开机引导(grub rescue): https://www.cnblogs.com/jins-note/p/9513335.html
-
将 Windows 添加到 GRUB 启动菜单: https://cn.linux-console.net/?p=10556
-
使用GRUB 添加新的启动项 (menu entry): https://www.cnblogs.com/longwaytogo/p/5679583.html