从内核被解压到文件系统被挂载,我们看到的经典画面是一个小企鹅。如果嫌小企鹅枯燥,我们可以把它换掉。

1. 准备图片

这里需要的是 ppm 图片,所以,我们需要把常见格式给转换为 .ppm 才能使用。cmdline 和 图形界面下有不同方法。

a. cmdline 下, 假定我们要转换的文件名为linux_logo.png,首先将png 图片转成pnm
# pngtopnm linux_logo.png > linux_logo.pnm
然后将pnm 图片的颜色数限制在224
# pnmquant 224 linux_logo.pnm > linux_logo_clut224.pnm
最后将pnm 图片转换成我们需要的ppm
# pnmtoplainpnm linux_logo_clut224.pnm > logo_linux_clut224.ppm

b. 图形界面下,我们可以使用 GIMP(应该是发行版的标配吧?)。首先,打开图片。然后,image->mode->indexed,弹出 Generate optimum palette 对话框,修改 maxmium number of colors 为 224,点击 convert。最后,save as 图片为名称 logo_linux_clut224.ppm 并确定,弹出来的对话框会选 ascii 。

把准备好的图片拷贝的:drivers/video/logo/ 目录下即可。

另,或许需要手动将 logo_linux_clut224.c 和 logo_linux_clut224.o 删除。否则 Makefile 不会关注 logo_linux_clut224.ppm 的变化。

2. 修改 Linux 编译配置

支持 224 色的 logo:

Device Drivers --->        Graphics support --->
          [*]Boot logo --->
             [*] Standard 224-color Linux logo

支持 kernel console,不选看不到 logo:

Device Drivers --->        Graphics support --->
         Console display driver support --->
            <*> Framebuffer Console support

3. logo 居中

不做这一步修改的话,重新编译后,图片是换掉了,但是,只有在屏幕的左上角。需要居中的话,还要对 drivers/video/fbmem.c 进行如下修改:

//image.dx=0;
//image.dy=y;
image.width = logo->width;
image.heigh = logo->height; image.dx = (info->var.xres / ) - (image.width / );
image.dy = (info->var.yres / ) - (image.height / );

主要是对图片进行了重新定位。然后,还要 kernel console 中更新图片结束的位置。需要修改 drivers/video/console/fbcon.c 文件(后一行是新加的):

    logo_height = fb_prepare_logo(info, ops->rotate);

    logo_height += (info->var.yres / ) - (logo_height / );

另外,在某 4 核处理器时,发现 logo 出现了 4 次(4 只小企鹅),需要做如下修改即可改为 1 个(继续 fbmem.c)。

int fb_show_logo(struct fb_info *info, int rotate)
{
int y; //y = fb_show_logo_line(info, rotate, fb_logo.logo, 0,
// num_online_cpus());
y = fb_show_logo_line(info, rotate, fb_logo.logo, , ); y = fb_show_extra_logos(info, y, rotate); return y;
}

做完这些,重新编译内核,安装。。。。。。开机就可以看到效果了。

