开机 LOGO¶
Note
- Allwinner 平台 Uboot、Kernel 两个阶段显示 LOGO,
bootlogo.bmp为 Uboot 阶段,bootlogo_kernel.bmp为 Kernel 阶段。 - Rockchip 平台 Uboot、Kernel 两个阶段显示 LOGO,
logo.bmp为 Uboot 阶段,logo_kernel.bmp为 Kernel 阶段。 - LOGO 分辨率必须小于或等于显示屏分辨率。
- 替换的 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.service、sudo journalctl -u psplash.service - Logo 显示异常:确保 PNG 格式,重新生成
./make-image-header.sh logo.png POKY