Linux娘救援行动:GRUB2换主题踩坑记
Linux娘救援行动:GRUB2换主题踩坑记
一、GRUB娘:Linux娘的引路人
在之前那场双系统翻车救援里,我们已经和GRUB娘打过照面了。那次她缩成一个漆黑的命令行,差点让我以为笔记本变砖。
但你可能还不太清楚GRUB娘到底是谁。简单说,她是Linux娘的“迎宾使”——当你按下电源键,电脑完成硬件自检之后,第一个被找到并唤醒的就是GRUB娘。她的全名叫 GRand Unified Bootloader,职责只有一件:找到你想要启动的操作系统内核,把控制权安安全全地交到Linux娘(或者Windows娘)手上。
没有GRUB娘,Linux娘连登台亮相的机会都没有。她就像舞台幕布后那个沉默的场务,灯亮了、幕拉开了,自己便安静退场,绝不抢戏。
也正是因为这种“沉默寡言”的性子,当我对她“有所图谋”的时候,一个下午就被消磨得一干二净——我想给她换件新皮肤,她却始终不肯开口告诉我哪里不对劲。
二、犯错的序章:一件中意的新衣服
起因是前几天刷到一张截图:别人的GRUB2界面黑底白字,扁平化设计,菜单项前面还带着雅致的小图标。那种“什么都没有,又什么都有了”的极简感,瞬间戳中了我。于是我找到了同款 Dark Matter 主题,下载解压,准备给自家Fedora 43上的GRUB娘也安排上。
结果接下来的三个小时,我连续犯了三个低级到不能再低级的错误,而GRUB娘全程沉默,连个 error 都没给我。这篇文章,就当给那个消失的下午立个碑,也帮你绕开这些坑。
三、第一个错误:指了路,路还没修
下载完主题后,我打开 /etc/default/grub,理所应当地加上了一行:
GRUB_THEME="/boot/grub2/themes/darkmatter/theme.txt"
写完这句就觉得自己按部就班,稳了。保存,重启——不对,GRUB还是那张万年不变黑底白字脸。
我第一反应是怀疑Fedora 43对GRUB做了什么不可告人的限制。搜了一圈,有人说版本不兼容,有人让进BIOS关安全启动,我挨个照做,毫无起色。最后我实在忍不住了,去翻开机时实际加载的 grub.cfg,才读出这条潜规则:
GRUB在找不到主题文件时,不会报错,只会无声地忽略掉,然后回退到默认主题。
我立刻去 /boot/grub2/themes/ 下面检查——空的。主题还好端端躺在 ~/下载/ 里。我只给引导娘写了个漂亮地址,但那条路上根本没铺任何东西,她走了两步发现不对,就什么也不说,换回旧衣服冷静登场。
教训:GRUB_THEME 指向的是GRUB加载时需要读取的真实文件,不是一句愿望。必须把主题文件夹原原本本地复制到目标路径下,否则所有设置都像写给空气的情书。
四、第二个错误:给黑白电视接了4K
第一次摔得鼻青脸肿后,我老老实实把主题文件搬到了 /boot/grub2/themes/darkmatter/。目录结构、theme.txt、那些图标资源,一个不差。重启——还是没变。
这次我强迫自己冷静下来,重新打开 /etc/default/grub,一行一行地扫,终于看到了这行原本被我忽略的配置:
GRUB_TERMINAL_OUTPUT="console"
console 是纯文本终端模式。GRUB有两种显示模式:
- console:只能显示字符,没有背景图、没有花哨颜色,更别提图标。
- gfxterm:图形终端模式,支持主题、背景、自定义字体,是把新衣服穿起来的必要条件。
这俩的关系,就像一台黑白电视和一台4K显示器。你把再好的影像源接上黑白电视,它也只能播出一片模糊的格子。而Fedora(以及相当多发行版)偏偏默认就设成了 console 模式,GRUB娘明明有能力显示主题,但她的图形引擎根本没被叫醒。
我把那一行果断改成:
GRUB_TERMINAL_OUTPUT="gfxterm"
教训:想让她穿新衣服,得先把舞台灯光打开。console 模式下,所有关于主题的梦想都只是妄想。
五、第三个错误:装修完了没合闸
两个明雷排完之后,我觉得胜利已经触手可及:主题文件到位了,输出模式也切成了图形。保存,重启——
依然是那张灰扑扑的老面孔。我坐在屏幕前,体验到了真正的灵魂出窍。
是不是Fedora 43对GRUB动了手脚?是不是Dark Matter本就不兼容?就在我快要开始相信计算机有灵异事件的时候,一个微弱的理智声音飘过脑海:你重新生成 grub.cfg 了吗?
/etc/default/grub 只是一份“源文件”,GRUB在开机时真正读取的,是存放于 /boot/grub2/grub.cfg(或 /boot/grub/grub.cfg)的最终配置。修改默认设置后,必须用专门的命令把它“编译”出来:
# Fedora/RHEL 系
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# Ubuntu/Debian 系
sudo update-grub
我之前用Ubuntu时,脑子里刻的是 update-grub,换到Fedora后它变成了 grub2-mkconfig,而我的肌肉记忆没有更新。改了半天配置却没执行这条命令,就像把全屋装修完了,死活不去合电闸,然后坐在黑暗里怀疑灯泡坏了。
一条命令下去,重启。黑底白字的极简主题终于冷冷清清地出现在眼前,菜单前面还带着小图标。那种“等了半天终于得到回应”的感觉,差点让我当场原谅GRUB娘的所有沉默。
教训:/etc/default/grub 永远不会自动生效,必须手动生成最终配置文件。记住这条铁律,就能少怀疑半辈子人生。
六、正确的三件事
如果你也中了GRUB娘的沉默诅咒,按这个顺序来,稳的:
-
把主题文件搬到实际生效的目录
sudo mkdir -p /boot/grub2/themes/你的主题名 sudo cp -r /下载的主题/* /boot/grub2/themes/你的主题名/ -
修改
/etc/default/grub,确保这两行存在GRUB_TERMINAL_OUTPUT="gfxterm" GRUB_THEME="/boot/grub2/themes/你的主题名/theme.txt" -
重新生成 GRUB 配置
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # Fedora/RHEL # 或 sudo update-grub # Debian/Ubuntu -
重启,享受赏心悦目的引导界面
七、复盘:她的沉默,需要你来翻译
三个错误,拆开来看一个比一个初级:文件没放对位置、模式没切成图形、改完没重新生成。但把它们堆在一起,再碰上GRUB娘那种“绝对不出声抱怨”的性格,就组成了一个完美的闷声陷阱。
跟Shell比起来,GRUB娘更像一个内向到极致的后台角色。Shell会大声告诉你 Permission denied,systemd会拿红字报出服务起不来,而GRUB娘——她只会静静地忽略掉你所有安排不到位的地方,若无其事地执行她的默认流程,留你一个人对着空荡荡的屏幕怀疑人生。
但换个角度想,也许这就是她的温柔:她从不把你的错误当作攻击的理由,只会耐心地呈上那套旧界面,等你真正明白该怎么和她沟通。
现在每次开机,看到那个极简的黑白启动菜单,我都会在心里默默对她说一句——
“换了新衣服,果然更配你了。”