翻译下下面linux内核logo
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译下下面linux内核logo相关的知识,希望对你有一定的参考价值。
pngtopnm default_wallpaper.png >logo_linux_clut224.pnm pnmtoplainpnm logo_linux_clut224.pnm > logo_linux_clut224.ppm 将logo_linux_clut224.ppm放到linux-2.6.29/drivers/video/logo, 删除logo_linux_clut224.c和logo_linux_clut224.o 然后make zImage就可以了。 linux-2.6.29/drivers/video/fbmem.c fb_do_show_logo函数: 393 static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, 394 int rotate, unsigned int num) 395 396 unsigned int x; 397 398 int xoff,yoff; 399 xoff=(info->var.xres - num*fb_logo.logo->width+8)》1; 400 yoff=(info->var.yres - num*fb_logo.logo->height+8)》1; 401 402 if (rotate == FB_ROTATE_UR) 403 for (x = 0; 404 x < num && image->dx + image->width <= info->var.xres; 405 x++) 406 image->dx = xoff; 407 image->dy = yoff; 408 info->fbops->fb_imageblit(info, image); 409 image->dy += image->height + 8;
pngtopnm default_wallpaper。 logo_linux_clut224 png >。 pnmtoplainpnm pnm logo_linux_clut224。 logo_linux_clut224 pnm >。 ppm将logo_linux_clut224.ppm放到linux-2.6.29 /视频/标志设计/车手,删除logo_linux_clut224.c和logo_linux_clut224。 然后make阿zImage就可以了. linux-2.6.29 /车手/视频/ fbmem。 c fb_do_show_logo函数:393静态无效fb_do_show_logo(> > fb_info * *信息,fb_image形象,394智力旋转,无智力胡)395年无符号整数倍; 396 397智力xoff,yoff;399 xoff =(信息- - - - - - >变量。 xres -胡* fb_logo。 标志- >宽度1 + 8)》;400 yoff =(信息- - - - - - >变量。yres -胡* fb_logo。 标志- >身高+ 8)》1;401如果(旋转= = FB_ROTATE_UR) 403(x = 0;404 x <华&&图片- > dx +图像- >宽度< =信息- >变量。xres;405 x + +)- > 406形象;407年xoff dx = = >秦代yoff图像- - >,408 fbops信息- - - - - - > fb_imageblit(信息、图像);409图像- > > + =形象,通过高度+ 8; 参考技术A ?安卓修改开机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
修改这两张图片即可,注意请将本来的保存。
以上是关于翻译下下面linux内核logo的主要内容,如果未能解决你的问题,请参考以下文章