Grup 字体修改
2025年7月13日 · 1902 字 · 4 分钟
在高分辨率下让 GRUB 菜单字体变大:完整排查与解决方案
1️⃣ 发现问题
最近在一台 3200x2000 高分辨率屏幕的设备上安装 Linux,并通过 GRUB 引导系统时,发现 GRUB 菜单虽然能正常显示,但字体小到几乎无法辨认。
调整分辨率并没有解决根本问题,要么字体依然极小,要么需要牺牲分辨率(降低分辨率影响桌面体验)。因此需要寻找一个在保持高分辨率下,让 GRUB 菜单字体变大的优雅方案。
2️⃣ 分析原因
在 GRUB 中,影响菜单字体大小的因素主要有两个:
1️⃣ 分辨率(GRUB_GFXMODE)
- 高分辨率会导致默认 8x16 的 GRUB 字体显示得极小。
- 虽然可以通过降低分辨率解决字体过小的问题,但这并非最佳方案。
2️⃣ GRUB 加载的字体(*.pf2)
- GRUB 菜单显示使用的字体文件是
.pf2格式,不是普通的 TTF/OFT 字体。 - 默认使用的
unicode.pf2文件字号较小。 - 可以使用
grub-mkfont将自己喜欢的字体转换为更大字号的.pf2文件,供 GRUB 使用。
因此,如果我们希望在高分辨率下让字体变大,而不牺牲分辨率,最佳方案是: ✅ 使用 grub-mkfont 制作大字号字体,替换 GRUB 默认字体,保持高分辨率同时让菜单字体变大可读。
3️⃣ 如何解决
步骤总结:
✅ 使用 grub-mkfont 从自己喜欢的字体(如 MapleMono-Italic)生成大字号 .pf2 文件。
✅ 配置 GRUB 使用新生成的大字号字体文件。
✅ 更新 GRUB 配置并重启测试效果。
配置细节:
-
分辨率确认: 在 GRUB 命令行(启动时按
c)输入:videoinfo查看当前支持的分辨率,确认可以使用 3200x2000。
-
字体选择: 我使用了:
/home/ban/.local/share/fonts/MapleMono-Italic.ttf作为生成大字号 GRUB 字体的来源。
-
字号选择: 常用字号为 32、40、48、64,通常建议使用 48 或 64,在高分辨率下更清晰。
附:完整自动化配置脚本
以下是可直接保存执行的自动化脚本:
#!/usr/bin/env bash
set -e
echo "=== GRUB 大字体配置自动化脚本 (MapleMono-Italic) ==="
# 指定用户字体路径
FONT_SRC="/home/ban/.local/share/fonts/MapleMono-Italic.ttf"
# 检查 grub-mkfont 是否可用
if ! command -v grub-mkfont &>/dev/null; then
echo "❌ 未检测到 grub-mkfont,请先安装 grub-pc-bin"
exit 1
fi
# 检查字体是否存在
if [ ! -f "$FONT_SRC" ]; then
echo "❌ 未找到字体文件: $FONT_SRC"
echo "请确保已正确安装 MapleMono-Italic.ttf 于 ~/.local/share/fonts/"
exit 1
fi
# 用户输入字号
echo "请选择字号大小(常用:32, 40, 48, 64)"
read -rp "输入字号大小(默认 48): " SIZE
SIZE=${SIZE:-48}
if ! [[ "$SIZE" =~ ^[0-9]+$ ]]; then
echo "❌ 字号输入不合法"
exit 1
fi
# 创建字体目录
sudo mkdir -p /boot/grub/fonts
# 生成字体文件
FONT_DST="/boot/grub/fonts/MapleMonoItalic${SIZE}.pf2"
echo "正在生成字体文件: $FONT_DST"
sudo grub-mkfont -s "$SIZE" -o "$FONT_DST" "$FONT_SRC"
echo "✅ 字体文件已生成: $FONT_DST"
# 修改 /etc/default/grub
GRUB_CFG="/etc/default/grub"
LINE="GRUB_FONT=${FONT_DST}"
if grep -q "^GRUB_FONT=" "$GRUB_CFG"; then
echo "检测到已存在 GRUB_FONT,正在替换..."
sudo sed -i "s|^GRUB_FONT=.*|$LINE|" "$GRUB_CFG"
else
echo "GRUB_FONT 未设置,正在追加..."
echo "$LINE" | sudo tee -a "$GRUB_CFG" >/dev/null
fi
echo "✅ 已更新 $GRUB_CFG"
# 更新 grub
echo "正在更新 grub..."
sudo update-grub
echo "✅ grub 更新完成"
# 提示重启
read -rp "是否立即重启以生效?(y/N): " CONFIRM
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
echo "正在重启..."
sudo reboot
else
echo "请重启后查看 GRUB 字体效果。"
fi
使用方式:
1️⃣ 保存为:
setup_grub_big_font.sh
2️⃣ 赋予执行权限:
chmod +x setup_grub_big_font.sh
3️⃣ 执行:
./setup_grub_big_font.sh
4️⃣ 按提示选择字号,重启验证 GRUB 字体是否变大。
🩶 总结
✅ 高分辨率下 GRUB 字体小的问题,本质是默认字体字号太小导致。
✅ 使用 grub-mkfont 结合自定义字体和大字号可在保持高分辨率下让 GRUB 菜单字体变大、可读性更好。
✅ 使用自动化脚本快速生成和配置,节省重复操作时间,便于快速迁移和批量配置。
如果你也有高分屏 Linux 设备,希望在 GRUB 中体验更舒适的字体大小,不妨尝试以上方法,让你的启动界面也拥有更舒适的可读性与美感。
PS. 增加一个修改 grup 背景的脚本。
#!/usr/bin/env bash
set -e
echo "=== GRUB 背景图片配置脚本 ==="
# 支持的图片扩展名(小写)
SUPPORTED_EXT="png tga jpg jpeg"
# 让用户输入图片路径
read -rp "请输入背景图片完整路径(支持png/tga/jpg/jpeg): " IMG_PATH
# 校验文件是否存在
if [ ! -f "$IMG_PATH" ]; then
echo "❌ 文件不存在:$IMG_PATH"
exit 1
fi
# 获取文件扩展名(小写)
EXT="${IMG_PATH##*.}"
EXT="${EXT,,}"
# 检查是否支持格式
if ! echo "$SUPPORTED_EXT" | grep -qw "$EXT"; then
echo "❌ 不支持的图片格式:.$EXT"
echo "仅支持格式:$SUPPORTED_EXT"
exit 1
fi
# 目标目录和文件名
TARGET_DIR="/boot/grub"
TARGET_IMG="${TARGET_DIR}/background.${EXT}"
# 复制图片到目标目录
echo "正在复制图片到 $TARGET_IMG ..."
sudo cp "$IMG_PATH" "$TARGET_IMG"
sudo chmod 644 "$TARGET_IMG"
echo "✅ 图片复制完成"
# 修改 /etc/default/grub 配置
GRUB_CFG="/etc/default/grub"
LINE="GRUB_BACKGROUND=\"$TARGET_IMG\""
if grep -q "^GRUB_BACKGROUND=" "$GRUB_CFG"; then
echo "检测到已有 GRUB_BACKGROUND,正在替换..."
sudo sed -i "s|^GRUB_BACKGROUND=.*|$LINE|" "$GRUB_CFG"
else
echo "未检测到 GRUB_BACKGROUND,正在追加..."
echo "$LINE" | sudo tee -a "$GRUB_CFG" >/dev/null
fi
echo "✅ 已更新 $GRUB_CFG"
# 更新 grub 配置
echo "正在更新 grub ..."
sudo update-grub
echo "✅ grub 更新完成"
# 询问是否重启生效
read -rp "是否立即重启以查看效果?(y/N): " CONFIRM
if [[ "$CONFIRM" =~ ^[Yy]$ ]]; then
echo "正在重启..."
sudo reboot
else
echo "请手动重启后查看 GRUB 背景效果。"
fi