教程:Raspberry Pi树莓派上的自定义动态开机画面

指南:Raspberry Pi上的自定义动态开机画面,Raspbian Jessie

互联网上有许多指南在Linux上创建自定义启动屏幕,但大多数Raspbian都基于SysV init,并且不能与Raspbian现在使用的systemd接口良好。因此,我已经写了这个指南,直接将简单的init风格的splash屏幕移植到systemd,以便快速简便的解决方案来覆盖Raspberry Pi上的开机画面。

教程:Raspberry Pi树莓派上的自定义动态开机画面

静态

首先,我们要从启动过程中删除尽可能多的文本,以允许干净的转换。

通过将行添加

disable_splash=1

到/boot/config.txt来禁用Raspberry Pi’颜色测试’ 。

通过添加

logo.nologo

到/boot/cmdline.txt来禁用屏幕角落的Raspberry Pi标志。

通过添加

consoleblank=0 loglevel=1 quiet

到/boot/cmdline.txt来禁用内核等各种输出位。

通过

systemctl disable getty@tty1

以root 身份运行来禁用登录提示。

设置启动屏幕

设计您的闪屏图像并将其放置在易于阅读的位置。

安装fbi,framebuffer图像查看器,以root身份运行。

sudo apt-get install fbi

创建具有以下内容的文件/etc/systemd/system/splashscreen.service:

|
[Unit]  描述=Splash screenDefaultDependencies=no After=local-fs.target  [Service] ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /opt/splash.png StandardInput=tty StandardOutput=tty  [Install] WantedBy=sysinit.target

|

根据需要,更换/opt/splash.png静态开机画面图像的存储路径。

-d /dev/fb0

选项将告诉fbi哪个帧缓冲区显示图像。

–noverbose

将屏幕底部的fbi’状态栏’。-a将允许fbi自动选择图像的正确缩放级别。如果您的图像已经处于正确的显示分辨率,则可以省略此选项。FBI希望获得一个TTY,所以StandardInput和StandardOutput选项将允许这一点。您也可以省略这些选项,并将-T标志传递给fbi,指定要使用的tty的编号。

该DefaultDependencies选项将覆盖systemd在启动过程中延迟启动服务的默认行为(因为大多数普通服务需要访问资源),并且该WantedBy选项将导致fbi在引导过程的早期加载,已经准备好了,通过

通过以root用户身份运行

systemctl enable splashscreen,使服务在引导时运行。

您现在可以通过

systemctl start splashscreen

以root用户身份运行,或只需重新启动Pi 即可测试。

删除黑色边框

您可能会碰到这样一个问题,那里似乎是一个黑色的边框画在闪屏旁边。这实际上是整个帧缓冲区周围的硬件级黑色边框,可以通过添加

disable_overscan=1

到/boot/config.txt来禁用。

动态开机画面

在我的情况下,上述过程工作正常,但是由于我已经将系统设置为自动启动到Kodi,并且Kodi在重新显示启动屏幕本身之前将屏幕黑白地短暂显示,这样会产生刺耳的效果。我的解决方案是用黑色背景上的简单加载屏幕替换第一个闪屏,从而为转换创造更平滑,更真实的感觉。但静态加载屏幕中的乐趣在哪里?

fbi不支持动画,我们将利用专门的,被低估的工具bannerd,不幸的是在存储库中不可用,因此必须从源代码编译。幸运的是,这似乎是很直截了当的:

git clone https://github.com/alukichev/bannerd.gitcd bannerd

然后将新创建的bannerd二进制文件复制到易于阅读的位置,如/ usr / local / bin / bannerd,并确保它是可执行的。

现在,我们需要将动画转换成一系列BMP文件。用GIF动画编辑器将视频生成GIF

教程:Raspberry Pi树莓派上的自定义动态开机画面

然后用GIF分离器将动态图分离出许多的bmp文件。这些文件放在一个文件夹里上传到树莓派。

教程:Raspberry Pi树莓派上的自定义动态开机画面

将BMP文件复制到易于访问的位置。

现在,可以通过更改ExecStart行来轻松调整来自较早版本的systemd服务:

ExecStart=/bin/sh -c '/usr/local/bin/bannerd/bannerd -vD /path/to/frames/*.bmp'

调用sh是扩展glob的必要条件。

如前所述,您可以通过运行

systemctl start splashscreen

或重新启动来测试启动屏幕。启动的演示视频可以到主页的视频里找到。

原文始发于:教程:Raspberry Pi树莓派上的自定义动态开机画面

|

发表评论