logoPonyTechLab

马兆鑫的AI与深度学习博客

Jetson Orin 修改启动画面 Logo(Splash Screen)——超详细教程

默认环境是:

  • 主机:Ubuntu(18.04 / 20.04 / 22.04 都行,一般是 20.04)

  • 工具:NVIDIA SDK Manager + JetPack 5.x/6.x

  • 板子:Jetson Orin 系列(Orin NX / Orin Nano / Orin AGX),通过 USB-C 连接到主机刷机

重点放在 Bootloader Logo + UEFI Logo(上电最早显示的两个画面),最后再给你可选的内核 Logo 修改。


0. 总体思路

  1. 在主机上通过 SDK Manager 安装 JetPack,会生成一个 Linux_for_Tegra 目录。

  2. Linux_for_Tegra/bootloader/ 下用 你的 logo.bmp 替换掉默认的开机 Logo 文件。

  3. 使用 flash.sh 脚本,对板子进行刷写(可以全刷,也可以“复用系统镜像”刷)。

  4. 板子下一次上电,就会显示你的自定义启动 Logo。


1. 在主机上准备环境

1.1 安装 SDK Manager(如果已经有,可以跳过)

在 Ubuntu 主机浏览器里:

  1. 登录 NVIDIA Developer(developer.nvidia.com)。

  2. 下载并安装 sdkmanager_xxx.deb

  3. 在终端安装:

    sudo apt install ./sdkmanager_xxx.deb

1.2 启动 SDK Manager 下载 JetPack

  1. 终端运行:

    sdkmanager
  2. 登录你的 NVIDIA 账号。

  3. 选择:

  • Product Category: Jetson

  • Hardware Configuration: 选择你对应的 Jetson Orin 型号

  • Target Operating System: Linux

  • JetPack Version:例如 JetPack 6.x / 5.x

  • 继续下一步时保证勾选:

    • Host components(主机工具)

    • Target components(目标系统)

  • SDK Manager 会在你的家目录下生成类似:

    ~/nvidia/nvidia_sdk/JetPack_6.x_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra
  • 后面所有操作都在这个 Linux_for_Tegra 目录下进行。


    2. 在主机上找到 Linux_for_Tegra 目录

    终端中:

cd ~/nvidia/nvidia_sdkls

找到类似 JetPack_6.0_Linux_JETSON_ORIN_TARGET 的目录,然后:

cd JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegrapwd

记住这个路径,这就是后面所有命令的“基地”。


3. 准备你的 Logo 图片(在主机上操作)

3.1 准备 Bootloader / UEFI Logo 源图片

建议你准备一张高分辨率 PNG 或 JPG,例如:

  • 分辨率:1920x1080 或与你的屏幕一致

  • 背景色:纯色效果最好

  • 内容:公司 Logo / 项目 Logo / 文本

假设你放在主机的目录:

~/pictures/my_logo.png

3.2 安装图片转换工具

在主机上:

sudo apt update
sudo apt install imagemagick

3.3 转成 24-bit BMP(Bootloader、UEFI 都喜欢这个)

在主机上:

cd ~/pictures
convert my_logo.png -resize 1920x1080\! -depth 8 BMP3:logo.bmp

注意:

  • BMP3 可以确保是标准 BMP3 格式

  • 默认 24-bit(8bit x 3 通道)

之后你会得到:~/pictures/logo.bmp


4. 替换 Bootloader Logo(主机上)

4.1 原始 Bootloader Logo 文件位置

在主机上进入 Linux_for_Tegra

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegrals bootloader

里面一般有一个 logo.bmp,这是 Bootloader 的启动画面。

4.2 备份原始文件(推荐)

cd bootloadercp logo.bmp logo.bmp.bak

4.3 替换为你的 Logo

cp ~/pictures/logo.bmp ./logo.bmp

此时 Bootloader 会使用你的新 logo.bmp


5. 替换 UEFI Logo(主机上)

5.1 找到 UEFI Logo 文件

同样在 bootloader 目录:

ls bootloader | grep uefi

一般会有:

uefi_jetson_logo.bmp

5.2 备份 + 替换

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra/bootloadercp uefi_jetson_logo.bmp uefi_jetson_logo.bmp.bakcp ~/pictures/logo.bmp ./uefi_jetson_logo.bmp

有的版本对分辨率要求不要超过 1920x1080,前面我们已经按这个尺寸处理,一般没问题。


6. 确认你的板子型号代号(主机操作)

刷机脚本 flash.sh 需要一个 “板子代号”,例如:

  • Orin NX devkit:常见为 p3767-0000+p3768-0000

  • Orin Nano devkit:p3767-0003

  • JetPack 6 里也有类似 jetson-orin-nano-devkit 这种名字

6.1 在 flash.sh 帮助里找(推荐)

在主机上:

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra
./flash.sh -h | less

里面会列出一堆支持的 board config,例如:

p3767-0003           Jetson Orin Nano Devkit
p3767-0000+p3768-0000 Jetson Orin NX Devkit
...

记住你对应的那一行,比如:p3767-0000+p3768-0000(后面用 <BOARD> 代表它)。


