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 主题就足够了。您可以使用 cpiogfxboot 来访问归档。这两种方法都将在下面描述。

如前所述,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


屏幕尺寸

启动屏幕为 1152x864。

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 打印菜单标签的方式

  1. 它将下划线 ('_') 替换为空格(lilo 和 isolinux 不允许标签中出现空格);如果您不想这样做,请将其关闭(gfxboot --change-config _2space=0
  2. 如果您需要菜单的翻译,您可以创建由原始文本和翻译交替行组成的 translations.<locale> 文件。例如
# cat translations.de_DE
install_xxx
Installiere XXX
install_foo
Installiere Foo

请注意,使用第二种方法,您几乎肯定需要一个 translations.en 文件。

参见

SDB:KIWI Cookbook Splash Screen 描述了设置启动过程自定义启动屏幕的过程。

GitHub 上的代码 请参阅 GitHub 上的源代码。