英伟达Jetson Agx Orin更换开机Logo
首先你需要已经有一套可烧录的Jetson Agx Orin SDK现在只是想要替换英伟达的默认开机Logo。通过搜索发现rootfs目录下是有几张英伟达的图片但是更换后发现开机logo并没有改变只能改变进入ubuntu系统时的logo。通过AI搜索我们知道需要源码编译UEFI固件。但是我们发现可烧录的SDK里并没有源码因此我们需要自己从网上找资源接下来我来详细记录下操作步骤。参考Build with docker · NVIDIA/edk2-nvidia Wiki · GitHub首先我们要有一台宿主机我这边用的Ubuntu22虚拟机先安装docker需要重新登录一下sudo apt install docker.io sudo usermod -a -G docker ${USER} # Log out, log back in接着配置edk2_dockerexport EDK2_DEV_IMAGEghcr.io/tianocore/containers/ubuntu-22-dev:latest export EDK2_USER_ARGS-v \${HOME}\:\${HOME}\ -e EDK2_DOCKER_USER_HOME\${HOME}\ export EDK2_BUILD_ROOT/build export EDK2_BUILDROOT_ARGS-v \${EDK2_BUILD_ROOT}\:\${EDK2_BUILD_ROOT}\ alias edk2_dockerdocker run -it --rm -w \$(pwd)\ ${EDK2_BUILDROOT_ARGS} ${EDK2_USER_ARGS} \${EDK2_DEV_IMAGE}\配置完毕可以试试看有没有成功输出hello即为成功edk2_docker echo hello接下来拉取源码sudo mkdir -p /build sudo chown -R ${USER}:${USER} /build cd /build edk2_docker init_edkrepo_conf edk2_docker edkrepo manifest-repos add nvidia https://github.com/NVIDIA/edk2-edkrepo-manifest.git main nvidia edk2_docker edkrepo clone workspace NVIDIA-Platforms combo /*示例*/ edk2_docker edkrepo clone nvidia-uefi NVIDIA-Platforms main /*我使用的*/ edk2_docker edkrepo clone nvidia-uefi-r36.4.3 NVIDIA-Platforms r36.4.3源码拉取后我们去替换下源码中的logo里面有3张全部替换由于图片有要求 最好按下边的方式进行转换我一开始随意用的图片结果变成黑屏。cd /build/nvidia-uefi-r36.4.3 convert mylogo.png -resize 640x480 -background white -gravity center -extent 640x480 -strip BMP3:nvidiagray480.bmp convert mylogo.png -resize 1280x720 -background white -gravity center -extent 1280x720 -strip BMP3:nvidiagray720.bmp convert mylogo.png -resize 1920x1080 -background white -gravity center -extent 1920x1080 -strip BMP3:nvidiagray1080.bmp cp nvidiagray480.bmp edk2-nvidia/Silicon/NVIDIA/Assets/ cp nvidiagray720.bmp edk2-nvidia/Silicon/NVIDIA/Assets/ cp nvidiagray1080.bmp edk2-nvidia/Silicon/NVIDIA/Assets/logo替换后就是源码编译了这个过程有可能会出现一些报错可以看后边的解决方案edk2_docker edk2-nvidia/Platform/NVIDIA/Jetson/build.sh正常情况下编译完成后会在/build/nvidia-uefi-r36.4.3/images下生成uefi_Jetson_RELEASE.bin用它去替换SDK里bootloader下的uefi_jetson.bin即可然后就可以进行烧录了。报错汇总个人经历仅供参考1.源码拉取报错在拉取代码时由于github网络问题总是拉取不成功强制GIT使用HTTP/1.1后成功git config --global http.version HTTP/1.1 edk2_docker git config --global http.version HTTP/1.12.edk2_docker edk2-nvidia/Platform/NVIDIA/Jetson/build.sh提示找不到但实际是有的改用edk2_docker bash -lc cd $(pwd) bash edk2-nvidia/Platform/NVIDIA/Jetson/build.sh3.报edk2-nvidia/Silicon/NVIDIA/scripts/prepare_stuart.sh: line 29: venv/bin/activate: No such file or directory查看路径确实不对使用软链接调整 ln -sfn local/bin venv/bin edk2_docker bash -lc cd $(pwd) bash edk2-nvidia/Platform/NVIDIA/Jetson/build.sh4.报错ModuleNotFoundError: No module named kconfiglib需要补这个包最稳妥的是装到workspace 自己的 venv 里 edk2_docker bash -lc cd $(pwd) if [ -f venv/bin/activate ]; then . venv/bin/activate else . venv/local/bin/activate fi python -m pip install --upgrade pip python -m pip install kconfiglib14.1.0 python -c import kconfiglib; print(kconfiglib.__file__) bash edk2-nvidia/Platform/NVIDIA/Jetson/build.sh 5.还有报错查了下原因使用下述指令 edk2_docker bash -lc cd $(pwd) unset PYTHONNOUSERSITE export PYTHONPATH$HOME/.local/lib/python3.10/site-packages${PYTHONPATH::$PYTHONPATH} /opt/venv/bin/python3 -c import sys, kconfiglib; print(sys.executable); print(kconfiglib.__file__) bash edk2-nvidia/Platform/NVIDIA/Jetson/build.sh 至此没有再报错生成了UEFI固件。