解决Deepin中Grub字体太小问题

0x00 背景

最近重装了一下Deepin v20系统,发现开机时Grub菜单字体变小了,看着很不舒服,就尝试着寻找了下解决方法。

Grub配置文件路径是:/etc/default/grub,所以主要就是修改这个文件。该文件的默认内容为:

  1. # Written by com.deepin.daemon.Grub2
  2. DEEPIN_GFXMODE_ADJUSTED=1
  3. GRUB_BACKGROUND=/boot/grub/themes/deepin-fallback/background.jpg
  4. GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
  5. GRUB_DEFAULT=0
  6. GRUB_DISTRIBUTOR="`/usr/bin/lsb_release -d -s 2>/dev/null || echo UOS 20`"
  7. GRUB_GFXMODE=3840x2160,1920x1080,1024x768,auto
  8. GRUB_THEME=/boot/grub/themes/deepin-fallback/theme.txt
  9. GRUB_TIMEOUT=5
COPY

修改这个文件后,使用update-grub命令更新Grub配置,然后重启电脑。

0x01 修改GRUB_GFXMODE配置

网上找到的比较多的解决方法是修改GRUB_GFXMODE配置,也就是修改Grub使用的分辨率:GRUB_GFXMODE=1024x768,从而让字变大。不过在我电脑上,只有1024x768这个分辨率能够生效,而且看起来字不仅偏大,背景图片也变模糊了。所以这种方法不算是特别好的解决方法。

0x02 增加GRUB_FONT配置

网上另一种解决方案是先通过grub2-mkfont命令生成较大一些的字体,然后修改GRUB_FONT配置,指向生成的字体文件路径。具体方法如下:

  1. $ sudo grub-mkfont --output=/boot/grub/fonts/DejaVuSansMono36.pf2 --size=36 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
COPY

然后增加配置:GRUB_FONT=/boot/grub/fonts/DejaVuSansMono36.pf2

不过这种方法也没有生效。后来发现是因为当GRUB_FONTGRUB_THEME同时存在时,会优先使用GRUB_THEME中的配置。

0x03 修改主题文件

Deepin中默认使用的Grub主题文件路径是:/boot/grub/themes/deepin-fallback/theme.txt。该文件文件如下:

  1. #version:17
  2. #lang:zh_CN.UTF-8
  3. #themeInputDir:/usr/share/dde-api/data/grub-themes/deepin-fallback
  4. #head end
  5. title-text: ""
  6. desktop-image: "background.jpg"
  7. desktop-color: "#000000"
  8. terminal-font: "Unifont Regular 16"
  9. terminal-box: "terminal_box_*.png"
  10. terminal-left: "0"
  11. terminal-top: "0"
  12. terminal-width: "100%"
  13. terminal-height: "100%"
  14. terminal-border: "0"
  15. + boot_menu {
  16. left = 15%
  17. top = 20%
  18. width = 70%
  19. height = 60%
  20. item_font = "Unifont Regular 16"
  21. item_color = "#cccccc"
  22. selected_item_color = "#0099ff"
  23. item_height = 24
  24. item_spacing = 12
  25. selected_item_pixmap_style = "select_*.png"
  26. scrollbar_thumb = "scrollbar_thumb_*.png"
  27. scrollbar_width = 6
  28. menu_pixmap_style = "menu_*.png"
  29. }
  30. + label {
  31. left = 0
  32. top = 97%
  33. width = 100%
  34. align = "center"
  35. id = "__timeout__"
  36. color = "#99E53E"
  37. font = "Unifont Regular 16"
  38. text = "在 %d 秒内启动"
  39. }
  40. + label {
  41. left = 0
  42. top = 94%
  43. width = 100%
  44. align = "center"
  45. color = "#99E53E"
  46. font = "Unifont Regular 16"
  47. text = "使用 ↑ 和 ↓ 键移动选择条,Enter 键确认,E 键编辑启动命令,C 键进入命令行"
  48. }
COPY

可以看到,主题里使用的是Unifont Regular 16字体,看名字可以知道字体大小是16,在4K分辨率下看起来会比较小。所以只要生成大号的字体替换这里的配置就可以了。

生成大号字体的命令是:

  1. $ sudo grub-mkfont --output=/boot/grub/themes/deepin-fallback/unifont-regular-36.pf2 --size=36 /usr/share/fonts/truetype/unifont/unifont.ttf
COPY

然后将主题文件中的Unifont Regular 16都替换为Unifont Regular 36,并重启电脑。可以看到,字体的确变大了。可以根据实际情况动态修改字体的大小。

0x04 结论

此方法理论上不仅可以用于Deepin系统,其它Linux系统应该也可以适用。

分享
0 comments
Anonymous
Markdown is supported

Be the first guy leaving a comment!