Jetson Nano的启动图标分为两个部分,一个图标位于cboot内,注意不是uboot logo;一个在内核启动后文件系统内。
一、 cboot logo替换
Jetson Nano的cboot logo需要一种特殊格式的图片文件;
制作之前,需要下载英伟达的BSP驱动包和源码包(上一篇中);
1、 进入到工具目录
cd /Linux_for_Tegra/tools/bmp-splash
2、 编辑config
编辑config_file.example文件,并重命名为config_file,将里面的内容:
nvidia480.bmp nvidia 480;
nvidia720.bmp nvidia 720;
nvidia1080.bmp nvidia 1080
修改成自己的文件名字,例如
12.bmp nvidia 480;
12.bmp nvidia 720;
12.bmp nvidia 1080
如果要自己重写,需要在每行后面增加分号,除了最后一行。
将自定义图片(必须是24BPP的BMP图片)放在当前文件夹;
可以在linux下使用file指令查看文件格式;
3、 生成
运行指令:
OUT=$PWD ./genbmpblob_L4T.sh t210 ./config_file ./BMP_generator_L4T.py /usr/bin/lz4c my-bmp.blob
注意需要安装一个压缩工具包:
sudo apt-get install liblz4-tool
4、 替换
重命名my-bmp.blob,替换原Linux_for_Tegra/bootloader/bmp.blob文件
5、烧录
单独烧录:
sudo ./flash.sh -r -k BMP
官方工具里面是上述的提示,但是如果使用上面命令则会有错误如下:
*** Error: missing BMP image. Use option --image to specify the image to be flashed.
所以,正确的指令需要指定image的位置,如下:
nano的为:
sudo ./flash.sh -r -k BMP --image bootloader/bmp.blob jetson-nano-qspi-sd mmcblk0p1
二、内核设置
1、内核日志输出
Jetson Nano的内核日志会默认从串口和屏幕输出,如果要禁止从屏幕输出可以通过设置cbootargs来重定向输出流,两个方式:
①:nano启动以后,进入板子的/boot/extlinux/目录,编辑extlinux.conf文件
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
INITRD /boot/initrd
APPEND ${cbootargs} quiet root=/dev/mmcblk0p1 rw rootwait rootfstype=ext4 console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0
将console=tty0删除。
② 上面的修改可能不起作用,然后可以尝试修改设备树
在bsp的驱动包里,
cd /Linux_for_Tegra
然后编辑p3448-0000.conf.common文件
找到
CMDLINE_ADD="console=ttyS0,115200n8 console=tty0 fbcon=map:0 net.ifnames=0";
将console=tty0删除,重新编译设备树或者内核,烧录系统;
2、修补内核启动空白
经过上面步骤,可以显示自己的logo图片了,但是在内核启动的时候,即使将tty0去掉了,还是会有几行logo,并且会有一段内核启动的黑屏时间,我们要填补这部分黑屏时间,可以修改内核配置。
参考上一篇的内核裁剪
将.config文件中的
CONFIG_FRAMEBUFFER_CONSOLE=y
设置成n;即禁止内核启动的时候刷新logo显示的buffer,使得boot段的启动logo得以保存一直显示。
重新编译内核,并把内核上传的nano板子的boot目录下,覆盖Image文件。
3、修改内核启动logo
nano的内核启动起来会调用位于/usr/share/backgrouds/目录下的png图片作为开机logo
,这里有很多文件,有些是黑色底色,透明图标的,我们如果只修改显示的部分,可以只将NVIDIA_Login_Logo.png这个图片替换。重新开机即可看到新的图标;
4、禁用开机logo
如果开机不想进桌面,可以直接进命令行
命令:
sudo systemctl set-default multi-user.target
但是,这可能导致一些图形界面的程序无法正确运行。