完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
作者:kid
在基于linux的嵌入式仿真平台开发中,终端的美观和可定制是一个重要的问题。开机时滚动在屏幕上的字符串和单调的penguin图标,使嵌入式设备仍然脱离不了pc的痕迹,linux控制台上单调的“白纸黑字”型表现方式可谓大煞风景。改造linux控制台使之美观可定制地展示开机信息和logo成为基于嵌入式linux应用的一项重要工作。 开源项目bootsplash(http://www.bootsplash.org/)为解决这个问题提供了一个完美的解决方案。Boot-splash通过对内核打补丁来改变linux framebuffer控制台对图形显示的支持。通过用户空间程序来定制启动logo、设定控制台背景和显隐启动时的字符信息,甚至可以支持开机画面的动画显示。本文介绍利用splashboot打造启动画面的解决方案,涉及内核补丁、用户空间设置等方面的具体工作。 |
|
相关推荐
4个回答
|
|
1 内核补丁和控制工具
1.1 支持bootsplash的内核补丁 针对不同的内核版本,bootsplash站点上给出了相应的内核补丁。我们所使用的内核版本为2.4.23,下载并给内核打上补丁: cd /usr/src/linux make mrproper patch -Np1 -i ../bootsplash-3.0.7-2.4.23.diff 重新编译内核: make menuconfig 选上如下的几个参数: Code maturity level options ---> Prompt for development and/or incomplete code/drivers Block devices ---> RAM disk support Block devices ---> Initial RAM disk (initrd) support Console drivers ---> Video mode selection support Console drivers ---> Frame-buffer support ---> Support for frame buffer devices VESA VGA graphics console Use splash screen instead of boot logo 然后编译内核: make dep && make bzImage 再把生成的内核拷贝到/boot下: cp arch/i386/boot/bzImage /boot/linux-bootsplash 这样我们得到的新内核bzImage就是支持bootsplash的内核了,剩下的工作就是对bootsplash的定制了。 |
|
|
|
1.2 安装用户空间程序
下载bootsplash工具,解压安装: tar –zxf bootsplash-3.0.7.tar.gz cd bootsplash-3.0.7/Utilities make cp fbresolution fbmngplay fbtruetype splash /***in/ 这样完成了对用户空间工具的安装,其实bootsplash分别利用如下的四个程序:splash程序是将需要在framebuffer下显示的图片资源制作成启动ram盘的工具;fbmngplay读mng文件,播放动画;fbtruetype显示truetype字体;fbresolution检查分辨率。后面提到的脚本,只是以不同参数来读取配置文件,调用上面的这几个程序。 |
|
|
|
2 开机LOGO的定制
2.1 设置splash屏幕的主题 前面安装好的splash用户空间程序中有一个程序splash,它需要一个配置文件来指明使用哪个图片、要不要隐藏文本信息的输出等。可以看出“theme”就是splash工具需要的配置文件、图片和其他所需要的文件的集合。有很多已经准备好的theme可供挑选,我们也可以定制theme。为了方便起见,我们下载theme-Linux.tar.bz2并以它为theme。 建立目录/etc/bootsplash/themes,解压Theme- Linux.tar.bz2到这个目录下,现在的目录结构应该是: /etc/bootsplash/themes/Linux 读者朋友可以看看该目录下的bootsplash-1024x768.cfg来观察配置文件的格式。这个简单的文件包含的选项不多,事实上它只是清楚地表明应该显示哪幅图片、控制台显示文本的颜色和背景色以及文本信息输出的位置区域。另外,不要忘了它还可以分别指定verbose和silent模式下显示文件的位置。Silent模式禁止显示启动信息,代之以一个可选的进度条(这需要关于A外包脚本的更多设置)。基于这个配置文件,你可以自己修改以显示自己喜欢的图片和采用自己喜欢的模式。 |
|
|
|
2.2 利用splash小工具安装splash主题到initrd
在系统启动的早期阶段,内核还不能读写硬盘。这个阶段要显示图片,那么图片放在什么地方那?答案是把图片写到ramdisk里,这样在启动的时候才能读到,因为这时候还没有加载分区呢。当然不用担心initrd的制作,splash小工具能轻松搞定。Splash小工具能根据基于你选择的配置文件(theme)来自动产生一个initrd。所要做的就是执行如下命令: splash -s -f /etc/bootsplash/themes/arch/config /arch-1024-boot.cfg /boot/initrd.splash 生成的initrd.splash就是一个新的initrd。在GRUB或LILO中加入它就可以了。 按如下的方法修改GRUB或LILO: 在GRUB中加入或修改下面的行: kernel (hd0,3)/boot/vmlinuz−2.4.21−melenas root=/dev/hda4 vga=791 splash=silent initrd (hd0,3)/boot/initrd.splash 在LILO中加入或修改下面的行: vga=791 initrd=/boot/initrd.splash append=splash=silent 来看看这几行的意义: vga=791: boot splash 将在1024x768 分辨率和65000 色 (16 位色)下显示。Framebuffer的设定要根据我们所使用的theme的分辨率和颜色深度来选择。 splash=silent: 在silent模式下显示boot splash. 如果你希望用vebose模式,只需删除此行即可。Verbose模式是缺省模式。 initrd=/boot/initrd.splash: 这行将initrd.splash调入启动ram盘(图片存于其中)。 更新LILO或GRUB后,就可以看到精美的启动画面。 |
|
|
|
只有小组成员才能发言,加入小组>>
702 浏览 0 评论
1111 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2654 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
656浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
786浏览 6评论
632浏览 5评论
674浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 20:16 , Processed in 1.119785 second(s), Total 57, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号