0x00 背景
最近重装了一下Deepin v20系统,发现开机时Grub菜单字体变小了,看着很不舒服,就尝试着寻找了下解决方法。
Grub配置文件路径是:/etc/default/grub
,所以主要就是修改这个文件。该文件的默认内容为:
# Written by com.deepin.daemon.Grub2
DEEPIN_GFXMODE_ADJUSTED=1
GRUB_BACKGROUND=/boot/grub/themes/deepin-fallback/background.jpg
GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
GRUB_DEFAULT=0
GRUB_DISTRIBUTOR="`/usr/bin/lsb_release -d -s 2>/dev/null || echo UOS 20`"
GRUB_GFXMODE=3840x2160,1920x1080,1024x768,auto
GRUB_THEME=/boot/grub/themes/deepin-fallback/theme.txt
GRUB_TIMEOUT=5
修改这个文件后,使用update-grub
命令更新Grub配置,然后重启电脑。
0x01 修改GRUB_GFXMODE配置
网上找到的比较多的解决方法是修改GRUB_GFXMODE
配置,也就是修改Grub使用的分辨率:GRUB_GFXMODE=1024x768
,从而让字变大。不过在我电脑上,只有1024x768
这个分辨率能够生效,而且看起来字不仅偏大,背景图片也变模糊了。所以这种方法不算是特别好的解决方法。
0x02 增加GRUB_FONT配置
网上另一种解决方案是先通过grub2-mkfont
命令生成较大一些的字体,然后修改GRUB_FONT
配置,指向生成的字体文件路径。具体方法如下:
$ sudo grub-mkfont --output=/boot/grub/fonts/DejaVuSansMono36.pf2 --size=36 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
然后增加配置:GRUB_FONT=/boot/grub/fonts/DejaVuSansMono36.pf2
。
不过这种方法也没有生效。后来发现是因为当GRUB_FONT
与GRUB_THEME
同时存在时,会优先使用GRUB_THEME
中的配置。
0x03 修改主题文件
Deepin中默认使用的Grub主题文件路径是:/boot/grub/themes/deepin-fallback/theme.txt
。该文件文件如下:
#version:17
#lang:zh_CN.UTF-8
#themeInputDir:/usr/share/dde-api/data/grub-themes/deepin-fallback
#head end
title-text: ""
desktop-image: "background.jpg"
desktop-color: "#000000"
terminal-font: "Unifont Regular 16"
terminal-box: "terminal_box_*.png"
terminal-left: "0"
terminal-top: "0"
terminal-width: "100%"
terminal-height: "100%"
terminal-border: "0"
+ boot_menu {
left = 15%
top = 20%
width = 70%
height = 60%
item_font = "Unifont Regular 16"
item_color = "#cccccc"
selected_item_color = "#0099ff"
item_height = 24
item_spacing = 12
selected_item_pixmap_style = "select_*.png"
scrollbar_thumb = "scrollbar_thumb_*.png"
scrollbar_width = 6
menu_pixmap_style = "menu_*.png"
}
+ label {
left = 0
top = 97%
width = 100%
align = "center"
id = "__timeout__"
color = "#99E53E"
font = "Unifont Regular 16"
text = "在 %d 秒内启动"
}
+ label {
left = 0
top = 94%
width = 100%
align = "center"
color = "#99E53E"
font = "Unifont Regular 16"
text = "使用 ↑ 和 ↓ 键移动选择条,Enter 键确认,E 键编辑启动命令,C 键进入命令行"
}
可以看到,主题里使用的是Unifont Regular 16
字体,看名字可以知道字体大小是16
,在4K分辨率下看起来会比较小。所以只要生成大号的字体替换这里的配置就可以了。
生成大号字体的命令是:
$ sudo grub-mkfont --output=/boot/grub/themes/deepin-fallback/unifont-regular-36.pf2 --size=36 /usr/share/fonts/truetype/unifont/unifont.ttf
然后将主题文件中的Unifont Regular 16
都替换为Unifont Regular 36
,并重启电脑。可以看到,字体的确变大了。可以根据实际情况动态修改字体的大小。
0x04 结论
此方法理论上不仅可以用于Deepin系统,其它Linux系统应该也可以适用。