启动画面(Splash Screen)是指在Linux启动时候显示的图片,通常默认情况下Linux只是输出一些传统的小企鹅图标和启动Console命令行,但嵌入式设备都需要定制自己开机画面,这里就以Toradex ARM计算机模块及其发布Linux 为例对ARM Linux更新启动画面做说明。
1). 配置
开发主机:Ubuntu 14.04 X86_64
目标板:Toradex ARM 计算机模块及自带的Embedded Linux
2). 准备
下载Toradex Embedded Linux 源码包
请按这里说明如何下载及编译Kernel内核
安装相关软件包
----------------------------------------------------------------------------
$ sudo apt-get install gimp
$ sudo aptget install tgif xfonts-100dpixfonts-75dpi
----------------------------------------------------------------------------
3). 创建原始启动画面图片
根据自己的需要利用gimp工具创建合适分辨率的图片,详细说明请见这里。这里将做好的图片命名为“toradexlogo_1024x600.ppm”
4). 修改图片颜色和编码
----------------------------------------------------------------------------
$ ppmquant 224 toradexlogo_1024x600.ppm >toradexlogo_1024x600_224.ppm
$ pnmnoraw toradexlogo_1024x600_224.ppm >toradexlogo_1024x600_ascii_224.ppm
----------------------------------------------------------------------------
5). 将最终图片改为系统默认名字后放置于源码目录下对应位置
----------------------------------------------------------------------------
$ cp toradexlogo_1024x600_ascii_224.ppmlogo_custom_clut224.ppm
$ mv logo_custom_clut224.ppmlinux-kernel/drivers/video/logo/
----------------------------------------------------------------------------
6). 修改编译配置文件
a). linux-kernel/drivers/video/logo目录里面需要修改Kconfig,Makfile和logo.c,如默认已经添加则无需修改。
./ Kconfig 文件添加下面内容
----------------------------------------------------------------------------
configLOGO_CUSTOM_CLUT224
bool "Custom 224-color Linuxlogo"
default n
----------------------------------------------------------------------------
./ Makefile文件添加下面内容
----------------------------------------------------------------------------
obj-$(CONFIG_LOGO_CUSTOM_CLUT224) += logo_custom_clut224.o
----------------------------------------------------------------------------
./ logo.c文件添加下面内容
----------------------------------------------------------------------------
#ifdef CONFIG_LOGO_CUSTOM_CLUT224
/* Custom Linux logo */
logo =&logo_custom_clut224;
#endif
----------------------------------------------------------------------------
b). linux-kernel/include/linux/目录里面,修改linux_logo.h,如默认已经添加则无需修改。
./ linux_logo.h文件添加下面内容
----------------------------------------------------------------------------
extern const struct linux_logologo_custom_clut224;
----------------------------------------------------------------------------
7). 重新编译内核
详细说明请参考这里,这里以ColibriVybrid产品为例,其他模块需改为对应参数。
a). 安装交叉编译Tool Chain,请从这里下载
----------------------------------------------------------------------------
$ tar xvfgcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf.tar.xz
$ ln -sgcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf gcc-linaro
----------------------------------------------------------------------------
b). 配置环境变量
----------------------------------------------------------------------------
$ exportARCH=arm
$ exportPATH=~/gcc-linaro/bin/:$PATH
$ exportCROSS_COMPILE=arm-linux-gnueabihf-
----------------------------------------------------------------------------
c). 生产并修改config文件
----------------------------------------------------------------------------
$make colibri_vf_defconfig //生成默认.config文件
$make menuconfig // 进入Device Drivers -> Graphics support -> Bootup logo -> 选择 "Custom 224-color Linux logo"之后保存。
----------------------------------------------------------------------------
d). 编译新的kernel image
----------------------------------------------------------------------------
make-j3 zImage | tee build.log
----------------------------------------------------------------------------
8). 部署新的image
a). 按如下方法,将原标准Linuximage中的zImage替换为新的定制启动画面的zImage
----------------------------------------------------------------------------
$ cp zImage zImage_custom
$ sudo mv zImage_custom Colibri_VF_LinuxImageV2.x/rootfs/boot/
$ ln -fs /boot/zImage-customzImage
----------------------------------------------------------------------------
b). 按照这里的方法将新的image刷写到目标板
9). 配置目标板
进入uboot,修改下面uboot环境变量,然后重启就可以了
----------------------------------------------------------------------------
$ setenv setup 'setenv setupargsvt.global_cursor_default=0 console=${console},${baudrate}n8 ${memargs}consoleblank=0'
----------------------------------------------------------------------------