zoukankan      html  css  js  c++  java
  • 内核修改Android 启动过程logo修改

    在本文中,我们主要介绍内核修改的内容,自我感觉有个不错的建议和大家分享下

        这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库

        执行:apt-get install netpbm

        对于Android系统最开始表现logo是在内核当中,所以首先我们要修改内核中的logo.

        .内核中相关修改

        编译linux内核logo制造脚本mklogo.sh,内容如下:

    #!/bin/sh
    pngtopnm logo.png > linuxlogo.pnm
    pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
    pnmtoplainpnm linuxlogo224.pnm > logo_linux_gzsd_clut224.ppm
    rm linuxlogo.pnm linuxlogo224.pnm

        将你选好的logo转换成png格式,定名为logo.png并与mklogo.sh放在统一路径下.
    执行./mklogo.sh最后生成logo_linux_gzsd_clut224.ppm

        这个定名可以自由变动,但是必须遵守logo_yourname_type这类定名方法,这里仅罗列*_clut224.ppm的定名方法,其它格式的定名方法请查看drivers/video/logo/Makefile文件.

        将logo_linux_gzsd_clut224.ppm文件放到内核源码下的drivers/video/logo/目录下

        进入drivers/video/logo目录

        1.修改Kconfig文件

        增加:在endif #LOGO之前

        

    config LOGO_LINUX_GZSD
            bool "gzsd logo"
            default n

        2.修改Makefile文件

        增加:

        obj-$(CONFIG_LOGO_LINUX_GZSD)       += logo_linux_gzsd_clut224.o

        3.logo.c中函数fb_find_logo中的 if (depth >= 8)上面增加:

        #ifdef CONFIG_LOGO_LINUX_GZSD
                    logo = &logo_linux_gzsd_clut224;
    #endif

        4.内核源码目录下的include/linux/linux_logo.h中增加

        extern const struct linux_logo logo_linux_gzsd_clut224;

        每日一道理
    毅力,是千里大堤一沙一石的凝聚,一点点地累积,才有前不见头后不见尾的壮丽;毅力,是春蚕吐丝一缕一缕的环绕,一丝丝地坚持,才有破茧而出重见光明的辉煌; 毅力,是远航的船的帆,有了帆,船才可以到达成功的彼岸。

        5.在终端执行make menuconfig上.

        Device Drivers  ---> Graphics support  --->Bootup logo  --->gzsd logo

        保存退出后编译即可

        6.禁止LCD控制台的光标

        在内核源码目录下drivers/video/console/fbcon.c中

        注释掉函数:fb_flashcursor和fbcon_cursor内的所有内容

        7.让logo中屏幕旁边表现:

        drivers/video/fbmem.c

        修改函数fb_do_show_logo如下

    static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
    			    int rotate, unsigned int num)
    {
    	unsigned int x;
    	int xoff,yoff; 
    
    	/**for central logo**/ 
    	xoff = (info->var.xres - num * (fb_logo.logo->width + 8))>>1; //得到旁边x坐标
    	yoff = (info->var.yres - num * (fb_logo.logo->height + 8))>>1; //得到旁边y坐标
    
    	if (rotate == FB_ROTATE_UR) {
    		for (x = 0; x < num && image->dx + image->width <= info->var.xres; x++) {
    			image->dx = xoff; 
    			image->dy = yoff; 
    			info->fbops->fb_imageblit(info, image);
    			image->dx += image->width + 8;
    		}
    	} 
    	else if (rotate == FB_ROTATE_UD) {
    		for (x = 0; x < num && image->dx >= 0; x++) {
    			info->fbops->fb_imageblit(info, image);
    			image->dx -= image->width + 8;
    		}
    	} 
    	else if (rotate == FB_ROTATE_CW) {
    		for (x = 0; x < num && image->dy + image->height <= info->var.yres; x++) {
    			info->fbops->fb_imageblit(info, image);
    			image->dy += image->height + 8;
    		}
    	} 
    	else if (rotate == FB_ROTATE_CCW) {
    		for (x = 0; x < num && image->dy >= 0; x++) {
    		info->fbops->fb_imageblit(info, image);
    		image->dy -= image->height + 8;
    		}
    	}
    }

        重新编译即可

        二.android启动后闪动画面修改:

        路径:文件系统源码下的frameworks/base/core/res/assets/images/下有两张图片

        android-logo-mask.png

        android-logo-shine.png

        修改这两张图片即可,注意请将本来的保存。

        

    文章结束给大家分享下程序员的一些笑话语录: 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。
    硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”
    项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”
    软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

  • 相关阅读:
    WebService 安静点
    爬虫(一) 安静点
    wpf(三) 安静点
    wpf问题解决链接 安静点
    wpf(一) 安静点
    webapi(一) 安静点
    WPF(二)之为对象属性赋值 安静点
    wpf(四) 安静点
    云计算实验二 Docker实验docker安装
    新闻分类中文分词+词云展示(2)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3089537.html
Copyright © 2011-2022 走看看