当前位置: 首页 > article >正文

【Fedora 44 GRUB 菜单每次开机都显示问题】

Fedora 44 GRUB 菜单每次开机都显示问题Fedora 44 GRUB 菜单每次开机都显示问题问题现象环境信息走过的弯路弯路一方案 B「直接隐藏」诱惑很大但要拒绝弯路二方案 A「自动隐藏」按教程做了不生效弯路三以为是 grub.cfg 没重新生成真正的诊断往 grub.cfg 里注入 DEBUG根因跨文件系统的符号链接修复用 ext4 上的真实文件替换符号链接还有一个坑测试时不要重启太快工作机制总结顺便为什么 Ubuntu 没这问题经验Fedora 44 GRUB 菜单每次开机都显示问题问题现象Fedora 44UEFI 启动单系统单硬盘。每次开机都会出现 GRUB 启动菜单停留 5 秒倒计时必须等待或按回车才能进入系统。明明只装了一个系统根本不需要选什么。更恼火的是我不希望直接把菜单关掉——理想行为是「正常启动时不显示启动出问题时自动显示」。这是 Linux 发行版应该具备的健壮性。环境信息OS: Fedora 44 (Workstation) Kernel: 6.19.14-300.fc44.x86_64 Boot: UEFI GRUB 2.12 shim GRUB: grub2-efi-x64-2.12-56.fc44分区布局这个细节后面是关键/dev/nvme0n1p1 → /boot/efi (FAT32, EFI System Partition) /dev/nvme0n1p2 → /boot (ext4) /dev/nvme0n1p3 → / (btrfs)走过的弯路弯路一方案 B「直接隐藏」诱惑很大但要拒绝最简单的修复是把/etc/default/grub里的GRUB_TIMEOUT5改成0再加上GRUB_TIMEOUT_STYLEhidden重新生成 grub.cfgsudogrub2-mkconfig-o/boot/grub2/grub.cfg菜单确实再也不出现了——但启动出问题时也看不到菜单了。这是隐藏问题不是解决问题。弯路二方案 A「自动隐藏」按教程做了不生效Fedora 的「自动隐藏」机制涉及三个 grubenv 变量sudogrub2-editenv -setmenu_auto_hide1sudogrub2-editenv -setboot_success1重启后菜单照样出现。弯路三以为是 grub.cfg 没重新生成这一步确实有意义。Fedora 的 GRUB 自动隐藏依赖/etc/grub.d/12_menu_auto_hide这个脚本生成的逻辑而你的 grub.cfg 可能是早期版本生成的、缺这段。sudogrub2-mkconfig-o/boot/grub2/grub.cfg验证 cfg 里确实有了相关逻辑sudogrep-nEmenu_hide_ok|menu_auto_hide|timeout_style/boot/grub2/grub.cfg输出能看到完整的12_menu_auto_hide段以及10_reset_boot_success段——逻辑齐全。但是重启还是显示菜单。真正的诊断往 grub.cfg 里注入 DEBUG到这里我已经无从猜起只好往 GRUB 启动脚本里注入调试输出sudosed-i/^### BEGIN \/etc\/grub.d\/12_menu_auto_hide ###$/a\ echo DEBUG fts[${feature_timeout_style}] ma[${menu_auto_hide}] mhok[${menu_hide_ok}] bs[${boot_success}] bi[${boot_indeterminate}]\ sleep 8/boot/grub2/grub.cfg这会在12_menu_auto_hide块开头打印五个关键变量、停 8 秒。重启观察。第一次 DEBUG 输出DEBUG fts[y] ma[] mhok[0] bs[0] bi[]同时屏幕上还有两行报错error: ../../grub-core/commands/loadenv.h:read_envblk_file:51:invalid environment block. error: ../../grub-core/commands/loadenv.h:read_envblk_file:51:invalid environment block.终于看到真相了fts[y]— GRUB 功能正常ma[]—menu_auto_hide是空的bi[]—boot_indeterminate也是空的这两个本来该从 grubenv 加载的变量都是空的加上invalid environment block报错结论GRUB 启动时根本读不了 grubenv。但grub2-editenv list命令明明能正常列出变量啊根因跨文件系统的符号链接查看 grubenv 文件$sudols-la/boot/grub2/grubenv lrwxrwxrwx.1root root25... /boot/grub2/grubenv -../efi/EFI/fedora/grubenv它是一个相对符号链接指向 EFI 分区上的 grubenv。回顾分区布局/boot在 ext4 分区上/boot/efi是另一个分区FAT32 EFI 分区的挂载点Linux 用户态有内核帮忙跟着符号链接../efi/EFI/fedora/grubenv走会自动跨过挂载点边界正确读到 EFI 分区的文件。所以grub2-editenv list没问题。但 GRUB 启动时还没有 Linux 内核GRUB 在 ext4 分区里看到/grub2/grubenv这个符号链接跟着相对路径../efi/EFI/fedora/grubenv走落在 ext4 分区上的/efi/EFI/fedora/grubenv——而这个路径在 ext4 上根本不存在/efi只是个空挂载点目录GRUB 读到无效内容 → 报invalid environment block之后 GRUB 自己的save_env又往这个错误位置写让事情更糟进入「读坏 → 写坏 → 更坏」的循环修复用 ext4 上的真实文件替换符号链接# 1. 备份 EFI 分区上的原文件保险sudocp/boot/efi/EFI/fedora/grubenv /boot/efi/EFI/fedora/grubenv.bak# 2. 删除符号链接sudorm/boot/grub2/grubenv# 3. 在 ext4 上直接创建标准格式的 grubenv1024 字节sudogrub2-editenv /boot/grub2/grubenv create# 4. 写回必要变量sudogrub2-editenv /boot/grub2/grubenvset\saved_entry$(grub2-editenv /boot/efi/EFI/fedora/grubenv.bak list|grepsaved_entry|cut-d-f2-)\menu_auto_hide1\boot_success1\boot_indeterminate0# 5. 验证必须不是符号链接必须 1024 字节sudols-la/boot/grub2/grubenv# 应该是 -rw-r--r-- 不是 lrwxrwxrwxsudowc-c/boot/grub2/grubenv# 应该是 1024sudogrub2-editenv /boot/grub2/grubenv list# 6. 重新生成 grub.cfgsudogrub2-mkconfig-o/boot/grub2/grub.cfg重启验证没有invalid environment block报错了DEBUG 输出变成ma[1] mhok[1] bs[0] bi[0]bs0 是因为10_reset_boot_success已经把它从 1 重置成 0正常现象菜单不再显示直接进系统还有一个坑测试时不要重启太快修好之后我又被一个问题困扰测试时反复重启菜单时不时还会出现。查看 grubenv$sudogrub2-editenv /boot/grub2/grubenv listsaved_entry...menu_auto_hide1boot_success0# ← 又变成 0 了boot_indeterminate0boot_success怎么变成 0 了查看用户级 timer$ systemctl--userstatus grub-boot-success.timer Active: active(waiting)since... Trigger:...;39s left——原来grub-boot-success.timer默认在用户登录2 分钟后才把boot_success写回 1。如果你登录后不到 2 分钟就 poweroff/重启timer 没机会跑下次开机 GRUB 看到boot_success0就会显示菜单。这其实是「异常检测」的正确行为从系统视角看会话太短可能意味着启动后立刻崩溃。如果觉得 2 分钟太长可以做用户级 overridemkdir-p~/.config/systemd/user/grub-boot-success.timer.d/cat~/.config/systemd/user/grub-boot-success.timer.d/override.confEOF [Timer] OnActiveSec OnActiveSec20s EOFsystemctl--userdaemon-reload或者重启前手动标记成功grub2-set-bootflag boot_success工作机制总结修复完成后整套「正常时隐藏、异常时显示」的机制场景grubenv 状态表现正常启动boot_success1→ GRUB 隐藏菜单重置为 0菜单不显示登录后 2 分钟timer 触发 →boot_success1为下次正常启动准备启动后立即崩溃timer 没机会跑 →boot_success保持 0下次开机显示菜单强制断电2 分钟内同上下次开机显示菜单内核启动失败boot_indeterminate累加显示菜单顺便为什么 Ubuntu 没这问题我装 Ubuntu 时从没遇到过这种事。差别在三层1. 分区布局Ubuntu 默认ESP 根分区/boot在根分区里Fedora 默认ESP 独立/boot 根分区2. grubenv 位置策略Ubuntu/boot/grub/grubenv是普通文件跟 grub.cfg 同分区无跨文件系统问题Fedora/boot/grub2/grubenv是指向 EFI 分区的相对符号链接——本文的坑3. 隐藏菜单机制Ubuntu 用更简单的recordfail变量默认GRUB_TIMEOUT_STYLEhidden, GRUB_TIMEOUT0单系统机器上根本看不到菜单Fedora 用menu_auto_hideboot_successboot_indeterminate 用户级 timer 这一套更精细但活动部件多Fedora 这套设计有它的道理区分「快速失败」「不确定」「成功」三种状态做异常检测但活动部件多 出问题概率高加上跨文件系统符号链接这个隐患就容易翻车。经验不要轻易接受「直接关掉」。如果一个机制本来设计成「正常时隐藏、异常时显示」那把它一刀切隐藏掉就丢了排错能力grub2-editenv list能读不代表 GRUB 能读。一个能用 Linux 内核读、不能用 GRUB 读的文件是很容易被忽视的诊断启动相关问题往 grub.cfg 里加 echo sleep 是大杀器。GRUB 脚本调试手段有限直接打印变量值比靠猜强一万倍跨文件系统的符号链接是个隐性陷阱。日常用户态完全感受不到但任何不依赖 Linux 内核的工具GRUB、initramfs 早期阶段、某些恢复工具都可能踩坑如果你也在 Fedora 上遇到「单系统但每次开机都显示 GRUB 菜单」的问题先别急着改GRUB_TIMEOUT0先检查sudols-la/boot/grub2/grubenv如果是符号链接本文的方法可以一并解决。

