☰
麒麟系统自定义开机GRUB背景图:从启动原理到配置实战
2026/10/13 12:52:02 网站建设 项目流程

1. 项目拆解:一次引导界面的定制需求

说真的,好好的系统在那跑着,为什么非要去动开机那个界面?这事我一开始也问过自己。直到有一次给一台国产化办公机器做交付,用户那边提了个很实际的要求:开机菜单和默认的英文引导界面看着太“生硬”,想换成单位统一的宣传背景图,顺便把菜单文字也调成顺眼的样式,我才真正把麒麟系统这套GRUB定制逻辑从头到尾捋了一遍。

先聊清楚一个概念:麒麟系统,这里主要指基于Linux内核深度定制而成的国产操作系统,日常使用中跑的是内核、桌面环境和办公套件那一整套。而GRUB是什么呢?它是系统启动阶段负责加载内核的引导管理器,电脑通电后,BIOS或UEFI固件交接控制权,GRUB在这个时候弹出菜单、等你选择要启动哪个系统,或者倒计时结束自动拉起默认内核。麒麟系统开机时那个深色背景、列出几个启动项的菜单界面,就是GRUB的工作舞台。

所以“自定义开机GRUB背景图”这句话翻译过来其实是:改掉GRUB菜单界面那张默认壁纸,让整个引导界面贴合使用场景。它解决的痛点很直接——企事业单位批量部署的机器如果都能显示统一的品牌标识,开机体验会更成套;有些内网机器还要在引导界面放上操作提示或责任人联系电话,方便出问题时第一时间找到维护人。除此之外,个人用户纯粹看着默认壁纸腻了,想换一张自己喜欢的图片,也是一个相当普遍的折腾理由。

引用一句我常跟同事说的话:能正常启动只是及格线,启动过程让用户感到舒服、有归属感,那是另一层追求。你别说GRUB这东西不重要,人在按下电源键后的前十几秒就形成了一个“这机器到底靠不靠谱”的第一印象,一个干净协调的引导界面比桌面壁纸更能留住这种印象。

这篇文章的完整操作路径,适用于麒麟系统常见的各版本分支,其中细节我会用实操时的真实情况来讲解,核心思路在其他Linux发行版上也通用。本文适合对系统有基本命令行操作能力、想给机器做形象定制或批量交付调优的读者,也欢迎纯新手带着一台不重要的测试机边看边试。

2. 前期准备:搞明白GRUB配置体系的来龙去脉

在动手换图之前,千万别急着去找配置文件一顿乱改。引导这块出问题不像桌面环境出错那么好恢复,桌面起不来你还能进命令行,GRUB要是配置坏了,开机可能直接卡在引导残留界面或者掉进grub rescue壳子,那才叫真麻烦。所以先搞清楚麒麟系统里GRUB这套体系是长什么样的,才能做到心里有底。

2.1 GRUB配置里的关键目录和文件

麒麟系统跟大多数Linux发行版一样,使用GRUB 2作为默认引导程序,它的配置体系可以简单分成两层。

第一层是静态模板层,目录在/etc/grub.d/,里面装着生成引导菜单各大板块的脚本——有负责系统入口的、有负责内存检测的、有负责自定义条目的,还有一个重要的00_header文件负责装载整体样式的头部配置。第二层是动态生成层,系统通过执行update-grub命令,把模板脚本和/etc/default/grub里的变量组合、运算,最终生成一个巨型的/boot/grub/grub.cfg文件,这个文件才是引导时真正被读取的最终配置。

打开/boot/grub/grub.cfg,开头部分你会看到类似这样的片段:

set default="0" set timeout=5 load_video set gfxpayload=keep insmod gfxterm insmod png insmod jpeg terminal_output gfxterm

这几行就是决定“背景图能不能正常显示”的先决条件。insmod png和insmod jpeg分别加载了PNG和JPEG图片格式的GRUB驱动模块,terminal_output gfxterm把输出模式从枯燥的字符终端切换成图形终端。只有这些模块被加载、终端处于图形模式,后续设置的背景图才不是一张“被印在字符串上的摆设”。

