恩,介绍一下怎么制作 grub2 theme。什么是 grub2 theme ? 我在 另一个帖子里 ](启动图形界面(grub2,plymouth,kdm,ksplash ) + 锁屏背景图片的修改) 已经讲过了。
简单的说就是你开机看到的第一个画面。我把制作好了的主题上传了。要用到的素材都在里面 mytheme.tar.gz (868 KB) 方便同学们实践。(好吧,我做的这个主题非常的难看。。。。就像我下面会说的,制作不难,设计才难,要不断的调整,随手做的基本上都不会太好看)
我们知道关于这个主题的全部内容都放在一个文件夹里,理论上这个文件夹可以在任何地方,只要在 /etc/default 中设置让 grub2 可以找到它就可以了。但一般的我们把它们集中放在 /boot/grub2/themes 这个文件夹里。这个文件夹里有什么呢?几个大的要素“图片” “字体” 和一份安排这些图片字体使其变得好看的配置文件。
好了下面我们一边做一边讲解。你也可以把默认的 openSUSE 主题复制到主文件夹下,对照着它看看究竟是怎么一回事。
首先,创建一个文件夹来存放主题,我们可以先把他放在主目录下,比如叫 mytheme,然后在这个文件夹中创建一个配置文件,随便起个名字比如就叫 theme.txt。然后我们就可以开始编辑它了。在编辑的过程中,我们可以逐步的添加自己想要的图片文件。
1.title-text
就是在 grub2 开始最上面的标题,可以省缺,比如 openSUSE 默认主题就是省缺的。它的位置是在上方的中间位置。我们随便写一个让你可以在完成
以后知道这个东西究竟在哪里,万一以后要用到。我们就这样写好了。
title-text: " 欢迎来到 openSUSE"
2.desktop-image
就是背景图片了。随便取个名字比如 background.png ,然后你可以这样写
desktop-image: "background.png"
找一张喜欢的 png 图片改名为 background.png 放在这个 mytheme 文件夹下。现在我就随便从 google+ 上偷张图好了。你要自己做的时候一定要搭配好,比如和 plymouth 的图片是否统一,如果不统一切换过去看是否协调。
3.terminal-font
这个就是我们要使用的字体了。那么这些字体哪里来?可以用 grub2-mkfont 生成的或者从别的 grub2-theme 里复制。我们来用 grub2-mkfont 生成一个。先选择一个你喜欢的字体,可以去 /usr/share/fonts 文件夹下找,比如我选一个 /usr/share/fonts/truetype/wqy-microhei.ttc 然后就
sudo grub2-mkfont -s 14 -o ~/mytheme/wqy-microhei.pf2 -n wqy-microhei /usr/share/fonts/truetype/wqy-microhei.ttc
-o 用来制定输出的文件,文件名一般以 pf2 为后缀, -s 用来指定字体的大小, -n 用来制定字体的名字。更多的内容可以 man grub2-mkfont
好了,我们可以这样来使用这个字体
terminal-font: "wqy-microhei"
我们还可以使用
title-color: "#FFFFFF"
来给字体设置颜色。关于颜色的选项可以参考 这篇文章 ](http://wiki.rosalab.ru/en/index.php/Grub2_theme_/_reference)
4.terminal-box
一般如果你不使用主题话你会发现中间给你选择的一些启动菜单是被一个框框框住的,那么这个就是来定义使用这些框框样式的,一般的你可以这样写
terminal-box: "inbox_*.png"
然后在文件夹中放置这样的一些文件
顾名思义就是 东、南、西、北、中、东南、西南、东北、西北这几个方位了。
在这里为了大家方便,我提供了一份在主题里,你们可以自己复制进去就好。
5.boot_menu
下面是重头戏,设计启动菜单的样子,这个大概是这样的。
+ boot_menu {
left = 50%-300
top = 50%-100
width = 600
height = 289
selected_item_color = "#0000FF"
selected_item_pixmap_style = "button_*.png"
menu_pixmap_style = "inbox_*.png"
item_padding = 20
item_spacing = 20
item_height = 30
}
好了,读图时代,我们一个通过图片来让大家来感受一下。
我们简单的这样写
+ boot_menu {
left = 50%-300
top = 50%-100
width = 600
height = 300
selected_item_color = "#0000FF"
}
那么,他就是这样的
这个设置的就是,左边开始的地方,上边开始的地方,宽度,高度。还有被选择的文字的颜色
增加一点内容
+ boot_menu {
left = 50%-300
top = 50%-100
width = 600
height = 289
selected_item_color = "#0000FF"
selected_item_pixmap_style = "button_*.png"
menu_pixmap_style = "inbox_*.png"
item_padding = 20
item_spacing = 20
item_height = 30
}
注意这个 button 和上面所说的 inbox 的规则是一样一样的。关于其它参数的说明可以看下图:
怎么只有文字,当然我们可以用 icon 再追加下面内容
icon_width = 32
icon_height = 32
item_icon_space = 4
大概的示意图就是这样的
那么,怎么使用 icon 呢,你可以在 mytheme 文件夹下面创建一个 icon 文件,把发行版 logo 的 png 文件放进去,完了,把名字和 /etc/default/grub 文件中的 GRUB_DISTRIBUTOR 统一,比如默认的为 GRUB_DISTRIBUTOR=“openSUSE 13.1”
名字里有空格不方面,我们可以改名为 GRUB_DISTRIBUTOR=“openSUSE”,然后在 icon 文件夹里放一个 openSUSE.png 文件,系统就会找到它了,或者你吧 icon 里的 png 文件改成 openSUSE-13-1.png。用 - 代替空格和 “.”。这些 logo 可以去 默认的 openSUSE 主题文件夹里找,/boot/grub2/themes/openSUSE/icon 里有大多数主流发行版的 logo。如果你是多系统引导的话,可以使用 sudo os-prober 查看你的发行版在这里使用的名字,然后和 png 文件名统一。
6.progress_bar
就是开机时候会有一段时间的等待,让你来选择引导的选项。然后会有一个进度条。这个和上面的 boot_menu 差不多
+ progress_bar {
left = 50%-300
top = 50%+200
width = 600
height = 50
id = "__timeout__"
text = "@TIMEOUT_NOTIFICATION_LONG@"
bar_style = "inbox_*.png"
highlight_style = "progress_*.png"
}
关于 text 这段,就是进度条上显示的文字 @TIMEOUT_NOTIFICATION_LONG@ 表示他会显示自动倒计时的文字
它的几个选项是这样的。
7.circular_progress
就好比 win8 启动时那个不断转动的圈圈,其实就是两张图片的叠加。我们来看一个实例。
+ circular_progress {
left = 50%-450
top = 50%+310
id = "__timeout__"
width = 51
height = 51
center_bitmap = "center.png"
tick_bitmap = "tick.png"
num_ticks = 8
}
那个 center_bitmap=“center.png” 用来指定中间的图片,我使用了一个红色的圈圈,你可以使用 openSUSE 的 logo 试一试,正好也是圆的。那个 tick_bitmap=“tick.png” 则指定了绕着那个圈圈转的小点的样式。
8.label
就是标签啦,可以显示你想要显示的文字。比如
+ label {
left = 50%-300
top = 50%+220
height = 30
width = 600
color = "white"
align = "right"
text = "Some text."
}
也可以显示动态的文字,比如像上面的进度条显示的一样。
+ label {
left = 50%-350
top = 50%+260
height = 30
width = 30
id = "__timeout__"
color = "white"
}
或者说一些固定的提示语
+ label {
left = 50%-300
top = 50%+220
height = 30
width = 600
color = "cyan"
align = "center"
text = "@KEYMAP_SHORT@"
}
好了,就这样简单,我们自己的一个主题做好了。。。最后一步,把它复制到 /boot/grub2/themes 文件夹下,编辑 /etc/default/gurb 让 grub2 找到它。或者简单一点使用 YaST 的引导加载器。。。。现在你可以开始尝试一下你的新主题,恩,确实非常非常粗糙难看。。。
- 小结
好了,写了那么多有点乱。。。。我们来总结一下。。。
总的来说 grub2 themes 的配置文件写作是简单的。比较模糊的地方可以模仿别人的。比较难的是找到好的搭配图片。安排好合理的布局。
你去看默认的 openSUSE 主题,你会发现它非常的短,只用到了进度条和菜单。
配置文件主要就是那么几点。
a. 全局的设置:标题啊,字体啊,背景图片啊。关于字体,建议复制默认主题的。如果要自己生成的话可能需要反复调整好几次。。。像刚才那样随意的生成可能存在大小显示的问题。。。
b. 各个要素的安排,无非就是 boot_menu progress_bar circular_progress circular_progress label。他们的配置也非常的相似,最前面的都是安排他们的位置。其实影响美观的主要的也就是位置大小。还有前面说的各种图片。
好了,大概就是这样。
PS: 本文很大的参考了 这里 ](http://wiki.rosalab.ru/en/index.php/Grub2_theme_tutorial) 。用了很多它的素材,某种意义就是它的简化版,那边的跟详细一点,想深入的同学可以参考。
PS1: 大家有什么好的创意,比如设计的样式,欢迎分享。或者说有什么好看的图片非常适合做 grub2 背景的,也可以推荐。最最好的, 希望大家可以踊跃的分享自己的作品。
PS3:给自己挖一个坑,看能不能把 plymouth , kdm 和 ksplash 主题制作介绍都做出来,最后整理到 wiki。。。