采用netpbm工具生成想要替换的logo
sudo apt install netpbm
sudo apt-get install imagemagick
压缩图片大小
convert -resize 80% 1440×9200.png 1440×9200.png
转换图片格式
convert filename.jpg filename.bmp
Linux Kernel引导启动后,加载该图片,涉及到的代码在如下的目录中
让内核支持启动LOGO
在内核目录中 make menuconfig
Device Drivers ----> Graphics support ---->
选中 Bootup logo ----> Standard 224-color Linux logo
kernel-5.10/driversideo/logo
kernel/driversideo/logo/logo_linux_clut224.ppm
png格式
pngtopnm logo.png > logo.pnm
bmp格式
bmptopnm logo.bmp > logo.pnm
下面步骤一致
pnmquant 224 logo.pnm > logo224.pnm
pnmtoplainpnm logo224.pnm > logo_linux_clut224.ppm
以上转换完成后,将生成的logo_linux_clut224.ppm放入
kernel/driversideo/logo/路径下(会替换原有的logo_linux_clut224.ppm),在编译时会生成对应的.c 文件和.o文件,可能会出现如下错误:
kernel/driversideo/logo/logo_linux_clut224.ppm: Binary PNM is not supported
Use pnmnoraw(1) to convert it to ASCII PNM
以上错误是因为ppm图片是bin格式,需要转换成ASCII格式,方法如下:
pnmnoraw logo_linux_no_ascii_clut224.ppm > logo_linux_clut224.ppm
make menuconfig
调整kernel logo的显示位置
默认是左上角对齐,调整为中心对齐的方法如下:
修改driversideo/fbmem.c文件的fb_show_logo_line()函数:
frameworks/base/cmds/bootanimation/BootAnimation.cpp
Android开机动画
zip -r -X -Zstore ../bootanimation part*/*.png desc.txt
400 800 18
p 1 0 part0
#400 800 为图片的分辨率 400*800
#18为每秒显示图片的张数,也就是18fps/S
#p代表定义一个部分。
#p后面的第一个数是重复播放这一部分次数。如果这个数为0,就无限循环播放
#p后面第二个数是播放下一个部分前的延迟帧数
#字符串定义了加载文件的路径
/system/media/bootanimation.zip
1.谷歌系列Android机型群
2.Android系统定制项目交流群
3.Android安全研究技术交流群

原文始发于微信公众号(哆啦安全):Android Kernel开机Logo
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论