tag 标签: 开机动画

相关博文
  • 热度 17
    2014-7-25 23:25
    1695 次阅读|
    0 个评论
    Plymouth是Fedora10以后才出现的项目,所以之前的Fedora版本不能使用它,而是通过直接修改grub配置和其下的文件: ============================== http://www.tldp.org/LDP/LG/current/jayanth.html ============================== 好吧,其实上面这个帖子已经写得非常详细了,除了更换背景图片,其他的splash定制我也不是很想深入研究,写这个博文主要是为了吐槽。。。 Fedora Core 6有3.3G,里面的东西也非常多,除了一大列games,还有非常多的应用和设置,连GIMP都自带了,而最新的Fedora20才900多M,除了保留基本的Rhythmbox、LibreOffice之外,游戏神马的都没有,图形化的设置选项也非常少,干净清爽。 相对于Ubuntu的目标“Windows和Office的开源替代方案”,Fedora的目标是“展示最新的自由和开源软件的Linux操作系统”。对比以前的大杂烩,Fedora好像找到了自己的准确定位,带来一种久经锤炼的完美感。
  • 热度 13
    2014-7-25 12:05
    2663 次阅读|
    0 个评论
    调试Plymouth,经常会遇到关机可以正常显示动画,但是开机却总是保持charge球的情况;并且还会遇到hot-dog老是自动应用且删除不了的问题。 其实答案总是在最明显的地方,就看你能不能留意到,还是把它当作背景噪声忽略掉。 在前面的调试过程中,我学习到了基本的Plymouth应用步骤,主要是这么几步: plymouthd plymouth --show-splash plymouth quit plymouth-set-default-theme --list plymouth-set-default-theme xxx 而update-alternatives命令,只在自己制作theme的时候用到,yum时是用不到的,所以答案就在上面的plymouth*五条命令中。之前采用kernel command line观察Plymouth的启动信息时,总是会发现这么一行: find_system_default_splash:System default splash is configured to be 'charge' 就是说,虽然执行了plymouth-set-default-theme solar命令,但是默认的theme并没有改过来。 执行: plymouth-set-default-theme --help 会出现下面的信息: Plymouth theme chooser usage: plymouth-set-default-theme { --list | --reset | | --help }   -h, --help             Show this help message   -l, --list             Show available themes   -r. --reset            Reset to default theme   -R, --rebuild-initrd   Rebuild initrd (necessary after changing theme)              Name of new theme to use (see --list for available themes) 注意-R这个参数,它提示在改变theme之后需要重新编译initrd。所以,再执行: plymouth-set-default-theme -R 会出现下面的信息: /usr/share/plymouth/themes//.plymouth does not exist ************************************************* ****更正:这条命令实际上应该是这样的: plymouth-set-default-theme -R solar 就可以顺利调用dracut命令了,但是还是要注意的是它生成的是: initrd-3.15.6-200.fc20.i686.img 而不是: initramfs-3.11.10-301.fc20.i686.img 问题是,我的Fedora20采用的是前者,这从/boot/grub2/grub.cfg里面也能看出来: =========== linux   /vmlinuz-3.11.10-301.fc20.i686 root=/dev/mapper/fedora-root ro rd.lvm.lv=fedora/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=fedora/root  rhgb quiet LANG=en_US.UTF-8 initrd /initramfs-3.11.10-301.fc20.i686.img =========== 因为此时以boot为根目录,所以vmlinuz和initramfs都放在了/boot下面。那initrd和initramfs的区别是什么呢? http://www.linux.com/learn/linux-training/92607-the-kernel-newbie-corner-qinitrdq-and-qinitramfsq-whats-up-with-that ============================= In a nutshell, when your bootloader (GRUB?) loads your Linux kernel, it is of course the kernel's job to finish the boot process. But to do so, it might require particular drivers to be able to work with, say, hardware RAID controllers, or a network, and so on. And developing on where those critically important drivers are, the kernel might not have the ability to load them, hence, the creation of a preliminary root file system that would contain just enough in the way of loadable modules to give the kernel access to the rest of the hardware. 很多人对initrd很熟悉,因为在GRUB bootloader里面经常看到它的身影,以前,initrd包含了压缩了的文件系统镜像,你需要root权限才能访问它。 而initramfs(initial RAM file system)是更早的potential root file system(?),它能够被编译进内核。so,mkinitrd的步骤还是要执行的! ************************************************* ============================ http://advancelinux.blogspot.com/2013/06/how-to-rebuild-initrd-or-initramfs-in.html ============================ The inital RAM disk (initrd) is an initial root file system that is mounted prior to when the real root file system is available. It is necessary to rebuild the Initrd images in following scenarios to include the proper kernel modules, files, and configuration directives 1. If adding new hardware to a system that may be used very early in the boot process. 2. If changing configuration files that may be used very early in the boot process. 3. If changing the options on a kernel module. ============================ 首先保存initrd的备份: mv /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak 然后重新编译initrd: mkinitrd -f -v /boot/initrd-$(uname -r).img $(uname -r) -f参数意思是强制覆盖已存在的img,-v参数意思是打印所有的信息。当执行完这个命令之后reboot,就会发现开关机动画都漂亮的出现啦~~~ (对于RHEL 3,4,5来说是mkinitrd,对RHEL 6来说是新命令dracut,mkinitrd也是可以用的。Fedora20里面两个命令都有,但我只采用了mkinitrd,哪位有兴趣的童鞋可以试试dracut~~~) 补充:获取屏幕分辨率的命令,除了xdpyinfo之外,还有xrandr。  
  • 热度 16
    2014-7-24 14:37
    2061 次阅读|
    0 个评论
    参考从这个帖子下载下来的mytheme示例: =========================== http://brej.org/blog/?cat=16 =========================== 注意Plymouth不支持’\‘转义回车符,所以如果有很长很长的一行,那就写很长很长的一行吧! 以下是qilang-tech.script的内容,主要是修改它: =========================== progress_box.x = Window.GetWidth() / 2 - progress_box.image.GetWidth() / 2; progress_box.y = Window.GetHeight() * 0.7 - progress_box.image.GetHeight() / 2; progress_box.sprite.SetPosition(progress_box.x, progress_box.y, 0); progress_bar.original_image = Image("progress_bar.png"); progress_bar.sprite = Sprite(); progress_bar.x = Window.GetWidth() / 2 - progress_bar.original_image.GetWidth() / 2; progress_bar.y = Window.GetHeight() * 0.7 - progress_bar.original_image.GetHeight() / 2; progress_bar.sprite.SetPosition(progress_bar.x, progress_bar.y, 1); fun progress_callback(duration, progress) {         if (progress_bar.image.GetWidth() != Math.Int(progress_bar.original_image.GetWidth() * progress))         {                 progress_bar.image = progress_bar.original_image.Scale(progress_bar.original_image.GetWidth(progress_bar.original_image) * progress, progress_bar.original_image.GetHeight());                 progress_bar.sprite.SetImage(progress_bar.image);         } } Plymouth.SetBootProgressFunction(progress_callback); fun quit_callback() { } Plymouth.SetQuitFunction(quit_ballback); =========================== 懒得写注释了,其实看函数的名字就明白了~~~ 主要功能是,1.设置一张漂亮的背景图片,2.放置一个漂亮的logo,3.放置一个显示开机进度的条(由box和bar两张图片组合)。 Plymouth的调试就到此为止,Good Luck! NOTE: 如果执行下面的命令: plymouth-set-default-theme qilang-tech 出现提示: /usr/lib/plymouth/script.so does not exist 就需要执行: yum install plymouth-plugin-script
  • 热度 18
    2014-7-22 17:06
    4175 次阅读|
    3 个评论
    Fedora20默认的开机动画是一个名为charge的不规则Fedora球,随着开机进度接近尾声,这个球也会显示灌满。其实还有很多更加炫酷的开机动画,自己也可以加入独特的logo。要实现它,需要安装一个名为Plymouth的软件。 Plymouth,既是英国的一座城市名字,也是一个汽车品牌。在Linux系统里面,它是一个为Fedora提供开机动画的项目: ************************************************************** https://wiki.archlinux.org/index.php/plymouth ============================================================= Plymouth is a project from Fedora providing a flicker-free graphical boot process. It relies on kernel mode setting (KMS) to set the native resolation of the display as early as possible, then provides an eye-candy splash screen leading all the way up to the login manager. ************************************************************** Fedora20是默认安装有Plymouth的,省掉了安装步骤,不过它自带的theme并不多,可以通过下面这个命令下载: yum install plymouth* (貌似hot-dog这个theme是yum的时候就应用了,而且比较难删除,为此我至少重装了四次系统,所以还是不要yum所有的内容而是想安装的主题。) (参考 http://brej.org/blog/?cat=16) Plymouth调试步骤一:准备测试机器。 当然可以在自己的PC机上调试Plymouth,但是重复的关机启动还是有点让人厌烦,而且不能测试的时候不能上网浏览需要的信息,因此准备一台测试机器会方便很多。另外,貌似使用虚拟机或者X11插件也可以。我使用了另外一台安装有Fedora20的笔记本电脑。 Plymouth调试步骤二:进入runlevel 3。 首先确认系统中是否有KMS(Fedora20具备),然后打开target的sshd服务,7使用master的ssh连接它,获取root权限。(之所以使用ssh,是因为调试Plymouth的时候无法输入任何键盘指令。) 然后在ssh下,使用telinit命令将target的runlevel设置为3: telinit 3 此时target就应该退出了图形界面,进入命令行了。 Plymouth调试步骤三:运行demo。 plymouthd plymouth --show-splash plymouth quit 它们的作用分别是,启动daemon、运行theme、退出。 要查看所有可用的theme,就使用命令: plymouth-set-default-theme --list 要选择要运行的theme,就使用命令: plymouth-set-default-theme xxx (solar非常漂亮~~~) ************************************************************** 在应用theme时,出现关机有新动画,但是开机还是charge的情况。有论坛说使用命令: update-alternatives --install /usr/share/plymouth/themes/default.plymouth \ default.plymouth /usr/share/plymouth/themes/solar/solar.plymouth 100 update-alternatives --config default.plymouth; 但是貌似即使执行了也没什么效果。为了观察plymouth的调试结果,可以将使用kernel command line生成日志文件。给内核传递参数有三种方法,第一通过内核build,第二是通过startup文件,第三是查看runtime的/proc或者/sys。 ============================================================= https://wiki.ubuntu.com/Kernel/KernelBootParameters ============================================================= 这篇是我见过写得最对口的~ 修改startup时的kernel command line有两种方法:temporarily和permenently,后者主要是通过修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT那一行增加自己的内容既可。这里增加: plymouth:debug=file:/var/log/plymouth-debug.log 再执行: update-grub 但是实际上,Fedora20并没有这个上面这个命令,而是需要执行: grub2-mkconfig -o /boot/grub2/grub.cfg ============================================================= 执行完这个命令之后,/var/log/plymouth-debug.log就会生成了,神奇的是,原来无法出现的开机动画现在居然出现了! (补充:虽然在target机器上开机关机都可以了,但是在master机器上实验同样的步骤还是不行,so,先跳过,等调试完后面的步骤再回来看。。。) ************************************************************** Plymouth调试步骤四:制作自己的theme。 在Plymouth下,plugin和theme是有区别的,theme会使用plugin并给它传递参数。theme一般存放在/usr/share/plymouth/themes目录下,要新建一个theme,可以先复制已存在的,然后重新命名它并把内容替换掉。"For more customisability you can write your own plugin in C which is, to be honest, not very easy."因为http://brej.org/blog/?cat=16这个帖子提供的theme制作方法比较复杂,所以这里参考了一个比较简单的帖子: http://giridharangm.blogspot.com/2013/08/change-ubuntu-splash-screen-create-your.html A.新建/usr/share/plymouth/theme/maria_theme目录; B.制作一张想用来当作背景的图片,记住是PNG格式的,此时可以使用xdpyinfo来获取屏幕分辨率; C.将图片拷贝进入maria_theme目录; D.编辑maria_theme.plymouth文件: Name=maria_theme Description=Theme Test by Marianna_z ModuleName=script ImageDir=/usr/share/plymouth/themes/maria_theme ScriptFile=/usr/share/plymouth/themes/maria_theme/maria_theme.script E.编辑maria_theme.script文件; wallpaper_image=Image("green.png"); screen_width=Window.GetWidth(); screen_height=Window.GetHeight(); resized_wallpaper_image=wallpaper_image.Scale(screen_width,screen_height); wallpaper_sprite=Sprite(resized_wallpaper_image); wallpaper_sprite.setZ(-100); F.安装theme; 安装theme使用的是update-alternatives命令: update-alternatives --install /usr/share/plymouth/themes/default.plymouth \ default.plymouth /usr/share/plymouth/themes/maria_theme/maria_theme.plymouth 100 update-alternatives --config default.plymouth G.调试theme; 除了前面提到的使用master的ssh调试之外,还有一种方法,分别在target的两个终端上执行: plymouthd --debug --tty='tty' --no-daemon plymouthd --show-splash 至此为止,就能够将开机动画和关机动画换成自己的green.png图片了,目前它还是静止的背景。