另一件跟主题直接挂钩的事是,麒麟系统默认通常启用了一套GRUB主题。所谓主题,就是一组可以整体定义背景图、菜单框、字体颜色和位置信息的资源包。主题文件一般被安装在/boot/grub/themes/目录下,每个主题对应一个子目录,目录里包含主题描述文件theme.txt,以及背景图、字体文件这些素材。

你可能会问:既然麒麟默认已经有主题了,我直接替换里面的背景图文件不就行了?答案是——分情况。如果系统用的主题本身就引用了固定的图片路径,那替换同路径文件后更新配置确实有效;但更通用的做法是加一条独立的背景图设置,这不会跟主题颜色布局产生耦合,后续回滚也更方便。我接下来讲的思路,两种方式都会涉及,让你在不同版本里都能顺畅落地。

2.2 图画规格怎么选才不会翻车

背景图能不能显示得漂亮,图片规格是第一个硬门槛。很多人第一步就栽在这:兴冲冲找了一张4K壁纸放进去,结果重启发现GRUB界面还是黑的,或者只显示一个小角标,为什么?

GRUB的图形驱动能力跟桌面环境完全是两码事,它不负责缩放,兼容性也远远不如桌面系统。显示背景图时,GRUB会尽量以原生分辨率把图片呈现出来,遇到尺寸不匹配的情况,不同版本的行为还不一样:有的直接不显示、有的居中截取、有的干错弄成平铺拉伸变成抽象画。所以说,最稳妥的做法是,提前把图片处理成跟目标机器的屏幕分辨率一致,或者至少做到等比例分辨率。

这里给几个实用建议:

  • 图片格式优先选PNG,其次JPG,别用BMP和WebP。GRUB 2内置模块对PNG和JPG的支持最成熟,BMP在某些老版本下也能显示,但体积大、还容易遇到色深问题。
  • 分辨率方面,你可以先运行xrandr或在显示设置里看一下屏幕原生分辨率。办公机器常见的1920x1080,对应图片做1920x1080;如果机器是1366x768的老屏幕,你就准备1366x768。没有确切信息时,保守选1024x768也行,反正GRUB显示出来会很清晰。
  • 有一个非常容易被忽略的点:GRUB在图形模式下显示PNG时,对某些不常见的色深支持不好。建议用绘图工具导出时选择24位色深或32位色深的标准PNG,不要用16位色或带特殊Alpha通道的版本。
  • 文件大小别太夸张,几十MB的壁纸就别放进引导区了。引导分区一般空间不大,而且GRUB在启动早期读取一个超大图片,会把启动速度拖慢一截。正常压到2MB以内属于安全范围。

在这个环节我用的工具是系统自带的绘图软件,操作也不复杂:打开目标图片,按快捷键调出缩放面板,输入目标分辨率应用,导出时选PNG格式并确认位深度在合理范围,就完成了。如果你手头只有在线图片,也可以在浏览器中通过开发者工具查看原图地址,下载后本地同样处理,没必要专门装一堆重型软件。

2.3 备份,永远不要跳过的一步

下面提到的任何操作都需要root权限,如果你平时用的是普通用户,请在命令前自行加sudo。很多教程上下文不写这点,容易让新手在后面几个步骤卡住,这里先统一提个醒。

在动GRUB配置之前,备份成本实在太低、收益又极高,没理由不做。你要备份的无非两个东西:当前的GRUB配置文件和原来的背景图素材。命令行下三条命令就够:

cp /etc/default/grub /etc/default/grub.bak cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak cp -r /boot/grub/themes /boot/grub/themes.bak

如果后面操作出了问题,一条拷贝命令就能把系统恢复到修改前的状态。我见过不少人省略备份,结果改坏之后只能翻资料、进live盘抢救,耗时几小时,就为省那几秒钟命令,不值当。顺便说,后续万一要应急恢复,如果GRUB还能显示菜单,开机时按e键进入编辑模式,手动指定正确的引导根分区,也能进系统再恢复备份文件。

