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

Introduction

解决双系统的 Windows 的启动项失踪和grub正常的情况下启动 Windows 系统出现黑屏的问题。

Note:

  • 我的系统是 Ubuntu 24.04 LTS desktop​,安装了双系统(先安装 Win ,再安装 Ubuntu)


文章目录

    • Introduction
    • Stage1: 我看不到任何让我选择系统的界面
    • Stage2: 对 GRUB 的文件的介绍,了解和编辑
      • 对 GRUB 文件的概要介绍
      • 深入了解 GRUB 配置文件并按需编辑
    • 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. 为了解更多信息,可以在终端上运行命令:

    info -f grub -n 'Simple configuration'
    
  2. 编辑配置文件

    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. 为了让我们能看到菜单,可以进行以下设置

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

    sudo update-grub
    

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

sudo reboot

或者:

sudo shutdown -r now

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


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

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

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):

      https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-working_with_the_grub_2_boot_loader#ch-Working_with_the_GRUB_2_Boot_Loader

    • English(US-en):

      https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-working_with_the_grub_2_boot_loader#sec-Upgrading_from_GRUB_Legacy_to_GRUB_2

  • Grub:

    • https://www.cnblogs.com/studyone/p/5500679.html
    • https://wiki.archlinuxcn.org/wiki/GRUB?rdfrom=https%3A%2F%2Fwiki.archlinux.org%2Findex.php%3Ftitle%3DGRUB_%28%25E7%25AE%2580%25E4%25BD%2593%25E4%25B8%25AD%25E6%2596%2587%29%26redirect%3Dno
  • 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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…

docker安装和测试redis步骤

docker安装和测试redis步骤 一、官方推荐安装方式: 1、执行 docker pull redis:4.0.1 命令,下载 redis 镜像,如下所示: 2、执行命令,创建并启动redis容器 docker run - -rm -d - -name redis6379 -p 6379:6379 r…

微信小程序原生与 H5 交互方式

在微信小程序中,原生与 H5 页面(即 WebView 页面)之间的交互通常有以下几种方式: 1. 使用 postMessage 进行通信 微信小程序的 WebView 页面和原生小程序页面可以通过 postMessage 来进行数据传递。 WebView 页面向原生小程序发…

vue3学习日记5 - 项目起步

最近发现职场前端用的框架大多为vue,所以最近也跟着黑马程序员vue3的课程进行学习,以下是我的学习记录 视频网址: Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记: vue3学习日记1 - 环境搭建-CSDN博…

计算机组成原理--笔记一

目录 一.计算机硬件的基本组成 1.早期冯诺依曼机的结构 2.现代计算机的结构 二.各个硬件的工作原理 1.主存储器 i. 读取数据 ii. 写入数据 1.1 基本组成 2.运算器 3.控制器 一.计算机硬件的基本组成 1.早期冯诺依曼机的结构 “存储程序”,将指令以二进制的形式输入…

漫话架构师|什么是系统架构设计师(开篇)

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 关注犬余,共同进步 技术从此不孤单

CV(10)--目标检测

前言 仅记录学习过程,有问题欢迎讨论 目标检测 object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别;输出的是分类类别label物体的外框(x, y, width, height)。 目标检测算法&#xff1a…

【Qt】01-了解QT

踏入QT的殿堂之路 前言一、创建工程文件1.1 步骤介绍1.2 编译介绍方法1、方法2、编译成功 二、了解框架2.1 main.cpp2.2 .Pro文件2.2.1 注释需要打井号。2.2.2 F1带你进入帮助模式2.2.3 build文件 2.3 构造函数 三、编写工程3.1 main代码3.2 结果展示 四、指定父对象4.1 main代…

【深度学习】关键技术-激活函数(Activation Functions)

激活函数(Activation Functions) 激活函数是神经网络的重要组成部分,它的作用是将神经元的输入信号映射到输出信号,同时引入非线性特性,使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…

3.flask蓝图使用

构建一个目录结构 user_oper.py from flask import Blueprint, request, session, redirect, render_template import functools # 创建蓝图 user Blueprint(xkj, __name__)DATA_DICT {1: {"name": "张三", "age": 22, "gender": …

React第二十二章(useDebugValue)

useDebugValue useDebugValue 是一个专为开发者调试自定义 Hook 而设计的 React Hook。它允许你在 React 开发者工具中为自定义 Hook 添加自定义的调试值。 用法 const debugValue useDebugValue(value)参数说明 入参 value: 要在 React DevTools 中显示的值formatter?:…

【漏洞分析】DDOS攻防分析

0x00 UDP攻击实例 2013年12月30日,网游界发生了一起“追杀”事件。事件的主角是PhantmL0rd(这名字一看就是个玩家)和黑客组织DERP Trolling。 PhantomL0rd,人称“鬼王”,本名James Varga,某专业游戏小组的…

【 PID 算法 】PID 算法基础

一、简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义,…

PyTorch使用教程(1)—PyTorch简介

PyTorch是一个开源的深度学习框架,由Facebook人工智能研究院(FAIR)于2016年开发并发布,其主要特点包括自动微分功能和动态计算图的支持,使得模型建立更加灵活‌。官网网址:https://pytorch.org。以下是关于…

PyTorch框架——基于深度学习YOLOv5神经网络水果蔬菜检测识别系统

基于深度学习YOLOv5神经网络水果蔬菜检测识别系统,其能识别的水果蔬菜有15种,# 水果的种类 names: [黑葡萄, 绿葡萄, 樱桃, 西瓜, 龙眼, 香蕉, 芒果, 菠萝, 柚子, 草莓, 苹果, 柑橘, 火龙果, 梨子, 花生, 黄瓜, 土豆, 大蒜, 茄子, 白萝卜, 辣椒, 胡萝卜,…

Mac玩Steam游戏秘籍!

Mac玩Steam游戏秘籍! 大家好!最近有不少朋友在用MacBook玩Steam游戏时遇到不支持mac的问题。别担心,我来教你如何用第三方工具Crossover来畅玩这些不支持的游戏,简单又实用! 第一步:下载Crossover 首先&…

【网络篇】IP知识

IPv4首部与IPv6首部 IPv4相对于IPv6的好处: 1.IPv6可自动配置,即使没有DHCP服务器也可以实现自动分配IP地址,实现即插即用。 2.IPv6包首部长度采用固定40字节,删除了选项字段,以及首部校验和,简化了首部…

我的年度总结

这一年的人生起伏:从曙光到低谷再到新的曙光 其实本来没打算做年度总结的,无聊打开了帅帅的视频,结合自己最近经历的,打算简单聊下。因为原本打算做的内容会是一篇比较丧、低能量者的呻吟。 实习生与创业公司的零到一 第一段工…

Vue脚手架开发 Vue2基础 VueRouter的基本使用 vue-router路由案例

vue-router路由 Vue脚手架开发,创建项目:https://blog.csdn.net/c_s_d_n_2009/article/details/144973766 Vue Router,Vue Router | Vue.js 的官方路由,Vue.js 的官方路由,为 Vue.js 提供富有表现力、可配置的、方便…

Windows远程桌面网关出现重大漏洞

微软披露了其Windows远程桌面网关(RD Gateway)中的一个重大漏洞,该漏洞可能允许攻击者利用竞争条件,导致拒绝服务(DoS)攻击。该漏洞被标识为CVE-2025-21225,已在2025年1月的补丁星期二更新中得到…