Grub2启动项的修改和相关操作命令

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
容器镜像服务 ACR,镜像仓库100个 不限时长
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: **GRUB2**是Linux的主要引导加载程序,用于启动时显示菜单。要修改启动项,应编辑`/etc/default/grub`,然后运行`grub-mkconfig -o /boot/grub/grub.cfg`更新配置,最后确保`grub.cfg`只读。若需修复引导问题,可启动到Ubuntu Live CD/DVD,挂载根和boot分区,重新安装GRUB2,并根据需要修复`grub.cfg`或Windows引导项。遵循此指南,能安全管理GRUB2并解决引导问题。

引言

GRUB2(Grand Unified Bootloader 2)作为现代Linux发行版中的主要引导加载程序,负责在系统启动时呈现启动选项菜单。然而,有时GRUB2配置可能需要调整,比如去除不需要的启动项或修复因升级或其他更改引起的引导问题。本文将指导你如何安全地修改GRUB2启动项,并修复可能遇到的引导问题。

修改GRUB2启动项

虽然直接编辑/boot/grub/grub.cfg文件是一种可行的方法,但这并非官方推荐的做法。GRUB2的设计理念是通过修改源配置文件并重新生成grub.cfg来更新启动项。以下是推荐的流程:

  1. 编辑源配置文件
    首先,编辑/etc/default/grub文件,这是最直观且推荐的配置修改点。
  2. Bash
sudo gedit /etc/default/grub
  1. 更新GRUB配置
    执行以下命令,生成新的grub.cfg文件。
  2. Bash
sudo grub-mkconfig -o /boot/grub/grub.cfg
  1. 这个命令会根据你的配置文件自动生成grub.cfg,确保所有更改都被应用。
  2. 权限恢复
    更新后,记得将grub.cfg文件的权限恢复为只读状态。
  3. Bash
sudo chmod 444 /boot/grub/grub.cfg

GRUB2引导修复

当Ubuntu系统升级或遇到引导问题时,可以通过以下步骤修复GRUB2引导:

  1. 启动至Live CD/DVD或USB
    使用Ubuntu Live CD/DVD或USB启动进入系统。
  2. 挂载根分区和boot分区
    确定你的根分区和boot分区位置,然后挂载它们。
  3. Bash
1sudo mount /dev/sda7 /mnt
2sudo mount /dev/sda6 /mnt/boot
  1. 如果你的/boot分区和根分区在同一个分区,只需要挂载根分区即可。
  2. 重新安装GRUB2
    使用grub-install命令重新安装GRUB2到指定设备。
  3. Bash
sudo grub-install --root-directory=/mnt /dev/sda
  1. 更新启动项
    如果需要修改启动项,按照之前提到的步骤编辑/etc/default/grub,然后重新生成grub.cfg
  2. 修复Windows引导项
    若需要修复Windows引导项,修改grub.cfg中的相关条目。
  3. Diff
- menuentry "Microsoft Windows XP Professional" {
-   set root=(hd0,1)
-   search --no-floppy --fs-uuid --set 4a807ca0807c93e3
-   drivemap -s (hd0) $root
-   chainloader +1 }
+ menuentry "Microsoft Windows XP Professional" {
+   set root=(hd0,1)
+   chainloader +1 }
  1. 保存并重启
    完成所有修改后,保存文件并重启计算机。

结论

通过遵循上述指南,你可以安全地管理GRUB2启动项并修复潜在的引导问题。记住,GRUB2的配置更改应该通过/etc/default/grub文件进行,而不是直接修改grub.cfg。这样可以确保每次系统更新或内核升级后,你的定制设置依然保留。




以下为参考内容, 介绍Grub2的相关知识




GRUB2基础教程与配置详解

GRUB2启动过程概览

GRUB2,作为现代Linux发行版中的首选引导加载器,其工作流程包括将引导文件boot.img写入主引导记录(MBR),通常位于第一硬盘。启动过程中,GRUB2依据MBR信息定位启动分区,加载core.imggrub.cfg配置文件,最终展示启动菜单供用户选择。菜单界面支持通过键盘导航,编辑选定项,以及执行额外命令。

GRUB2常用命令

GRUB2提供一系列强大且灵活的命令集,用于系统引导的管理和故障排除:

  1. help - 查看命令用法。
  2. set - 设置变量值。
  3. default - 定义默认引导的操作系统。
  4. timeout - 设置无用户输入时自动引导的等待时间。
  5. root - 指定用于启动系统的分区。
  6. insmod & rmmod - 加载或移除模块。
  7. drivemap - 映射驱动器,主要用于Windows系统引导。
  8. ls - 列出设备和分区。
  9. search - 搜索特定文件或标签。
  10. loopback - 建立回环设备。
  11. pager - 分页显示输出。
  12. linux - 替代kernel命令,用于指定内核。
  13. chainloader - 调用另一个引导加载器。

GRUB2配置文件详解

grub.cfg是GRUB2的核心配置文件,由脚本grub-mkconfig自动生成。它包含了从系统启动到菜单展示的全部细节,如文件系统模块加载、显示设置、菜单样式以及具体的启动项配置。

核心配置段落解析
  • /etc/grub.d/00_header - 包含基本初始化设置,如默认启动项、模块加载、显示模式等。
  • /etc/grub.d/05_debian_theme - 设置菜单颜色主题。
  • /etc/grub.d/10_linux - 自动添加当前root分区的Linux引导项。
  • /etc/grub.d/20_memtest86+ - 添加内存测试选项。
  • /etc/grub.d/30_os-prober - 自动探测并添加其他操作系统引导项。
  • /etc/grub.d/30_otheros - 手动添加的非Linux系统引导项。
  • /etc/grub.d/40_custom - 用户自定义启动项。
示例配置

Bash

menuentry "CentOS-base, (2.6.18-164.el5)" {
    insmod ext2
    set root=(hd0,3)
    linux /boot/vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
    initrd /boot/initrd-2.6.18-164.el5.img
}

Bash

menuentry "Ubuntu, Linux 2.6.31-14-generic-pae" {
    recordfail=1
    if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    set quiet=1
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set 91d7cb26-bd24-4bbf-9423-c81bb9be0a06
    linux /boot/vmlinuz-2.6.31-14-generic-pae root=UUID=91d7cb26-bd24-4bbf-9423-c81bb9be0a06 ro quiet splash
    initrd /boot/initrd.img-2.6.31-14-generic-pae
}

结论

通过深入理解GRUB2的工作原理及其配置文件结构,用户能够更有效地管理多系统环境,实现定制化的启动流程,以及解决启动阶段可能出现的各种问题。掌握GRUB2命令和配置技巧,是Linux系统管理员的一项必备技能。



相关文章
|
6月前
|
Linux 程序员 Shell
Linux编辑器,开机重启,用户注销,用户管理 常用命令
Linux编辑器,开机重启,用户注销,用户管理 常用命令
129 0
|
Linux Shell 数据安全/隐私保护