3. 方案选型:直接换图和写变量,哪条路更适合你

背景图的设置方式,在实操层面大致可以分成两派:一派是“替换派”,直接把系统默认主题里的背景图片文件用新图片覆盖;另一派是“变量派”,在/etc/default/grub里定义GRUB_BACKGROUND变量的路径,让GRUB生成配置时把背景设置写进最终的grub.cfg。

两派各有适用场景,我分别讲一下。

3.1 替换派:简单直接,但要认准主题路径

先找到当前生效的主题目录。麒麟系统的GRUB配置里,主题路径通常写在/etc/default/grub的GRUB_THEME变量中,也可以在生成的grub.cfg里搜索theme关键字。实操里我见过两种常见路径:

  • /boot/grub/themes/kylin/
  • /boot/grub/themes/starfield/

进入主题目录后,你会看到类似background.png、theme.txt、font.pf2这样的文件。替换派的做法就是把自己的图片复制为background.png,覆盖老文件。

cp /path/to/your-custom.png /boot/grub/themes/kylin/background.png

然后重新生成GRUB配置:

update-grub

这个方案的优点是理解成本低、没有任何多余的耦合项,缺点则是你等于把主题唯一的图片资源换了样,万一以后想换回官方默认,还得靠之前备份的原图恢复。另外要注意,有些主题目录里的背景图文件名不叫background.png,而是background.jpg或者干脆叫kylin.png,务必先看清theme.txt里desktop-image那行写的是什么路径,再决定覆盖哪个文件。

3.2 变量派:不碰原主题,灵活可控

如果不希望改动主题原始结构,只在最终生成的配置里追加背景设置,那就用GRUB_BACKGROUND变量。

修改/etc/default/grub文件,在里面新增或取消注释一行:

GRUB_BACKGROUND="/boot/grub/custom_background.png"

这里建议不要把自定义图片随便放在/home下,因为GRUB早期阶段读取的是引导分区内容,有些分区格式和路径在初始环境里不一定可读。放在/boot/grub/下最保险,与GRUB同处一个分区,避免跨分区读取的潜在问题。

修改后依然执行:

update-grub

执行完毕,你可以顺手查一下生成的配置文件,确认背景设置生效:

grep -n "background" /boot/grub/grub.cfg

正常会看到类似set color_normal=...、background_image ...的相关行。

变量派的好处是逻辑清晰,切换图片时只要改路径指向,更新后就好;缺点嘛,某些版本下如果默认主题还在加载,GRUB_BACKGROUND可能与主题内置的背景互相覆盖,谁生效取决于加载顺序。遇到这种情况,最简单的处理方式是直接走替换派,或者在主题描述文件里把背景图那一项改成空置。

3.3 我推荐的综合方案

在我做过的实际定制里,用得最顺手的是这么一套组合拳:

第一,图片放到/boot/grub/下,文件名改成有辨识度的名字,比如company_bg.png,避免跟默认资源混在一起。第二,在/etc/default/grub里显式声明GRUB_BACKGROUND。第三,如果发现这样设置后背景还是没有生效,再去查看当前主题的theme.txt,定位到desktop-image配置项,把它改成指向同一个背景图路径。

这个方案可以说是双保险,既绕开了主题内置图片的路径强依赖,又能在主题正常加载的前提下把背景图干干净净地替换掉。下面实战章节,我会沿着这套思路把每个命令拆开讲清楚。

4. 实操:整条链路走一遍,含命令和现场检查

这节是全文的主干,按部就班照做即可。我会把每一步的意图和常见坑点同步交代,保证你既能照着敲,又知道自己在干什么。

4.1 目标机器信息的采集

开工前先确认几件事,拿着确定的信息再动手,比你盲改强得多。

第一步,确认屏幕分辨率。在麒麟桌面环境里打开终端,输入:

xrandr | grep "*"

