嵌入式Linux开发,更换内核kernel开机画面LOGO—左上角小企鹅图标(分辨率为80*80)
2023-09-14 09:09:34 时间
将企鹅的 Logo 换成自己喜欢的任意图片,或公司logo,方法如下。
一、在Ubuntu系统中,安装图形转换工具。
sudo apt-get install netpbm
二、制作 logo 图片。
准备一张 png 格式的图片,图片分辨率不能超过屏的分辨率。比如图片名为 linuxlogo.png,转换如下。
pngtopnm linuxlogo.png >linuxlogo.pnm //将png转换成pnm
pnmquant 224 linuxlogo.pnm> linuxlogo224.pnm //将pnm图片的颜色数限制在224
pnmtoplainpnm linuxlogo224.pnm > linuxlogo224.ppm //将pnm图片转换成最终的ppm
运行完上面的命令之后,生成的 linuxlogo224.ppm 文件,为所需要的文件。
三、替换。
将生成的 linuxlogo224.ppm 文件,替换掉 kernel/drivers/video/logo/logo_linux_clut224.ppm 文件。
四、内核配置。
配置如下。
以下配置根据自己的硬件作调整。
五、编译内核。
编译后,确定文件 kernel-3.2/drivers/video/logo/logo_linux_clut224.o 已更新,也可通过编译打印信息进行确认。
如果无法更新,删除已生成文件;或先直接删除已生成文件,再进行内核编译。删除如下:
#kernel/drivers/video/logo
cd drivers/video/logo
rm logo_linux_clut224.c logo_linux_clut224.o
六、烧写内核。
重新烧写内核,即可完成内核开机 logo 的更换。
注意事项:
图片名 linuxlogo.png 分辨率不能超过屏的分辨率,否则无法显示。在有些应用中,分辨率和屏一样也无法显示,可先采集屏的分辨率的一半进行测试。
附:让logo显示在屏幕中央(通过结构体获得屏幕大小数据)
logo居中,设置logo图片在屏幕中的位置,自发如下:
1、在 kernel-3.2/drivers/video/fbmem.c 文件中,找到"fb_show_logo_line"函数,将
image.dx = 0;
image.dy = y;
改为:
image.dx = (info->var.xres - logo->width) / 2; //logo显示的起始坐标x值
image.dy = (info->var.yres - logo->height) / 2;
info->var.xres和info->var.yres为屏幕分辨率大小,logo->width和logo->height为logo图片大小。
2、在 kernel-3.2/drivers/video/console/fbcon.c 文件中,找到“fbcon_prepare_logo”函数,在
logo_height = fb_prepare_logo(info, ops->rotate);
后面加上:
logo_height += (info->var.yres/2) - (logo_height/2);
相关文章
- 惠普成 Linux 基金会白金会员
- [Linux] ubuntu server sudo出现sudo:must be setuid root 完美解决办法
- Linux内核中常见内存分配函数
- 构建源码树----Linux内核剖析(三)
- linux内核数据结构之kfifo
- Linux fedora35安装crontab定时任务工具
- linux centos7内核降级和升级
- 《安富莱嵌入式周报》第283期:全开源逆向“爆破”硬件工具,Linux内核6.1将正式引入RUST语言,I3C培训教程,80款市场成熟的电感式位置传感器设计
- Linux unshare命名的一些例子
- 【已解决】Linux服务器安装Nacos
- 【Qt】解决qmake编译错误:could not exec ‘/usr/lib/x86_64-linux-gnu/qt4/bin/qmake‘: No such file or directory
- 自学Linux命令的四种方法
- 【Linux 内核 内存管理】memblock 分配器 ⑤ ( Linux 内核中定义 memblock 分配器的位置 | ARM64体系架构下 Linux内核初始化 memblock 分配器流程 )
- 【Linux 内核 内存管理】内存管理系统调用 ⑤ ( 代码示例 | 多进程共享 mmap 内存映射示例 )
- 【Linux 内核 内存管理】内存管理架构 ⑤ ( sbrk 内存分配系统调用代码示例 | 在 /proc/pid/maps 中查看进程堆内存详情 )
- 【Linux 内核 内存管理】内存管理架构 ② ( 用户空间内存管理 | malloc | ptmalloc | 内核空间内存管理 | sys_brk | sys_mmap | sys_munmap)
- 【Linux 内核】线程调度示例一 ④ ( pthread_attr_init 初始化线程属性对象 | 完整代码示例 )
- 【Linux 内核】进程优先级与调度策略 ③ ( 设置、获取线程优先级的核心函数 | 修改线程调度策略函数 )
- 交叉编译 chromium windows linux
- Linux内核Thermal框架详解六、Thermal Core(5)
- Linux内核中ideapad-laptop.c文件全解析1
- Linux系统之部署企业内部静态导航页
- 嵌入式Linux开发,Ubuntu22下交叉编译内核报错: multiple definition of `yylloc‘; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0
- 嵌入式linux开发,PPP简介与内核配置
- kali linux 升级内核 gcc 7.2升级 7.3
- Linux云计算-06_Linux磁盘管理
- 嵌入式Linux开发,Ubuntu22下交叉编译内核报错: multiple definition of `yylloc‘; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0
- 嵌入式Linux,cat1模组,EC200S-CN内核驱动开发
- 嵌入式Linux开发,去掉内核kernel开机画面logo屏幕上的光标
- Android系统信息获取 之十三:Linux内核版本信息获取
- 详解Linux内核态调试工具kdump