📜  如何自定义 grub (1)

📅  最后修改于: 2023-12-03 15:24:53.726000             🧑  作者: Mango

如何自定义 GRUB

GRUB(GRand Unified Bootloader)是一个常用于 Linux 系统的引导加载程序。默认情况下,GRUB 的外观和功能都很基本。但是,我们可以通过自定义 GRUB 的配置文件来改变它的外观和行为。

下面是一份详细的教程,介绍如何自定义 GRUB。

步骤一:编辑 GRUB 配置文件

GRUB 的配置文件位于 /boot/grub/menu.lst/boot/grub/grub.cfg(取决于你的操作系统和 GRUB 版本)。在大多数情况下,我们应该编辑 menu.lst 文件。

使用文本编辑器如 vimnano 打开文件,然后开始编辑。

sudo nano /boot/grub/menu.lst
步骤二:改变 GRUB 的默认设置

GRUB 的默认设置在文件的顶部。你可以修改 GRUB 的超时时间,决定 GRUB 界面显示多长时间后自动启动默认内核。也可以设定默认启动内核,设定启动参数等等。

# GRUB Default Settings
timeout         10
default         0
color           cyan/blue white/blue
步骤三:添加新的启动项

如果你有多个内核版本或者多个操作系统,你可以在 GRUB 中添加不同的启动项。在 menu.lst 文件中,每一个启动项都是一个分段(section)。下面的代码是一个简单的例子。

# Ubuntu 16.04 LTS, kernel 4.4.0-47-generic
title           Ubuntu 16.04 LTS, kernel 4.4.0-47-generic
root            (hd0,0)
kernel          /vmlinuz-4.4.0-47-generic root=/dev/sda1 ro
initrd          /initrd.img-4.4.0-47-generic

上面的代码分为四部分:

  • 标题 (title):这里可以任意定义一个标题文字。
  • 根设备 (root):指定内核所在的分区或设备。
  • 内核 (kernel):指定要加载的内核文件和启动参数。内核文件一般是 /vmlinuz,启动参数需要根据你的具体情况设定。
  • RAM 磁盘 (initrd):若你的内核需要通过 ramdisk 启动,此处需要指定 ramdisk 文件。

注意:从 Ubuntu 9.10 开始,GRUB 的配置文件默认使用了 "UUID" 定位设备,而不再使用硬盘分区的 "hd" 表示方法。如果你想使用 "hd" 表示方法,你需要修改一行代码:

# Old style
root            (hd0,0)
# New style
# root            UUID=1b2e9b4d-xxxx-xxxx-xxxx-xxxxxxxxxxxx
步骤四:改变 GRUB 的外观

有多个途径可以改变 GRUB 的外观。最简单的方法是改变字体、颜色和背景图片。下面演示一些常用的修改操作。

# Change font
# font = /usr/share/grub/unicode.pf2
# fontsize = 14

# Change color
# color_normal = light-blue/black
# color_highlight = green/black

# Add a background image
# set root=(hd0,0)
# gfxmenu=/boot/gfxmenu
# insmod jpeg
# background_image /boot/grub/background.jpg
步骤五:保存并测试

最后,保存 menu.lst 文件。输入下述代码重启系统,在 GRUB 引导前,你应该可以看到新的 GRUB 外观。

sudo reboot
总结

通过自定义 GRUB 配置文件,我们可以改变 GRUB 的外观、自定义启动项、修改内核启动参数等等。这样可以为我们带来方便和个性化。

参考链接:

  • https://www.gnu.org/software/grub/manual/grub/grub.html
  • https://help.ubuntu.com/community/Grub2
  • https://www.linux.com/learn/how-install-and-configure-grub-2-ubuntu
  • https://www.tldp.org/HOWTO/Framebuffer-HOWTO-5.html