输出里的1920x1080、1366x768这类数字就是当前分辨率,记下来。多显示器环境就主要看主显示器,因为GRUB阶段通常只认主输出。

第二步,确认GRUB是否处于图形模式。检查/etc/default/grub里GRUB_TERMINAL有没有被设置成console,如果是,即便你设置了背景图,终端也只会以纯字符模式展示,背景图无法呈现。正常情况这一项是注释状态或设为gfxterm。

第三步,找到正在生效的主题目录。执行:

cat /etc/default/grub | grep GRUB_THEME

如果输出为空,就在grub.cfg里找:

grep -n "set theme=" /boot/grub/grub.cfg

记录主题路径,后面可能用到。

4.2 图片准备与放置

我现在以1920x1080分辨率为例走一遍。

在/home当前用户目录下新建一个工作文件夹,把选中的图片放进去,用系统绘图工具调整分辨率。导出时文件名我建议起得简短些,不要用中文名和空格——GRUB的字体加载对非ASCII路径支持参差不齐,中文路径在早期引导阶段很容易变成乱码或直接找不到文件,没必要冒这个险。我通常起名为custom_bg.png。

导出完毕后,用管理员权限把它复制进/boot/grub/:

sudo cp /home/你的用户名/图片目录/custom_bg.png /boot/grub/

顺手给一个合理的文件权限:

sudo chmod 644 /boot/grub/custom_bg.png

644权限的意思是文件所有者可读写、其他用户可读,GRUB读取它没有任何障碍。有些教程会省掉这一步,但万一你未来设置了什么奇怪的umask,复制出来的文件权限是600,那除了root谁都读不了,GRUB自然也就显示不了背景。

4.3 配置文件的修改

用编辑器打开/etc/default/grub(需要root权限),在文件里找个位置加一行:

GRUB_BACKGROUND="/boot/grub/custom_bg.png"

顺手检查同一文件里有没有GRUB_TIMEOUT这一项,它是开机菜单倒计时秒数。默认可能是5秒或10秒,如果你希望开机过程更利落,可以改成3秒,但注意不要在批量部署的机器上把时间设得太短——普通用户还没看清菜单就自动进系统了,万一想手动选其他启动项会手忙脚乱。

保存文件后,执行配置更新:

sudo update-grub

这条命令的本质是运行grub-mkconfig,按照/etc/default/grub设置的变量和/etc/grub.d/下的模板脚本重新生成grub.cfg。输出内容里你会看到类似“正在生成 grub 配置文件”的滚动信息,留意有没有error或not found字样,正常情况应当在最终生成完毕后退出码为0。

4.4 验证与测试:别直接重启了事

能不能别改完就马上重启?很多人就是吃了这个亏——手一快重启,发现界面不对,又得重新开机进系统捣鼓。稳妥的验证流程是这样的:

先确认配置文件里真的写入了背景图指令:

sudo grep -n "background_image\|GRUB_BACKGROUND" /boot/grub/grub.cfg

如果有内容输出,说明背景设置已经进入了实际生效的配置。

然后,如果你想在重启前预览GRUB界面的实际效果,可以借助grub-emu或者虚拟机。麒麟桌面环境自带的软件中心能搜到grub-emu,它可以在当前系统内模拟GRUB界面。但说实话,它模拟的字体渲染跟真实固件启动还有差异,我的习惯是直接用一台不重要的测试机做真实重启验证,真机测试才是最终标准。

真实重启后,留意三个点:一是背景图是否完整显示不花屏;二是菜单文字是否清晰可读、没有被背景图颜色“吃掉”;三是进系统这个动作是否顺畅,没有明显变慢。只要这三个点都正常,这次定制就成功了。

如果重启后背景图没出现,不要急,先看下面这节问题排查。

4.5 其他可选项:把启动菜单文字也调顺手

背景图搞定后,顺带做点锦上添花的事很值得。比如菜单文字的默认颜色有时候跟背景图撞色,导致字体看不清。调整方法是在/etc/default/grub里追加:

