跳转至

开机 LOGO

Note

  1. Allwinner 平台 Uboot、Kernel 两个阶段显示 LOGO,bootlogo.bmp 为 Uboot 阶段,bootlogo_kernel.bmp 为 Kernel 阶段。
  2. Rockchip 平台 Uboot、Kernel 两个阶段显示 LOGO,logo.bmp 为 Uboot 阶段,logo_kernel.bmp 为 Kernel 阶段。
  3. LOGO 分辨率必须小于或等于显示屏分辨率。
  4. 替换的 LOGO 格式需与原图一致(例如bmp、bit 位等参数)。

LOGO 路径

Allwinner

Allwinner 平台 LOGO 位于 device/config/chips/<chip>/ 下,文件名为 bootlogo.bmp(Uboot 阶段)。

// a733-linux
device/config/chips/a733/configs/demo_aiot/bootlogo.bmp
// a733-android13.0
longan/device/config/chips/a733/configs/demo_aiot/bootlogo.bmp

// a133-linux
device/config/chips/a133/configs/c3/android/bootlogo.bmp

// t527-linux
device/config/chips/t527/boot-resource/boot-resource/bootlogo.bmp
// t527-android13.0
longan/device/config/chips/a527/boot-resource/boot-resource/bootlogo.bmp

// t113-linux
device/config/chips/t113/configs/evb1_auto/ubuntu/bootlogo.bmp

Rockchip

Rockchip 平台 LOGO 位于内核源码根目录下,每个 SDK 仅有一组,同 SDK 内所有板卡共用。

// rk356x-linux
kernel/logo.bmp
kernel/logo_kernel.bmp

// rk-linux6.1
kernel-6.1/logo.bmp
kernel-6.1/logo_kernel.bmp

// rk-android13.0
kernel-5.10/logo.bmp
kernel-5.10/logo_kernel.bmp

// rk3576-linux、rk3576-android14.0
kernel-6.1/logo.bmp
kernel-6.1/logo_kernel.bmp

psplash 用户空间开机画面

psplash 是嵌入式 Linux 的轻量级开机画面工具,用于显示静态 Logo 和进度条。

编译

# 安装依赖
sudo apt update
sudo apt install build-essential autoconf automake libtool git libgdk-pixbuf2.0-dev -y

# 下载源码
git clone git://git.yoctoproject.org/psplash
cd psplash

# 创建 autogen.sh
cat > autogen.sh << 'EOF'
#!/bin/bash
aclocal
autoheader
automake --add-missing
autoconf
EOF
chmod +x autogen.sh

# 编译
./autogen.sh
./configure --host=arm-linux
make

# 测试运行
sudo ./psplash

替换 Logo

# 方式一:直接替换默认图片
./make-image-header.sh psplash-poky.png POKY
make clean && make

# 方式二:自定义文件名
./make-image-header.sh logo.png POKY

# 方式二需要修改源码中的头文件引用:
--- a/Makefile.am
+++ b/Makefile.am
-                 psplash-poky-img.h psplash-bar-img.h $(FONT_NAME)-font.h
+                 logo-img.h psplash-bar-img.h $(FONT_NAME)-font.h

--- a/psplash.c
+++ b/psplash.c
-#include "psplash-poky-img.h"
+//#include "psplash-poky-img.h"
+#include "logo-img.h"

配置开机启动

1. 创建启动脚本 /etc/init.d/psplash.sh

#!/bin/sh
export TMPDIR=/mnt/.psplash
mount tmpfs -t tmpfs $TMPDIR -o,size=40k
/usr/bin/psplash --angle 0 &

2. 创建 systemd 服务 /usr/lib/systemd/system/psplash.service

[Unit]
Description=Psplash Boot Logo
DefaultDependencies=no

[Service]
ExecStart=/etc/init.d/psplash.sh
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target

3. 部署并启用:

sudo cp psplash /usr/bin/
sudo chmod 755 /usr/bin/psplash /etc/init.d/psplash.sh
sudo systemctl enable psplash.service

其他定制

禁用进度条和启动信息:

--- a/psplash-config.h
+++ b/psplash-config.h
-#define PSPLASH_STARTUP_MSG ""
+//#define PSPLASH_STARTUP_MSG ""

-#define PSPLASH_SHOW_PROGRESS_BAR 1
+//#define PSPLASH_SHOW_PROGRESS_BAR 1

关闭内核 Framebuffer 控制台日志(避免覆盖开机画面),以 H618 平台为例:

--- a/longan/kernel/linux-4.9/arch/arm64/configs/linux_h618_defconfig
+++ b/longan/kernel/linux-4.9/arch/arm64/configs/linux_h618_defconfig
+CONFIG_VT_HW_CONSOLE_BINDING=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER=y

常见问题

  • 编译报错 "command not found":安装依赖 sudo apt install build-essential autoconf automake libtool -y
  • 运行后屏幕无显示:检查 ls -l /dev/fb0,确认 Framebuffer 设备存在
  • 开机启动不生效:检查 sudo systemctl status psplash.servicesudo journalctl -u psplash.service
  • Logo 显示异常:确保 PNG 格式,重新生成 ./make-image-header.sh logo.png POKY