(双系统)Ubuntu+Windows解决grub引导问题和启动黑屏问题

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 配置文件并按需编辑

  1. 为了解更多信息,可以在终端上运行命令:

    bash 复制代码
    info -f grub -n 'Simple configuration'
  2. 编辑配置文件

    bash 复制代码
    vim /etc/default/grub
  3. 阅读前面的命令打开的手册,但是仅仅关注我们需要的信息

    • 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

        • 无限等待
  4. 为了让我们能看到菜单,可以进行以下设置

    bash 复制代码
    GRUB_TIMEOUT_STYLE='menu'
    GRUB_TIMEOUT=20
  5. 完成上述设置之后,需要运行命令以使得更改生效:

    bash 复制代码
    sudo update-grub

如果没有别的需求的话,你可以运行:

bash 复制代码
sudo reboot

或者:

bash 复制代码
sudo shutdown -r now

来重启系统以确认我们的设置是否有效,个人确认是有效的。


GRUB 菜单正常,引导启动 Ubuntu 系统正常但是引导启动 Windows 系统却黑屏

可能是显卡驱动冲突造成的,可以添加 nomodeset​ 参数禁用内核的图形模式设置功能以避免因显卡驱动问题造成的启动失败。

bash 复制代码
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"


References


相关推荐
明月与玄武4 分钟前
Pywinauto:轻松实现Windows桌面自动化实战
windows·pywinauto·windows桌面自动化
77tian21 分钟前
VMware中快速安装与优化Ubuntu全攻略
开发语言·ubuntu
Excuse_lighttime24 分钟前
JVM 机制
java·linux·jvm
小猪写代码38 分钟前
在 Ubuntu 20.04.6 LTS 中将 SCons 从 3.1.2 升级到 4.9.1
chrome·ubuntu·pip
YOYO--小天1 小时前
4G和5G模块的使用
linux·嵌入式硬件·5g
愚润求学1 小时前
【Linux】进程间通信(一):认识管道
linux·运维·服务器·开发语言·c++·笔记
渴望技术的猿1 小时前
Windows 本地部署MinerU详细教程
java·windows·python·mineru
持之以恒的天秤1 小时前
多线程与线程互斥
linux
光不度AoKaNa1 小时前
计算机操作系统概要
linux·运维·服务器
晚秋大魔王1 小时前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——wget
java·linux·运维·开发语言·华为·harmonyos