GRUB_COLOR_NORMAL="white/black" GRUB_COLOR_HIGHLIGHT="black/white"

这两行的格式是“前景色/背景色”,含义分别是普通菜单项的白字黑底和选中项的黑字白底。实际调色时,你可以用white、black、yellow、cyan等基础色值组合,甚至支持#RRGGBB格式。我建议选跟背景图对比度高的配色,千万别选跟背景融为一体的颜色,不然菜单项就得靠猜了。

还有一个高可选用的参数GRUB_MENU_PICTURE,这个是非标准变量,官方文档里不一定有,但某些改版GRUB支持它。我不建议在通用教程里依赖它,因为它太不通用。我们还是用标准GRUB_BACKGROUND最靠谱。

5. 把图片写进主题:当变量法不生效时的替补方案

如果你按照变量法设置完,重启后发现GRUB界面连图都不显示,很大概率是因为麒麟系统的GRUB默认走的是主题加载逻辑,主题本身的desktop-image指定了它自己的背景图,且加载顺序覆盖了变量设置。

这时候就需要直接改主题文件了。

先切换到主题目录:

cd /boot/grub/themes/kylin ls -l

这里你会看到theme.txt文件,用编辑器打开它,搜索“desktop-image”或“desktop_color”关键字。典型的主题文件里会有类似这样的内容:

desktop-image: "background.png" desktop-color: "#000000"

desktop-image指定背景图相对主题目录的文件名,desktop-color是底色兜底。现在把theme.txt里的图片引用改掉:

desktop-image: "/boot/grub/custom_bg.png"

注意这里可以直接写绝对路径,也可以写相对路径,但绝对路径更保险。保存后重新执行update-grub生成配置,再重启验证。

如果主题加载很妖,怎么改都不显示,还有个终极大招:把主题整个停用。在/etc/default/grub里注释或删除GRUB_THEME这一行,同时保留GRUB_BACKGROUND变量。这样一来GRUB会退回无主题状态,此时GRUB_BACKGROUND就能独自掌控背景显示了。

代价就是你丢失了主题提供的菜单美化——比如高亮框、字体渲染风格都没了。但换来的是背景图百分之百可控。我一般只在客户要求特别简单的场景下才用这招,正常还是优先保住主题。

6. 常见问题与排查实录

定制GRUB背景图这活儿,问题主要集中在图片本身、配置路径、引导模式三个方面。我按自己踩过的坑整理成表格,方便你对照:

现象可能原因解决方案
背景图不显示,界面一片黑或只有字符终端处于console模式检查GRUB_TERMINAL,改为gfxterm后重新生成配置
背景图显示但分辨率不对,偏小或拉伸图片分辨率与屏幕不一致用绘图工具按屏幕原生分辨率重新导出
修改后没有任何变化主题加载顺序覆盖了变量设置改用主题内替换,或停用主题
菜单文字看不清文字颜色与背景图撞色设置GRUB_COLOR_NORMAL和GRUB_COLOR_HIGHLIGHT
背景图能显示但很模糊图片本身分辨率过低换用更高分辨率素材,建议不低于屏幕分辨率
图片扩展名是PNG但GRUB报不支持文件实际编码格式不规范用绘图工具重新导出为24位或32位标准PNG
引导变慢背景图文件过大压缩图片到2MB以内,或改用JPG格式
找不到theme.txt主题目录选错用grep从grub.cfg里反查真实theme路径
update-grub报错配置文件语法错误回看/etc/default/grub里有没有写错的变量名或多余的引号

下面挑几个典型问题展开聊聊。

6.1 我的一次真实翻车:路径带中文导致引导异常

有次在给某单位的一体机做定制时,需求方发来的图片名称是“企业文化背景图.png”,我当时想也没想就复制进了/boot/grub/,顺手在配置里写了中文路径。结果update-grub跑完,重启后GRUB界面显示成一片空白,连菜单项都变透明了。