相关文章:

【Fedora 44 GRUB 菜单每次开机都显示问题】

Fedora 44 GRUB 菜单每次开机都显示问题 Fedora 44 GRUB 菜单每次开机都显示问题问题现象环境信息走过的弯路弯路一:方案 B「直接隐藏」诱惑很大但要拒绝弯路二:方案 A「自动隐藏」按教程做了不生效弯路三:以为是 grub.cfg 没重新生成 真正的…...

Java 8+ 时间类型 :从 LocalDateTime 到 Instant

一、核心前置知识 1. 核心包 所有新时间类型都位于 java.time 包下,无需引入第三方依赖,JDK 8 原生支持。 2. 核心设计理念 领域驱动设计:将「日期、时间、时区、时间戳、时间间隔」严格拆分,每个类型只负责一件事&#xff0c…...

有哪些降重软件能保住论文原意,不会改得逻辑不通?

论文降重最怕啥?改完重复率达标了,核心意思却跑偏,逻辑漏洞百出,专业术语乱改一通,导师一看就知道是 AI 瞎改的。其实选对工具,既能把重复率压到合格线,又能100% 保住论文原意、逻辑连贯、术语精…...

Arm Neoverse V2处理器勘误分类与规避方案详解

## 1. Neoverse V2处理器勘误深度解析作为Arm最新一代基础设施级处理器核心,Neoverse V2(代号MP158)在数据中心和边缘计算领域展现出强劲性能。但在实际部署中,硬件设计层面的勘误(Errata)可能引发系统性风…...