7. 把板子接入刷机模式(在板子 + 主机上配合)

7.1 连接线缆

  1. 使用 USB-C 数据线 把 Jetson Orin 开发板连接到主机。

  2. 保证电源适配器连接到 Jetson 开发板。

7.2 进入 Force Recovery 模式(不同板子按键略有差异,一般如下)

典型操作(以 Orin NX / Nano 开发板为例):

  1. 断电(关电源开关或拔掉电源线)。

  2. 按住 REC / FORCE RECOVERY 按键不松。

  3. 再按一下 RESET 键或插上电源。

  4. 几秒后松开 REC 键。

7.3 在主机上确认是否进入刷机模式

主机终端中:

lsusb | grep -i nvidia

如果看到类似:

0955:7323 NVIDIA Corp.

说明板子已经处于 recovery 模式,可以刷机。


8. 在主机上执行刷写(使用新 Logo)

重点来了:

你刚才已经在 bootloader 目录,把 logo.bmpuefi_jetson_logo.bmp 换成了自己的 Logo。
接下来刷机时,就会把这两个文件打包进对应分区。

8.1 首次完整刷写(建议至少做一次)

Linux_for_Tegra 根目录:

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra

sudo ./flash.sh <BOARD> mmcblk0p1

例如 Orin NX devkit:

sudo ./flash.sh p3767-0000+p3768-0000 mmcblk0p1
  • mmcblk0p1 表示 eMMC 或 SD 卡上的主系统分区(通常就用这个)。

刷完之后,板子会自动重启,上电时你就能看到新的 Bootloader/UEFI Logo 了。

8.2 以后只想改 Logo,不想重装系统怎么办?

当你下次换了新的 logo.bmp,只想更新启动画面,可以用:

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra

sudo ./flash.sh -r <BOARD> mmcblk0p1

-r 的含义是:

  • 复用前一次生成的 system.img 等镜像文件

  • 你修改了的 bootloader / uefi 相关镜像会被重新打包并刷写

这样不用重新生成整个系统镜像,一般速度会更快一点,对已有系统内容也不会重新 create image(但刷写本身仍然是重新写入)。


9. 在板子上验证效果

  1. 板子刷写完成后,自动重启。

  2. 观察 HDMI/DP 显示器:

  • 上电几秒内出现的画面,就是 Bootloader Logo

  • 随后可能接 UEFI Logo(有些版本与 bootloader 启动画面非常像,看起来差不多)。

  • 如果看到的是你的 Logo,就说明操作成功。


  • 10.(可选)进一步:修改 Linux Kernel 的 Logo(主机上)

    这个适合你想把 Ubuntu 启动时那个紫色 Logo 也换掉。

    10.1 找到 logo 源文件

    在主机 Linux_for_Tegra 里:

cd kernells

一般会有 kernel-5.10/ 或类似目录。

假设是:

cd kernel/kernel-5.10/drivers/video/logols

你会看到:

logo_linux_clut224.ppm
logo_nvidia_clut224.ppm
...

这些是内核编译时用的 Logo 图片(PPM 格式)。

10.2 把 PNG 转成 224 色 PPM

在主机上(用前面那个图片):

cd ~/pictures
convert my_logo.png -resize 800x600\! -colors 224 logo_custom.ppm

10.3 替换内核 Logo 文件

例如替换 logo_linux_clut224.ppm

cp ~/pictures/logo_custom.ppm \
  ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra/kernel/kernel-5.10/drivers/video/logo/logo_linux_clut224.ppm

10.4 在主机上重新编译内核

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra/kernel# 使用 NVIDIA 提供的脚本配置./nvbuild.sh -o $PWD/build

(不同版本可能脚本名略不同,有的是 ./source_sync.sh + 手动 make,原则一样——重新编译生成新的 Image。)

一般目标内核镜像会生成在:

build/arch/arm64/boot/Image

10.5 使用新内核镜像刷写到板子

回到 Linux_for_Tegra 根目录:

cd ~/nvidia/nvidia_sdk/JetPack_6.0_Linux_JETSON_ORIN_TARGET/Linux_for_Tegra

sudo ./flash.sh -k kernel -d kernel/build/arch/arm64/boot/Image -r <BOARD> mmcblk0p1

重启后,Linux 内核阶段的 Logo 也会变成你的图片。


11. 如果你只想简单快速见效,最推荐的组合

对大多数项目 / 展示场景来说:

  • 只改 Bootloader Logo + UEFI Logo 就足够了

  • 步骤就是:

  1. 用 ImageMagick 把你的 PNG 转成 logo.bmp

  2. 替换 Linux_for_Tegra/bootloader/logo.bmp

  3. 替换 Linux_for_Tegra/bootloader/uefi_jetson_logo.bmp

  4. flash.sh 做一次完整刷写

  5. 以后再换 Logo,用 flash.sh -r 即可


avatar

Pony

深度学习爱好者和技术研究者。专注于人工智能、边缘计算及计算机视觉领域的开发与应用。

现居地:陕西省-西安市

Email:zhaoxin.ma@chd.edu.cn

Categories