默认环境是:
主机: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. 总体思路
在主机上通过 SDK Manager 安装 JetPack,会生成一个
Linux_for_Tegra目录。在
Linux_for_Tegra/bootloader/下用 你的 logo.bmp 替换掉默认的开机 Logo 文件。使用
flash.sh脚本,对板子进行刷写(可以全刷,也可以“复用系统镜像”刷)。板子下一次上电,就会显示你的自定义启动 Logo。
1. 在主机上准备环境
1.1 安装 SDK Manager(如果已经有,可以跳过)
在 Ubuntu 主机浏览器里:
登录 NVIDIA Developer(developer.nvidia.com)。
下载并安装
sdkmanager_xxx.deb。-
在终端安装:
sudo apt install ./sdkmanager_xxx.deb
1.2 启动 SDK Manager 下载 JetPack
-
终端运行:
sdkmanager
登录你的 NVIDIA 账号。
选择:
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-0000Orin Nano devkit:
p3767-0003JetPack 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 连接线缆
使用 USB-C 数据线 把 Jetson Orin 开发板连接到主机。
保证电源适配器连接到 Jetson 开发板。
7.2 进入 Force Recovery 模式(不同板子按键略有差异,一般如下)
典型操作(以 Orin NX / Nano 开发板为例):
断电(关电源开关或拔掉电源线)。
按住 REC / FORCE RECOVERY 按键不松。
再按一下 RESET 键或插上电源。
几秒后松开 REC 键。
7.3 在主机上确认是否进入刷机模式
主机终端中:
lsusb | grep -i nvidia
如果看到类似:
0955:7323 NVIDIA Corp.
说明板子已经处于 recovery 模式,可以刷机。
8. 在主机上执行刷写(使用新 Logo)
重点来了:
你刚才已经在 bootloader 目录,把 logo.bmp 和 uefi_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. 在板子上验证效果
板子刷写完成后,自动重启。
观察 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 就足够了
步骤就是:
用 ImageMagick 把你的 PNG 转成
logo.bmp替换
Linux_for_Tegra/bootloader/logo.bmp替换
Linux_for_Tegra/bootloader/uefi_jetson_logo.bmp用
flash.sh做一次完整刷写以后再换 Logo,用
flash.sh -r即可
PonyTechLab