热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用bootsplash制作Linux全图形启动界面

文章标题:用bootsplash制作Linux全图形启动界面。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  Linux的各种发行版在启动时基本上都有两种模式:silent mode和verbose mode。verbose模式下会打印极为详尽的启动信息,比如挂载文件系统,加载光驱,激活网络服务等等,而silent模式则屏蔽掉这些信息。bootsplash工具可以将一张图片放在silent模式下的虚拟控制台上,从而使Linux用户看到一个全画面的启动过程。另外一个工具是gensplash,比bootsplash要稍微复杂一些,不过功能更为强大,设计也更为合理——它将一些非必要的元素从kernel space挪出来,放在user space来做。
  
  网络上关于bootsplash(启动动画)的使用基本上是基于Linux的SuSe发行版进行讨论的——开发这组工具的作者说他们的工作平台是SuSe。gensplash则是基于Linux的Gentoo发行版进行讨论的。当然这些两组工具都可以通过适当的改动应用于Linux的其它发行版。
  
  由于我的工作平台是red hat linux,此篇文章就讨论怎样在RH linux下使用bootsplash。下面先给出相关的一些网站:
  
  http://www.bootsplash.org (官方网站,基本使用及相关原理)
  http://www.bootsplash.com (详尽的使用方法,基于SuSe发行版)
  http://www.bootsplash.de (bootsplash的爱好者组织的网站,资料齐全)
  http://www.kernel.org (Linux内核下载)
  
  本文严重参考http://www.linuxhall.org/modules.php?name=News&file=article&sid=201,哈哈,特此说明。
  
  现在我们进入正题。
  
  http://www.bootsplash.org网站上说,bootsplash的内核补丁针对2.4.18--2.4.22和2.6.0-test9,这个消息很旧了,可以到http://www.bootsplash.de站点查看bootsplash所提供的各个版本的内核补丁,然后确定你所用的Linux内核版本,选择一个补丁下载。
  
  我的内核是2.4.20-8,下载补丁bootsplash-3.0.7-2.4.20.vanilla.diff。补丁中的3.0.7是bootsplash工具的版本号,我们下载bootsplash-3.0.7.tar.bz2,再下载所要用的主题Theme-NewLinux.tar.bz2,关于材料的准备就完成了。这些都可以在上面的提及的网站上找到。如果你的内核没有相应补丁,那么可以选择一个版本的内核源代码,打上补丁后,编译一个新的内核。
  
  如果没有编译过内核,可以到网上查找相关资料,对照着练习一下。当然,我们需要root的权限。
  
  第一步 修改/usr/include目录下的三个符号链接:asm,scsi,linux(mv asm asm.bak,mv scsi scsi.bak,mv linux linux.bak),如果没有,则要新建。在编译内核时,用到这些链接所指向的一些头文件。我在/usr/src目录下建了一个名为linux的链接指向同一层的内核源代码目录linux-2.4.20-8(这样以后再编译不同版本内核时,只需修改/usr/src目录下的linux符号链接就可以了)。(命令ln -s linux-2.4.20-8 linux),然后进入/usr/include目录,分别执行ln -s /usr/src/linux/include/asm-i386 asm;ln -s /usr/src/linux/include/linux linux;ln -s /usr/src/linux/include/scsi scsi。
  
  第二步 打补丁,假设补丁在/usr/src/linux目录下(不在的话加上路径即可)。patch -p1  
  第三步 设定核心:make menuconfig。确定下列选项被编译进内核而不是被编译成模块。
  
  对于2.4.x内核:
  
  Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers
  Processor type and features --->
  [*] MTRR (Memory Type Range Register) support
  Block Devices ->
  [*] Loopback device support
  [*] RAM disk support
  (4096)  Default RAM disk size
  [*] Initial RAM disk (initrd) support
  Console Drivers ->
  [*] VGA text console
  [*] Video mode selection support
  Console Drivers -> Frame-buffer support ->
  [*] Support for frame buffer devices
  [*] VESA VGA graphics console
  [*] Use splash screen instead of boot logo
  
  对于2.6.x内核:
  Code maturity level options --->
  [*] Prompt for development and/or incomplete code/drivers
  Processor type and features --->
  [*] MTRR (Memory Type Range Register) support
  Device Drivers --->
  Block devices --->
  <*> Loopback device support
  <*> RAM disk support
  (4096) Default RAM disk size
  [*]  Initial RAM disk (initrd) support
  Graphics support --->
  [*] Support for frame buffer devices
  [*]  VESA VGA graphics support
  Console display driver support --->
  [*]  Video mode selection support
  <*> Framebuffer Console support
  Bootsplash configuration --->
  [*] Bootup splash screen
  
  第四步
  
  a>  make mkproper 清除旧的设定
  b>  make dep    产生依赖
  c>  make bzImage 编译内核
  d>  make modules modules_install 编译模块
  e>  cp /usr/src/linux/arch/i386/boot/bzImage /boot/bzImage-2.4.20
  
  第五步 安装bootsplash的工具软件和主题图片
  
  # tar jxvf /patch/bootsplash-3.0.7.tar.bz2
  # tar jxvf /patch/Theme-NewLinux.tar.bz2
  # cd bootsplash-3.0.7/Utilities
  # make all
  # cp fbmngplay fbresolution fbtruetype splash /sbin
  # cd ../../
  下面这几步必须要做,不然在用splash命令时就会出现类似下面的错误:splash:/etc/bootsplash/themes/Linux/images/silent-800x600.jpg不存在。这个其实是由于主题的配置文件中做了绝对路径设定。
  
  # mkdir /etc/bootsplash
  # mkdir /etc/bootsplash/themes
  # cp -a NewLinux /etc/bootsplash/themes/
  
  我们来看一个完整的主题配置文件,以800x600分辨率为例,文件名为bootsplash-800x600.cfg,可以用vi进行编辑,####开头的为笔者加的注释。
  
  [/code:1:7b9eb010fc]
  [code:1:7b9eb010fc]
  # This is the configuration file for the 800x600 bootsplash picture.
  #
  # This file is necessary to specify the coordinates of the text box on
  # the splash screen.
  #
  # Comments are welcome by oliver@dediziert.org
  
  # config file version
  version=3
  
  # should the picture be displayed?
  state=1
  
  # fgcolor is the text forground color.
  # bgcolor is the text background (i.e. transparent) color.
  fgcolor=7
  bgcolor=0
  
  # (tx, ty) are the (x, y) coordinates of the text window in pixels.
  # tw/th is the width/height of the text window in pixels.
  tx=0
  ty=0
  tw=800
  th=600
  
  ####predefine area for the text info
  text_x=260
  text_y=545
  text_size=20
  text_color=0xeef4ff
  ####
  
  # name of the picture file (full path recommended)
  jpeg=/etc/bootsplash/themes/NewLinux/images/bootsplash-800x600.jpg
  silentjpeg=/etc/bootsplash/themes/NewLinux/images/silent-800x600.jpg
  
  progress_enable=1
  
  # background
  box silent noover 160 520 642 538 #00000050
  box silent inter 160 520 160 537 #b77200 #b77200 #f2b700 #f2b700
  box silent 160 520 642 538 #b77200 #b77200 #f2b700 #f2b700
  
  # black border
  box silent 160 520 642 520 #b5b5b5
  box silent 160 538 642 538 #b5b5b5
  box silent 160 520 160 538 #b5b5b5
  box silent 642 520 642 538 #b5b5b5
  
  overpaintok=1
  [/code:1:7b9eb010fc]
  
  我们可以修改这个文件中的一些选项来得到自己想要的效果。具体选项的含义可以查看:
  
  http://www.bootsplash.org/config.html
  # name of the picture file (full path recommended)
  jpeg=/etc/bootsplash/themes/NewLinux/images/bootsplash-800x600.jpg
  silentjpeg=/etc/bootsplash/themes/NewLinux/images/silent-800x600.jpg
  
  这两行指定了作为启动动画的图片和控制台背景的图片的名字和绝对路径,我们只需把自己制作的图片命名为这里指定的图片,并且放在这个路径下,就可以应用自己的主题了。(想想看,制作themes是相当简单的。不明白为什么网上没有redhat linux的主题图片。)
  
  我修改了/etc/bootsplash/themes/NewLinux/config/bootsplash-800x600.cfg文件,定义显示文本信息区域。###部分是我添加的内容。
  
  [code:1:7b9eb010fc]
  
  第六步 将图片与 init Ram Disk 绑定 splash -s -f /etc/bootsplash/themes/Linux/config/bootsplash-800x600.cfg > /boot/initrd-splash.img 对于ide硬盘,我们可以直接用splash工具生成initrd*.img文件,这个文件对ide硬盘来说没什么用,我们在这里只是通过它来使用启动画面。
  
  如果你只想看到一副静态的画面,跳过第七步,看第八步,不用修改脚本文件。
  
  第七步> 将脚本
推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了使用CentOS7.0 U盘刻录工具进行安装的详细步骤,包括使用USBWriter工具刻录ISO文件到USB驱动器、格式化USB磁盘、设置启动顺序等。通过本文的指导,用户可以轻松地使用U盘安装CentOS7.0操作系统。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • MACElasticsearch安装步骤及验证方法
    本文介绍了MACElasticsearch的安装步骤,包括下载ZIP文件、解压到安装目录、启动服务,并提供了验证启动是否成功的方法。同时,还介绍了安装elasticsearch-head插件的方法,以便于进行查询操作。 ... [详细]
author-avatar
傻瓜等傻子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有