SDB:Gfxboot
概述
openSUSE 中的图形化启动屏幕是常规基于文本的引导加载程序 grub、lilo 和 isolinux 的扩展。从用户角度来看,它们之间没有可见的区别。本文描述了如何配置和修改启动屏幕。
您需要软件包 gfxboot(通常已安装在 openSUSE 上),对于下面的一些示例,您将需要 gfxboot-devel、qemu 和 syslinux。
使用图形化启动屏幕
引导加载程序(例如 grub)已适配支持图形和动画。图形和动画包含在归档文件 /boot/message 中,当然,前提是引导加载程序使用的分区已挂载到 /boot。兼容的引导加载程序将根据其配置文件自动找到 /boot/message。
gfxboot 主要通过 /boot/message 文件工作
- 根据 /usr/share/gfxboot/themes 中找到的主题进行更新
- 管理 /boot/message 归档文件中的配置文件 gfxboot.cfg 的内容
需要 gfxboot-devel 软件包和虚拟机提供程序软件包(例如 qemu)来开发和测试新主题。
openSUSE [在 11.0] 中只提供了 2 个主题,即 openSUSE 和上游主题。
openSUSE 主题
此主题功能齐全,包含倒计时动画和随机出现的企鹅动画,其出现概率可在 0 到 100% 之间设置。[要查看企鹅动画,请在 /boot/message 归档中的 gfxboot.cfg 文件中将 penguin=1 设置为如下所述并重新启动]。openSUSE 主题也与 gfxboot-devel 软件包一起编译。
上游软件包
这是一个部分主题,包含可使用 gfxboot 替换 openSUSE 主题的替代图形。它不与 gfxboot-devel 软件包一起编译。
决定如何配置您的启动屏幕
单用户环境
在单用户环境中,使用打包在 /boot/message 中的默认 openSUSE 主题就足够了。您可以使用 cpio 或 gfxboot 来访问归档。这两种方法都将在下面描述。
如前所述,openSUSE 主题已经附带了您可能不需要的功能,例如企鹅动画。可以通过编辑 /boot/message 归档中的 gfxboot.cfg 来禁用企鹅,您可以通过在 cpio 归档中添加或替换文件并相应地编辑 gfxboot.cfg 来设置自己的背景。
这可能足以让大多数用户实现所需的启动屏幕。
企业品牌环境
企业品牌可能需要
- 更复杂的启动屏幕
- 足够多的安装量以证明投入的合理性
gfxboot-devel 将允许创建一些复杂的动画。例如 openSUSE 主题中的企鹅动画。
gfxboot-devel 的完整描述需要单独的文章。但是,在没有此文章的情况下,可用的信息资源是
- /usr/share/gfxboot/themes 中的 openSUSE 主题,它在 gfxboot-devel 下编译
- /usr/share/doc/packages/gfxboot-devel 中的编程手册,它涵盖了语法,但没有关于创建主题过程的概述信息
使用 gfxboot-devel 创建新主题不适合胆小者。但是,如果您有编程技能,您可以通过使用 openSUSE 主题中的 Makefile 从命令行开始。
cd /usr/share/gfxboot/themes/openSUSE make
激活启动屏幕
启动屏幕是一个 cpio 归档,通常在已安装的系统中是 /boot/message,在 DVD 上是 /boot/i386/loader/bootlogo。此归档必须包含 gfxboot 所需的所有文件(使用 isolinux 时除外,请参见下文)。
grub
在 /boot/grub/menu.lst 中添加一行,例如:
gfxmenu (hd0,1)/boot/message
到 /boot/grub/menu.lst。
lilo
添加
message=/boot/message
到 lilo.conf。lilo 会自动检测 /boot/message 是纯文本文件还是 gfxboot 归档。
isolinux
isolinux 是 DVD 上使用的引导加载程序。与 grub 和 lilo 的主要区别在于 gfxboot 可以直接从 DVD 读取文件。因此,并非所有文件都必须在 gfxboot cpio 归档中。只有 gfxboot 核心(通常命名为 init)需要。
例如,添加
gfxboot bootlogo
到 isolinux.cfg。
gfxboot 归档
gfxboot 归档 /boot/message 是一个普通的 cpio 归档。原则上您可以使用以下命令查看它
cpio -tv </boot/message
使用以下命令将其解压到当前目录
cpio -i </boot/message
并使用以下命令重新打包
find . | cpio -o >/boot/message
但为了简化操作,有一个 gfxboot 工具。以下是一些基本命令
- 列出 gfxboot 归档(默认为 /boot/message)
gfxboot --ls
- 添加或替换文件(例如背景图像)
gfxboot --add-files back.jpg
- 查看文件(例如配置文件)
gfxboot --show-file gfxboot.cfg
- 上述的简写
gfxboot --show-config
还有更多命令。尝试 gfxboot --help 获取完整列表。
DVD 上的 gfxboot
如前所述,使用 isolinux 的优点是 gfxboot 可以直接从 ISO9660 文件系统读取文件(注意:没有 Rock Ridge 扩展)。在这种情况下,您可以将包含 gfxboot 文件的目录作为参数传递给 gfxboot。
例如,要尝试新的背景图片,您可以这样做
gfxboot -a cd/boot/i386/loader --add-files back.jpg -b isolinux --test --preview
归档大小限制
gfxboot 目前为自身保留 8 MB。归档在启动时加载到此内存中。因此,它应该略小于 8 MB,以便为 gfxboot 留下足够的可用工作空间。
旧版本的 gfxboot 有更严格的内存限制。但我希望 8 MB 足以满足典型用例。
gfxboot 配置文件
可以通过编辑 gfxboot 配置文件 gfxboot.cfg 来修改许多内部变量。该文件使用典型的 INI 文件语法。如果您不想直接编辑它,gfxboot 提供了一些选项来帮助您
- 打印完整的配置文件
gfxboot --show-config
- 更改条目('boot' 部分中的变量 'beep')
gfxboot --change-config boot::beep=0
- 删除整个部分
gfxboot --rm-section 800x600
请注意,没有创建部分的选项。当您向其中添加变量时,会自动创建部分。请参阅下面的屏幕尺寸示例。
修改启动屏幕
gfxboot 带有不同的主题。为了节省空间,/boot/message 不包含所有文件(例如,并非所有翻译)。主题的完整文件集安装在 /usr/share/gfxboot/themes/<theme> 中。但是,如果您只是使用 gfxboot 更新 /boot/message,那么大多数有用的文件可以在 /etc/bootsplash/themes 中找到,尽管 bootsplash 文件旨在在内核启动时提供图形屏幕和控制台登录屏幕。
测试您的更改
您可能不想重新启动来查看您的最新更改。幸运的是,gfxboot 内置了一个测试功能。必须安装虚拟机才能使其工作(qemu 效果最好,但也支持 vmware、vbox 或 bochs)。
只需将 --preview 添加到您的 gfxboot 命令中。这将获取您的启动屏幕,组建一个迷你系统并在虚拟机中运行它。
如果您同时添加 --test,则不会对您的原始启动屏幕配置进行任何更改。
例如
gfxboot --change-config penguin=100 --test --preview
显示企鹅主题,而不修改 /boot/message。
主题
如果您安装了多个主题,可以通过运行以下命令切换到主题 foo
gfxboot --update-theme foo
语言
支持相当多的语言,但并非所有语言都已添加到 gfxboot 存档中。
gfxboot --add-languages de_DE fr_FR ja_JP --default-language ja_JP
添加德语、法语和日语,并将默认语言设置为日语。
键盘映射
要切换到捷克语键盘映射,请执行
--change-config keymap=cs_CZ
背景图片
背景图片名为 back.jpg。您可以直接替换它(必须是 jpeg 图像)
gfxboot --add-file back.jpg
菜单位置
也许您更喜欢菜单靠左
gfxboot --change-config 800x600::mainmenu.pos=70,10
菜单大小
通常,一次只显示 8 个条目(您可以滚动查看更多)。如果您想要更多,例如
gfxboot --change-config mainmenu.entries=12
颜色
也许黄色看起来更好(颜色是 24 位 RGB 值)
gfxboot --change-config mainmenu.normal.fg=0xffff00
字体
如果您想让字体包含所有受支持语言的字形,则替换字体有点棘手。但是,如果您只需要典型的欧洲文字,则非常容易
- 首先,安装 gfxboot-devel 软件包
- 然后运行,例如
gfxboot-font -v -c ISO-8859-15 -f planetbe:size=24 big.fnt >big.log
这会从字体“Planet Benson 2”中获取字形。您可以使用 FreeType 2 可以渲染的任何字体。请注意,您必须将实际文件名作为参数,而不是字体名称。在这种情况下是 free-ttf-fonts 软件包中的 planetbe.ttf。
日志文件对于调试很有用。它显示了字形取自哪个字体以及它们的外观。
现在您有了新字体,您可以使用它了
gfxboot --change-config font.large=big.fnt 800x600::mainmenu.pos=200,50
屏幕尺寸
gfxboot 依赖 VESA 视频 BIOS 来设置视频模式。因此请注意,并非您在 KDE 或 GNOME 桌面上拥有的所有屏幕尺寸都可用。如有疑问,请检查
hwinfo --framebuffer
以获取模式列表。gfxboot 优先选择 24 位模式,但如果没有合适的 24 位模式可用,则会回退到 16 位模式。
在 gfxboot.cfg 中为您的新屏幕尺寸创建一个新部分
gfxboot --change-config 1152x864::screen.size=1152,864 1152x864::mainmenu.pos=400,200 1152x864::bootopt.pos=200,750 gfxboot --change-config layout=1152x864,boot # or layout=1152x864,install if for DVD
菜单条目
如果您查看上面的图片,您会看到尽管 isolinux.cfg 只有像 rescue 这样的标签,但图形屏幕显示的是 Rescue System。这是因为它有一个内部菜单条目字符串列表,它应该替换这些字符串。
如果您不想重新编译主题,有两种方法可以影响 gfxboot 打印菜单标签的方式
- 它将下划线 ('_') 替换为空格(lilo 和 isolinux 不允许标签中出现空格);如果您不想这样做,请将其关闭(gfxboot --change-config _2space=0)
- 如果您需要菜单的翻译,您可以创建由原始文本和翻译交替行组成的 translations.<locale> 文件。例如
# cat translations.de_DE install_xxx Installiere XXX install_foo Installiere Foo
请注意,使用第二种方法,您几乎肯定需要一个 translations.en 文件。
参见
SDB:KIWI Cookbook Splash Screen 描述了设置启动过程自定义启动屏幕的过程。
GitHub 上的代码 请参阅 GitHub 上的源代码。