【汽车芯片功能安全分析与故障注入实践 03】从 Base FIT Rate 开始:为什么安全分析要先做 BFR?

作者: Darren H. Chen 方向: 汽车芯片功能安全分析与故障注入实践 Demo: D03_base_fit_rate 标签: 汽车芯片 功能安全 FIT BFR 随机硬件故障 可靠性建模Demo 说明 D03_base_fit_rate 用来实现一个简化的 Base FIT Rate 计算 Demo。…...

为OpenClaw构建基于时间线的知识图谱大脑:Graphiti插件实战指南

1. 项目概述:为OpenClaw构建一个基于时间线的知识大脑 如果你和我一样,长期使用OpenClaw这类AI助手进行项目协作、知识整理和深度对话,你可能会遇到一个核心痛点:对话是线性的、易逝的。一次长达数小时的头脑风暴,一旦…...

从iPhone备份提取Apple Watch健康数据的开源工具WatchClaw详解

1. 项目概述:一个能“抓取”Apple Watch数据的开源利器如果你是一名iOS或watchOS开发者,或者对可穿戴设备的数据分析感兴趣,那你很可能遇到过这样的困境:想深入研究Apple Watch采集到的那些丰富数据——心率、步数、活动能量、睡眠…...

三星全线退出中国家电市场:真被国货打跑?还是战略大转移?