后来排查发现,GRUB的字体加载器在读取中文字符路径时产生了乱码,导致主题字体和背景都没正常加载。我赶紧重启进系统,把文件名改成qiyewenhua_bg.png,配置里同步改掉,重新生成配置,问题才消失。

这事给我的教训是:引导区里能不用中文就不用中文,命令行、配置文件、文件名一律ASCII,稳。

6.2 猜分辨率不如查分辨率

另一回是在一台外接显示器上做验证,屏幕是2560x1440,但我准备的图是1920x1080,结果GRUB背景居中显示,四周留出黑边,虽说不影响使用,但观感很差。

后来我用xrandr查了真实分辨率,重新出图后就完美铺满了。这里额外提醒一下:GRUB初始阶段的默认分辨率不一定等于桌面分辨率,有些主板UEFI固件传参保守,会给GRUB一个比较低的分辨率,比如1024x768。这种情况下就算你放了1920x1080的图,GRUB也只会在能力范围内展示。如果你发现无论如何都铺不满,可以在GRUB启动菜单里按c进入命令行,输入videoinfo查看当前固件支持的分辨率列表,再决定图片该怎么做。

6.3 更新内核后配置被覆盖了

这个问题很隐蔽,值得单独说:如果你修改了/etc/default/grub后忘了执行update-grub,那等你下次更新内核、系统自动帮你重新生成grub.cfg时,你的背景设置可能被“顺带”包含进去——如果设置写对了的话。反过来,如果你手动改了grub.cfg而没有改/etc/default/grub,那么系统一旦执行update-grub,你的手动修改就会丢失,因为grub.cfg本身就是动态生成的,它不是让你手工维护的文件。

所有持久化的自定义项,务必写在/etc/default/grub变量里或/etc/grub.d/的脚本中。这是GRUB配置体系的基本原则,绕过它等于跟系统对着干。

7. 经验总结:这条流程还能怎么延伸

说回文章开头那个需求,背景图定制看着是小事,但整套处理思路其实能延伸到不少相关场景,最后分享几个我常用的延伸玩法,供你按需取用。

7.1 批量部署时的背景定制

企事业单位批量采购的机器往往有几十上百台,一台台手动改配置肯定不现实。这时候思路要换成“无人值守脚本+统一素材包”:

你做一次完整的背景替换,然后把修改后的/etc/default/grub和背景图压缩成一个包,写一个小脚本,批量推送后在每台机器上解压、覆盖、执行update-grub。注意批量前先在测试机上跑一遍素材,确认分辨率适配、颜色对比度达标,不然一个错误配置会铺到所有机器,那才是真正的灾难。

7.2 从背景图到完整GRUB主题

如果你不满足于只换一张图,想连菜单框、字体、位置都定制,那就去研究一下主题目录里的theme.txt。里面可以定义面板、组件、字体大小、对齐方式。麒麟系统自带的主题本身就是一个起点,在它基础上改比从零写主题文件容易得多。改完别忘了对theme.txt做备份,这玩意儿语法敏感,少个引号都能让整个主题失效。

7.3 顺带定制系统启动动画

GRUB界面搞定后,系统内核加载完、桌面环境起来之前,麒麟系统还会显示一个开机动画或logo。这个环节由plymouth负责,它的配置跟GRUB是两套东西,但定制逻辑类似:改图片、改主题、重新生成initramfs。如果你要把开机体验整套统一,GRUB背景、plymouth动画、桌面壁纸三件套要一起定制,整体效果才协调。

讲到这里,这一整套“麒麟系统自定义开机GRUB背景图”的操作就算是通透了。说白了,GRUB背景图定制不是个花哨事,它考验的是你对引导配置体系的理解够不够扎实,以及遇到问题时能不能冷静地把链路一步步排查清楚。希望这篇文章能让你少走一些我走过的弯路,改图时一次成功。要是你还折腾出什么新鲜玩法,欢迎按自己的实践路子继续深入——系统定制这行的乐趣,总是藏在动手之后。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询