Linux 开机 logo 修改的更多相关文章

  1. Android开机logo修改方法 【转】

    本文转载自:http://blog.csdn.net/qq258711519/article/details/7766303 一体机平台开机logo修改方法 1:修改Kernel中的Logo: 若是要 ...

  2. 高通平台开机LOGO修改LK(bootloader)下实现【转】

    网络上已经有许多在kernel中修改开机Logo的文章,本文就LK下实现开机logo进行简述 需要用到ffmpeg工具,没有安装ffmpeg请参考这里: http://blog.csdn.net/re ...

  3. 八、启动linux内核并修改开机logo

    1. 编译并烧写linux内核 1)先准备好内核源码包urbetter-linux2.6.28-v1.0.tgz,输入命令:tar -zxvf urbetter-linux2.6.28-v1.0.tg ...

  4. 小白自制Linux开发板 九. 修改开机Logo

    许久不见啊,今天我们继续来修改我们的系统. 通过前面的几篇文章我们已经能轻松驾驭我们的开发板了,但是现在都是追求个性化的时代,我们在开发板上打上了自己的Logo,那我们是否可以改变开机启动的Logo呢 ...

  5. 开机logo以及两种修改开机动画方法

    Android开机画面总共有三屏 一.第一屏:开机logo 1.选张png格式的图片,在Linux任意下执行(安装工具): sudo apt-get install pnmtoplainpm 2.在所 ...

  6. 安卓修改开机logo和开机动画的方法

    第一种和第二种方法亲测可用,安卓版本是4.2和安卓5.1均可.第二种方法待验证 以下三种方法 Android 开机其实总共会出现3个画面: 1.第一个就是 linux 系统启动,出现Linux小企鹅画 ...

  7. Android 系统开机logo的修改【转】

    本文转载自:http://blog.csdn.net/yandongqiangZHRJ/article/details/8585273 看到了好几个修改logo的博文,但是说的不是很清楚,在这里亲手送 ...

  8. 安卓修改开机logo

    这里我们是在ubuntu下进行操作我是用root用户登陆的,首先安装netpbm库 执行:apt-get install netpbm 对于Android系统最开始表现logo是在内核当中,所以首先我 ...

  9. linux开机自检配置文件fstab变只读无法修改问题

    控制linux开机自检的配置文件是/etc/fstab,在最近用的服务器中,发现fstab变成了只读权限,无法修改. 解决方法:RH5下,因磁盘改变,而导致系统停在Ctrl+d,此时需输入密码进入修改 ...

随机推荐

  1. 二叉树的遍历(递归,迭代,Morris遍历)

    二叉树的三种遍历方法: 先序,中序,后序,这三种遍历方式每一个都可以用递归,迭代,Morris三种形式实现,其中Morris效率最高,空间复杂度为O(1). 主要参考博客: 二叉树的遍历(递归,迭代, ...

  2. [转]C#压缩打包文件

    /// <summary> /// 压缩和解压文件 /// </summary> public class ZipClass { /// <summary> /// ...

  3. React入门 (1)—使用指南(包括ES5和ES6对比)

    前言 本篇会简明扼要的介绍一下React的使用方法.代码会用JSX+ES5和JSX+ES6两种方式实现. React简介 React来自Facebook,于2013年开源.至今不断修改完善,现在已经到 ...

  4. .NET CLR 运行原理

    原文: Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects 文章讨论了: SystemDoma ...

  5. (译文)MVC通用仓储类

    Generic Repository Pattern MVC Generic Repository Pattern MVC 原文链接:http://www.codeproject.com/Articl ...

  6. 2016年1月25日 《1024伐木累》-小白篇之开发网站,三天!(中篇-2奇怪的IE)-总章节十一

    往期回顾:  老王的“先见之明”,解决了困扰耗仔三人的大难题.顺利安装完开发工具,大家投入紧张的工作.航空部领导的突然闯入,IE不兼容,页面错乱,摆在三人面前的形势依然严峻.第一次见这阵仗的耗仔,又会 ...

  7. android studio用法笔记

    1.每次创建新工程的时候,就会“check sdk repository”,然而这个进度条一动不动,解决方法:file>setting>plugins>sdk updater禁用就行 ...

  8. 东大OJ-最大子序列问题的变形

    1302: 最大子序列 时间限制: 1 Sec  内存限制: 128 MB 提交: 224  解决: 54 [提交][状态][讨论版] 题目描述 给定一个N个整数组成的序列,整数有正有负,找出两段不重 ...

  9. 使用ContentProvider进行应用程序间的数据交互

    什么是ContentProvider: ContentProvider用来管理数据的访问规则.它允许你的应用程序向外界暴露需要被访问的数据. 是Android的四大组件之一. ContentProvi ...

  10. error_reporting()

    定义和用法 error_reporting() 设置 PHP 的报错级别并返回当前级别. 语法 error_reporting(report_level) 如果参数 level 未指定,当前报错级别将 ...