一、三星真的被国货「打跑」了?近期三星官宣全线停止在中国大陆销售电视、冰箱、洗衣机等全品类家电,消息一出立刻引发热议。不少人高呼「解气」,认为这是国产家电崛起的标志性事件 —— 外资巨头终于被中国品牌打跑了。但事实真的是「兵败撤…...

de4dot:免费开源的.NET反混淆神器,轻松解密被保护的代码

de4dot:免费开源的.NET反混淆神器,轻松解密被保护的代码 【免费下载链接】de4dot .NET deobfuscator and unpacker. 项目地址: https://gitcode.com/gh_mirrors/de/de4dot 你是否曾经遇到过这样的情况:拿到一个.NET程序集,…...

开源像素光标主题制作指南:从sheep-realms-avatar到全平台个性化方案

1. 项目概述与核心价值如果你和我一样,是个对桌面美学有点“偏执”的创作者或玩家,那你肯定也折腾过鼠标指针。默认的白色箭头看久了实在乏味,而网上那些炫酷的指针包,要么风格不搭,要么安装复杂,要么就是版…...

全卷积扩散模型FCDM:高效图像生成新方案

1. 项目概述 在计算机视觉领域,卷积神经网络(ConvNets)曾长期占据主导地位。然而近年来,Transformer架构在生成模型中的应用逐渐增多,但其高计算复杂度和资源消耗问题也日益凸显。本文介绍了一种基于ConvNeXt架构改进的…...

形式化方法

形式化方法是基于数学、逻辑、符号化语言,对软件系统进行合格建模、规范描述、逻辑推理和正确验证的一套开发与分析方法。不依靠人工测试猜测bug,而是用数学方式证明程序和系统是否正确。形式化方法的核心作用在于,它可以用严格的逻辑写清系统…...

NIQ研究揭示商业新规则:人工智能正开始决定消费者购买什么

NIQ最新的全球报告《商业革命:东西方交汇》探讨了商业智能如何帮助品牌、零售商和平台在快速融合的全球格局中把握方向 人工智能正迅速从一种工具转变为“买家”,从而重塑人们发现、选择和购买产品的方式 零售业的下一波增长浪潮并非源自传统电子商务&am…...

羊蹄山之魂

...

C++ 输入与输出的使用说明(最后含提高输入输出效率的三行代码)

一.标准输入输出流库及输入输出流对象及符号介绍< iostream > : input output stream的缩写&#xff0c;是标准的输入输出流库&#xff0c;定义了标准的输入输出流对象。 std::cin : istream类的对象&#xff0c;是 C 标准库中用于从标准输入&#xff08;键盘&#xff09…...

开源NotebookLM替代品SurfSense:自托管AI知识中枢部署与实战指南

1. 项目概述&#xff1a;为什么我们需要一个开源的 NotebookLM 替代品&#xff1f; 如果你和我一样&#xff0c;是个重度依赖 AI 来整理、分析和创作内容的人&#xff0c;那你肯定对 Google 的 NotebookLM 不陌生。它确实是个好工具&#xff0c;把文档丢进去&#xff0c;就能基…...

2026-05-09 全国各地响应最快的 BT Tracker 服务器(电信版)

数据来源&#xff1a;https://bt.me88.top 序号Tracker 服务器地域网络响应(毫秒)1udp://118.196.100.63:6969/announce上海电信32udp://60.172.236.18:6969/announce安徽合肥电信73http://60.249.37.20:6969/announce广东广州电信324http://211.75.205.187:6969/announce广东…...

AI应用生产级部署模板:从FastAPI到Celery的工程化实践

1. 项目概述&#xff1a;从开源模板到AI应用的生产力革命最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Sargentech-AI/openclaw-production-templates。光看名字&#xff0c;你可能会觉得这又是一个普通的代码模板库&#xff0c;但如果你深入了解一下&#xff0c;就会发…...

2026年05月08日最热门的开源项目(Github)

本期榜单中列出了15个不同的项目&#xff0c;每个项目都有其独特的特点和用途。以下是对榜单的分析&#xff1a; 1. 高热度项目 anthropics/financial-services (Star: 14182) 是榜单中当前Star数最多的项目&#xff0c;介绍虽不详&#xff0c;但显然在金融服务领域应用广泛。…...

开源AI助手技能开发:从角色扮演到人格化交互的技术实现

1. 项目概述&#xff1a;一个为开源AI助手打造的“维京女友”技能最近在折腾开源AI助手生态&#xff0c;发现了一个特别有意思的项目&#xff0c;叫“Viking_Girlfriend_Skill_for_OpenClaw”。光看名字就充满了反差感和极客式的幽默感。这本质上是一个为OpenClaw这类开源AI助手…...

GNSS授时与PPS技术

一、 核心原理与基础概念 1.1 授时原理概述 GNSS授时的根本原理&#xff0c;是接收机利用卫星信号解算出自身与卫星的钟差后&#xff0c;校正本地时钟&#xff0c;使其与卫星上的高精度原子钟同步。当接收机能同时观测到至少4颗卫星信号时&#xff0c;便可完成这一过程&#…...

从零构建私有化智能语音助手:基于ESP32与开源后端的完整实践指南

1. 项目概述&#xff1a;从零构建你的智能语音助手后端如果你手头有一块ESP32开发板&#xff0c;并且已经体验过类似“小智”这样的智能语音助手项目&#xff0c;但总觉得依赖别人的云端服务不够自由、不够安全&#xff0c;或者想深度定制功能&#xff0c;那么今天这个内容就是…...

什么是RGM收入增长管理?RGM收入增长管理工具怎么选?

在当今竞争激烈且瞬息万变的快消品市场中&#xff0c;企业面临着诸多挑战&#xff0c;如消费者需求日益多样化、市场竞争不断加剧、渠道成本持续上升等。在这样的背景下&#xff0c;如何实现可持续的收入增长成为了快消企业亟待解决的关键问题。而RGM收入增长管理&#xff0c;正…...

555电影网:全网影视网,高清追剧的不二之选

在当下快节奏的生活里&#xff0c;很多人下班回家最放松的方式就是打开一部好剧&#xff0c;沉浸其中。面对海量影视资源&#xff0c;如何快速找到画质清晰、更新及时、观看流畅的平台&#xff0c;成为不少人的困扰。而555电影网正逐渐成为很多剧迷心中的首选。 作为一个聚合全…...

3步解锁Unity游戏无限可能:MelonLoader模组加载器深度解析

3步解锁Unity游戏无限可能&#xff1a;MelonLoader模组加载器深度解析 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否曾…...

大气环境科研必备利器:WRF-Chem在区域污染传输与生态沉降评估中的实践全揭秘

随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注。大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果&#xff0c;同时气象因…...

深入浅出 Java 反射机制,了解动态编程的原理,小白的速通指南

一、反射是什么&#xff1f;Reflection&#xff08;反射&#xff09; 是 Java 的一项强大特性&#xff0c;它允许运行中的程序获取自身或任意类的内部信息&#xff08;如成员变量、方法、构造器&#xff09;&#xff0c;并且可以动态创建对象、调用方法、修改字段&#xff0c;甚…...

模拟信号数字化中的混叠现象与抗混叠滤波器设计

1. 模拟信号数字化中的混叠现象解析 在工业测量和数据采集领域&#xff0c;我们经常需要将现实世界中的连续模拟信号转换为离散的数字信号进行处理。这个看似简单的过程却隐藏着一个关键陷阱——混叠&#xff08;Aliasing&#xff09;。就像老式西部片中马车轮子看似倒转的视觉…...

使用Taotoken CLI工具一键配置多开发环境与团队协作密钥

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键配置多开发环境与团队协作密钥 在团队协作开发中&#xff0c;为新成员配置大模型API环境常常是个繁琐的过…...

AI辅助开发实战:从视觉前端到金融后端的半自动系统构建

1. 项目概述&#xff1a;一个AI深度参与的半自动系统开发实践 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Semi-automatic-artificial-intelligence-system”&#xff0c;作者是heyaaron-Wu。这个项目本质上是一个实验场&#xff0c;用来探索AI在复杂系统开发中的辅…...