跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

12 The boot loader GRUB 2 编辑源文件

摘要

本章描述了如何配置 GRUB 2,它是 openSUSE® Leap 中使用的引导加载程序。YaST 模块可用于配置最重要的设置。整个引导过程在 第 9 章,引导过程简介 中概述。有关 UEFI 机器的安全启动支持的详细信息,请参阅 第 14 章,UEFI (统一可扩展固件接口)

12.1 GRUB legacy 和 GRUB 2 之间的主要区别 编辑源文件

  • 配置存储在不同的文件中。

  • 支持更多文件系统(例如,Btrfs)。

  • 可以直接读取存储在 LVM 或 RAID 设备上的文件。

  • 用户界面可以被翻译并使用主题进行更改。

  • 包含一种加载模块以支持附加功能的机制,例如文件系统等。

  • 自动搜索并生成其他内核和操作系统的引导条目,例如 Windows。

  • 包含一个类似 Bash 的最小控制台。

12.2 配置文件结构 编辑源文件

GRUB 2 的配置基于以下文件

/boot/grub2/grub.cfg

此文件包含 GRUB 2 菜单项的配置。它取代了 GRUB Legacy 中使用的 menu.lstgrub.cfg 不应进行编辑——它由命令 grub2-mkconfig -o /boot/grub2/grub.cfg 自动生成。

/boot/grub2/custom.cfg

此可选文件在引导时由 grub.cfg 直接引用,可用于将自定义项添加到引导菜单。从 openSUSE Leap Leap 42.2 开始,这些条目在使用 grub-once 时也会被解析。

/etc/default/grub

此文件控制 GRUB 2 的用户设置,通常包括其他环境设置,例如背景和主题。

位于 /etc/grub.d/ 下的脚本

在执行命令 grub2-mkconfig -o /boot/grub2/grub.cfg 期间读取此目录中的脚本。它们的指令被集成到主配置文件 /boot/grub/grub.cfg 中。

/etc/sysconfig/bootloader

此配置文件保存某些基本设置,例如引导加载程序类型以及是否启用 UEFI 安全启动支持。

/boot/grub2/x86_64-efi,

这些配置文件包含特定于体系结构的可选项。

GRUB 2 可以通过多种方式进行控制。从现有配置中选择的引导条目可以从图形菜单(启动画面)中选择。配置从文件 /boot/grub2/grub.cfg 加载,该文件由其他配置文件编译(如下所示)。所有 GRUB 2 配置文件都被视为系统文件,您需要 root 权限才能编辑它们。

Note
注意:激活配置更改

在手动编辑 GRUB 2 配置文件后,您需要运行 grub2-mkconfig -o /boot/grub2/grub.cfg 以激活更改。但是,使用 YaST 更改配置时,这没有必要,因为 YaST 会自动运行此命令。

12.2.1 文件 /boot/grub2/grub.cfg 编辑源文件

带有引导菜单的图形启动画面基于 GRUB 2 配置文件 /boot/grub2/grub.cfg,其中包含有关可以由菜单引导的所有分区或操作系统的信息。

每次系统引导时,GRUB 2 都会直接从文件系统加载菜单文件。因此,在更改配置文件后,GRUB 2 不需要重新安装。 grub.cfg 在内核安装或删除时自动重建。

grub.cfg 由文件 /etc/default/grub 和位于 /etc/grub.d/ 目录中的脚本在运行命令 grub2-mkconfig -o /boot/grub2/grub.cfg 时编译而成。因此,您不应手动编辑该文件。相反,编辑相关源文件或使用 YaST 引导加载程序 模块来修改配置,如 第 12.3 节,“使用 YaST 配置引导加载程序” 中所述。

12.2.2 文件 /etc/default/grub 编辑源文件

GRUB 2 的更多常规选项属于此文件,例如显示菜单的时间或要引导的默认操作系统。要列出所有可用选项,请参阅以下命令的输出

> grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub2-mkconfig | grep GRUB_

您可以在 /etc/grub.d 目录中的脚本中引入自定义变量并在以后使用它们。

编辑 /etc/default/grub 后,使用 grub2-mkconfig -o /boot/grub2/grub.cfg 更新主配置文件。

Note
注意:范围

此文件中指定的所有选项都是影响所有引导条目的常规选项。特定于 Xen 超visor 的选项包括 _XEN_ 子字符串。

Important
重要:转义内部引号

包含空格的更复杂的选项需要引用,以便将其处理为一个选项。此类内部引号需要正确转义,例如

GRUB_CMDLINE_LINUX_XEN="debug loglevel=9 log_buf_len=5M \"ddebug_query=file drivers/xen/xen-acpi-processor.c +p\""
GRUB_DEFAULT

设置引导默认的引导菜单条目。其值可以是数字值、完整的菜单条目名称或 saved

GRUB_DEFAULT=2 引导第三个(从零开始计数)引导菜单条目。

GRUB_DEFAULT="2>0" 引导第三个顶级菜单条目的第一个子菜单条目。

GRUB_DEFAULT="Example boot menu entry" 引导标题为 Example boot menu entry 的菜单条目。

GRUB_DEFAULT=saved 引导由 grub2-oncegrub2-set-default 命令指定的条目。虽然 grub2-reboot 仅为下一次引导设置默认引导条目,而 grub2-set-default 会设置默认引导条目,直到更改。 grub2-editenv list 列出下一个引导条目。

GRUB_HIDDEN_TIMEOUT

等待指定的秒数,直到用户按下键。在此期间,除非用户按下键,否则不会显示任何菜单。如果在指定的时间内未按下任何键,则控制权传递给 GRUB_TIMEOUTGRUB_HIDDEN_TIMEOUT=0 首先检查是否按下了 Shift 键,如果按下了,则显示引导菜单,否则立即引导默认菜单条目。这是 GRUB 2 识别唯一可引导操作系统时默认设置。

GRUB_HIDDEN_TIMEOUT_QUIET

如果指定为 false,则在 GRUB_HIDDEN_TIMEOUT 功能处于活动状态时,将在空白屏幕上显示倒计时计时器。

GRUB_TIMEOUT

显示引导菜单的时间段(以秒为单位),然后自动引导默认引导条目。如果按下键,则取消超时,GRUB 2 等待您手动进行选择。 GRUB_TIMEOUT=-1 将导致菜单显示,直到您手动选择引导条目。

GRUB_CMDLINE_LINUX

此行中的条目添加到正常模式和恢复模式的引导条目末尾。使用它将内核参数添加到引导条目。

GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX 相同,但条目仅附加在正常模式下。

GRUB_CMDLINE_LINUX_RECOVERY

GRUB_CMDLINE_LINUX 相同,但条目仅附加在恢复模式下。

GRUB_CMDLINE_LINUX_XEN_REPLACE

此条目替换所有 Xen 引导条目的 GRUB_CMDLINE_LINUX 参数。

GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT

GRUB_CMDLINE_LINUX_XEN_REPLACE 相同,但它仅替换 GRUB_CMDLINE_LINUX_DEFAULT 的参数。

GRUB_CMDLINE_XEN

这些条目传递给 Xen 超visor Xen 菜单的正常模式和恢复模式。例如

GRUB_CMDLINE_XEN="loglvl=all guest_loglvl=all"
Tip
提示:Xen 超visor 选项

https://xenbits.xen.org/docs/unstable/misc/xen-command-line.html 中找到完整的 Xen 超visor 选项列表

GRUB_CMDLINE_XEN_DEFAULT

GRUB_CMDLINE_XEN 相同,但条目仅附加在正常模式下。

GRUB_TERMINAL

启用并指定输入/输出终端设备。可以是 console(PC BIOS 和 EFI 控制台)、serial(串行终端)、ofconsole(Open Firmware 控制台)或默认的 gfxterm(图形模式输出)。也可以通过引用所需的选项来启用多个设备,例如,GRUB_TERMINAL="console serial"

GRUB_GFXMODE

用于 gfxterm 图形终端的分辨率。您只能使用您的显卡(VBE)支持的模式。默认值为“auto”,它尝试选择首选分辨率。您可以通过在 GRUB 2 命令行中键入 videoinfo 来显示 GRUB 2 可用的屏幕分辨率。在显示 GRUB 2 引导菜单屏幕时,通过键入 C 可以访问命令行。

您还可以通过将颜色深度附加到分辨率设置来指定颜色深度,例如,GRUB_GFXMODE=1280x1024x24

GRUB_BACKGROUND

gfxterm 图形终端设置背景图像。该图像必须是 GRUB 2 在引导时可读取的文件,并且必须以 .png.tga.jpg.jpeg 后缀结尾。如果需要,图像将被缩放以适应屏幕。

GRUB_DISABLE_OS_PROBER

如果此选项设置为 true,则禁用自动搜索其他操作系统。仅检测 /boot/ 中的内核镜像和您自己脚本中的选项 /etc/grub.d/

SUSE_BTRFS_SNAPSHOT_BOOTING

如果此选项设置为 true,则 GRUB 2 可以直接引导到 Snapper 快照。有关更多信息,请参阅 第 3.3 节,“通过从快照引导进行系统回滚”

有关完整选项列表,请参阅 GNU GRUB 手册

12.2.3 位于 /etc/grub.d 中的脚本 编辑源文件

在执行命令 grub2-mkconfig -o /boot/grub2/grub.cfg 期间,将读取此目录中的脚本。它们的指令被合并到 /boot/grub2/grub.cfg 中。 grub.cfg 中菜单项的顺序由此目录中文件的顺序决定。以数字开头的的文件首先执行,从最低数字开始。 00_header10_linux 之前运行,后者在 40_custom 之前运行。如果存在以字母命名的文件,则在数字命名的文件之后执行它们。只有可执行文件在执行 grub2-mkconfig 时才会生成输出到 grub.cfg。默认情况下,/etc/grub.d 目录中的所有文件都是可执行的。

Tip
提示:grub.cfg 中的持久自定义内容

由于 /boot/grub2/grub.cfg 在每次运行 grub2-mkconfig 时都会重新编译,因此任何自定义内容都会丢失。要将您的行直接插入到 /boot/grub2/grub.cfg 中,而不会在运行 grub2-mkconfig 后丢失它们,请将其插入到

### BEGIN /etc/grub.d/90_persistent ###

### END /etc/grub.d/90_persistent ###

之间。90_persistent 脚本可确保保留此类内容。

以下是重要脚本的列表

00_header

设置系统文件位置、显示设置、主题和先前保存的条目等环境变量。它还导入存储在 /etc/default/grub 中的首选项。通常您不需要更改此文件。

10_linux

识别根设备上的 Linux 内核并创建相关的菜单条目。如果启用,这包括关联的恢复模式选项。仅在主菜单页面上显示最新的内核,并将其他内核包含在子菜单中。

30_os-prober

此脚本使用 os-prober 搜索 Linux 和其他操作系统,并将结果放置在 GRUB 2 菜单中。有部分用于识别特定的其他操作系统,例如 Windows 或 macOS。

40_custom

此文件提供了一种将自定义引导条目包含到 grub.cfg 中的简单方法。确保不要更改开头的 exec tail -n +3 $0 部分。

处理顺序由前面的数字设置,数字最低的首先执行。如果脚本以前面相同的数字为前缀,则完整的名称的字母顺序决定顺序。

Tip
提示:/boot/grub2/custom.cfg

如果您创建 /boot/grub2/custom.cfg 并填充内容,则它将在引导时自动包含到 /boot/grub2/grub.cfg 中,紧接在 40_custom 之后。

12.2.4 BIOS 驱动器和 Linux 设备之间的映射 编辑源文件

在 GRUB Legacy 中,device.map 配置文件用于从 BIOS 驱动器号派生 Linux 设备名称。BIOS 驱动器和 Linux 设备之间的映射并不总是可以正确猜测。例如,如果 IDE 和 SCSI 驱动器的引导顺序在 BIOS 配置中交换,GRUB Legacy 可能会得到错误的顺序。

GRUB 2 通过使用设备 ID 字符串(UUID)或文件系统标签来生成 grub.cfg,从而避免了这个问题。GRUB 2 工具会动态创建临时设备映射,这通常足以满足需求,尤其是在单磁盘系统上。

但是,如果您需要覆盖 GRUB 2 的自动设备映射机制,请创建您的自定义映射文件 /boot/grub2/device.map。以下示例将映射更改为使 DISK 3 成为启动磁盘。GRUB 2 分区编号从 1 开始,而不是像 GRUB 2 Legacy 那样从 0 开始。

(hd1)  /dev/disk-by-id/DISK3 ID
(hd2)  /dev/disk-by-id/DISK1 ID
(hd3)  /dev/disk-by-id/DISK2 ID

12.2.5 启动过程中编辑菜单条目 编辑源文件

能够直接编辑菜单条目在系统由于配置错误而无法启动时非常有用。它也可以用于在不更改系统配置的情况下测试新设置。

  1. 在图形启动菜单中,使用箭头键选择要编辑的条目。

  2. E 打开基于文本的编辑器。

  3. 使用箭头键移动到要编辑的行。

    GRUB 2 boot editor
    图 12.1:GRUB 2 启动编辑器

    现在您有两个选项

    1. 将以 linuxlinuxefi 开头的行末尾添加空格分隔的参数,以编辑内核参数。完整的参数列表可在 https://en.opensuse.net.cn/Linuxrc 找到。

    2. 或者编辑常规选项以更改,例如内核版本。 →| 键会建议所有可能的补全项。

  4. F10 以您所做的更改启动系统,或按 Esc 放弃您的编辑并返回 GRUB 2 菜单。

以这种方式所做的更改仅适用于当前的启动过程,并且不会永久保存。

Important
重要提示:启动过程中的键盘布局

启动时仅可用美国键盘布局。请参阅 “启动”手册,第 4 章“故障排除”,第 4.3 节“从安装介质启动失败”,美国键盘布局

Note
注意:安装介质上的引导加载程序

在具有传统 BIOS 的系统上,安装介质的引导加载程序仍然是 GRUB Legacy。要添加启动参数,请选择一个条目并开始键入。您对安装引导条目的所做的更改将永久保存在已安装的系统中。

12.2.6 设置启动密码 编辑源文件

即使在启动操作系统之前,GRUB 2 也允许访问文件系统。没有 root 权限的用户可以访问您的 Linux 系统中的文件,而这些文件在系统启动后他们无法访问。为了阻止这种访问或防止用户启动某些菜单条目,请设置启动密码。

Important
重要提示:启动需要密码

如果设置了,则每次启动都需要启动密码,这意味着系统不会自动启动。

按照以下步骤设置启动密码。或者使用 YaST (使用密码保护引导加载程序 )。

  1. 使用 grub2-mkpasswd-pbkdf2: 对密码进行加密:

    > sudo grub2-mkpasswd-pbkdf2
    Password: ****
    Reenter password: ****
    PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
  2. 将生成的字符串粘贴到文件 /etc/grub.d/40_custom 中,以及 set superusers 命令。

    set superusers="root"
    password_pbkdf2 root grub.pbkdf2.sha512.10000.9CA4611006FE96BC77A...
  3. 要将更改导入主配置文件,请运行

    > sudo grub2-mkconfig -o /boot/grub2/grub.cfg

重新启动后,GRUB 2 会在尝试启动菜单条目时提示您输入用户名和密码。输入 root 以及在 grub2-mkpasswd-pbkdf2 命令期间键入的密码。如果凭据正确,系统将启动所选的启动条目。

有关更多信息,请参阅 https://gnu.ac.cn/software/grub/manual/grub/grub.html#Security

12.2.7 授权访问启动菜单条目 编辑源文件

您可以配置 GRUB 2,以便根据授权级别允许访问启动菜单条目。您可以配置多个受密码保护的用户帐户,并向他们分配访问不同菜单条目的权限。要配置 GRUB 2 中的授权,请按照以下步骤操作

  1. 为要在 GRUB 2 中使用的每个用户帐户创建并加密一个密码。使用 grub2-mkpasswd-pbkdf2 命令,如 第 12.2.6 节,“设置启动密码” 中所述。

  2. 删除文件 /etc/grub.d/10_linux。这可以防止输出默认的 GRUB 2 菜单条目。

  3. 编辑 /boot/grub2/custom.cfg 文件,并手动添加自定义菜单条目。以下模板是一个示例,请根据您的使用情况进行调整

    set superusers=admin
    password admin ADMIN_PASSWORD
    password maintainer MAINTAINER_PASSWORD
    
    menuentry 'Operational mode' {
      insmod ext2
      set root=hd0,1
      echo 'Loading Linux ...'
      linux /boot/vmlinuz root=/dev/vda1 $GRUB_CMDLINE_LINUX_DEFAULT $GRUB_CMDLINE_LINUX mode=operation
      echo 'Loading Initrd ...'
      initrd /boot/initrd
    }
    
    menuentry 'Maintenance mode' --users maintainer {
      insmod ext2
      set root=hd0,1
      echo 'Loading Linux ...'
      linux /boot/vmlinuz root=/dev/vda1 $GRUB_CMDLINE_LINUX_DEFAULT $GRUB_CMDLINE_LINUX mode=maintenance
      echo 'Loading Initrd ...'
      initrd /boot/initrd
    }
  4. 将更改导入主配置文件

    > sudo grub2-mkconfig -o /boot/grub2/grub.cfg

在上面的示例中

  • GRUB 2 菜单有两个条目,操作模式维护模式

  • 如果未指定用户,则可以访问这两个启动菜单条目,但没有人可以访问 GRUB 2 命令行或编辑现有的菜单条目。

  • admin 用户可以访问 GRUB 2 命令行并编辑现有的菜单条目。

  • maintenance 用户可以选择恢复菜单项。

12.3 使用 YaST 配置引导加载程序 编辑源文件

配置 openSUSE Leap 系统中引导加载程序常规选项的最简单方法是使用 YaST 模块。在 YaST 控制中心 中,选择 系统 › 引导加载程序。该模块显示系统的当前引导加载程序配置,并允许您进行更改。

使用 引导代码选项 选项卡查看和更改与类型、位置和高级加载程序设置相关的设置。您可以选择是否以标准或 EFI 模式使用 GRUB 2。

Important
重要提示:EFI 系统需要 GRUB2-EFI

如果您有 EFI 系统,则只能安装 GRUB2-EFI,否则您的系统将无法启动。

Important
重要提示:重新安装引导加载程序

要重新安装引导加载程序,请确保在 YaST 中更改一个设置,然后将其改回。例如,要重新安装 GRUB2-EFI,首先选择 GRUB2,然后立即切换回 GRUB2-EFI

否则,引导加载程序可能只会部分重新安装。

Note
注意:自定义引导加载程序

要使用除列表中显示的引导加载程序之外的其他引导加载程序,请选择 不安装任何引导加载程序。在选择此选项之前,请仔细阅读您的引导加载程序的文档。

12.3.1 引导加载程序位置和引导代码选项 编辑源文件

引导加载程序的默认位置取决于分区设置,要么是主引导记录 (MBR),要么是 / 分区的引导扇区。要修改引导加载程序的位置,请按照以下步骤操作

过程 12.1:更改引导加载程序位置
  1. 选择 引导代码选项 选项卡,然后选择以下选项之一作为 引导加载程序位置

    从主引导记录启动

    这会将引导加载程序安装到包含目录 /boot 的磁盘的 MBR 中。通常这将是挂载到 / 的磁盘,但如果 /boot 挂载到不同磁盘上的单独分区,则将使用该磁盘的 MBR。

    从根分区启动

    这会将引导加载程序安装到 / 分区的引导扇区。

    自定义根分区

    使用此选项手动指定引导加载程序的位置。

  2. 单击 确定 以应用更改。

Boot code options
图 12.2:引导代码选项

引导代码选项 选项卡包括以下其他选项:

在分区表中设置引导分区的活动标志

激活包含 /boot 目录的分区。对于 POWER 系统,它激活 PReP 分区。在旧的 BIOS 和/或传统操作系统上使用此选项,因为它们可能无法从非活动分区启动。保持此选项处于活动状态是安全的。

将通用引导代码写入 MBR

如果 MBR 包含自定义的“非 GRUB”代码,则此选项会将其替换为通用、与操作系统无关的代码。如果您停用此选项,系统可能会变得无法启动。

启用受信任启动支持

启动 TrustedGRUB2,它支持受信任计算功能(可信平台模块 (TPM))。有关更多信息,请参阅 https://github.com/Sirrix-AG/TrustedGRUB2

保护性 MBR 标志 部分包括以下选项:

set

这适用于传统的传统 BIOS 启动。

remove

这适用于 UEFI 启动。

不要更改

如果您有一个已经工作的系统,这通常是最佳选择。

在大多数情况下,YaST 会默认选择适当的选项。

12.3.2 调整磁盘顺序 编辑源文件

如果您的计算机有多个硬盘,您可以指定磁盘的启动顺序。列表中的第一个磁盘是 GRUB 2 在从 MBR 启动时将安装到的磁盘。它是默认安装 openSUSE Leap 的磁盘。列表的其余部分是对 GRUB 2 的设备映射器的提示(请参阅 第 12.2.4 节,“映射 BIOS 驱动器和 Linux 设备”)。

Warning
警告:无法启动的系统

默认值通常对几乎所有部署都是有效的。如果您错误地更改了磁盘的启动顺序,系统在下次重新启动时可能会变得无法启动。例如,如果列表中的第一个磁盘不是 BIOS 启动顺序的一部分,并且列表中的其他磁盘的 MBR 为空。

过程 12.2:设置磁盘顺序
  1. 打开 引导代码选项 选项卡。

  2. 单击 编辑磁盘启动顺序

  3. 如果列出了多个磁盘,请选择一个磁盘并单击 上移下移 以重新排序显示的磁盘。

  4. 单击 确定 两次以保存更改。

12.3.3 配置高级选项 编辑源文件

可以通过 引导加载程序选项 选项卡配置高级引导参数。

12.3.3.1 引导加载程序选项 选项卡 编辑源文件

Boot loader options
图 12.3:引导加载程序选项
引导加载程序超时时间

通过键入新值并使用鼠标单击相应的箭头键来更改 秒数超时 的值。

探测外部操作系统

如果选中,引导加载程序将搜索其他系统,如 Windows 或其他 Linux 安装。

隐藏启动菜单

隐藏启动菜单并启动默认条目。

调整默认启动条目

默认启动部分 列表中选择所需的条目。请注意,> 符号在启动条目名称中分隔启动部分及其子部分。

使用密码保护引导加载程序

保护引导加载程序和系统使用额外的密码。有关手动配置的详细信息,请参阅 第 12.2.6 节,“设置启动密码”。如果激活此选项,则每次启动都需要启动密码,这意味着系统不会自动启动。但是,如果您更喜欢 GRUB 1 的行为,请另外启用 仅保护条目修改。使用此设置,任何人都可以选择启动条目并启动系统,而 GRUB 2 root 用户的密码仅需要用于修改启动条目。

12.3.3.2 内核参数 选项卡 编辑源文件

Kernel parameters
图 12.4: 内核参数
可选内核命令行参数

在此处指定可选的内核参数,以启用/禁用系统功能、添加驱动程序等。

CPU 缓解措施

SUSE 已经发布了一个或多个内核启动命令行参数,用于所有已部署的软件缓解措施,以防止 CPU 侧信道攻击。其中一些可能会导致性能下降。根据您的设置,选择以下选项之一,以在安全性和性能之间取得平衡。

自动 启用适用于您的 CPU 型号所需的所有缓解措施,但不保护免受跨 CPU 线程攻击。此设置可能会在一定程度上影响性能,具体取决于工作负载。

自动 + 无 SMT 提供所有可用的安全缓解措施。启用适用于您的 CPU 型号所需的所有缓解措施。此外,它还会禁用同步多线程 (SMT) 以避免跨多个 CPU 线程的侧信道攻击。此设置可能会进一步影响性能,具体取决于工作负载。

关闭 禁用所有缓解措施。根据 CPU 型号,您的 CPU 可能会受到侧信道攻击。此设置不会影响性能。

手动 不设置任何缓解级别。通过使用内核命令行选项手动指定您的 CPU 缓解措施。

使用图形控制台

选中后,启动菜单将出现在图形启动画面上,而不是文本模式中。启动屏幕的分辨率默认情况下由系统自动设置,但您可以通过 控制台分辨率 手动设置它。可以使用 控制台主题 文件选择器指定图形主题定义文件。仅当您想要应用自己定制的主题时才更改此设置。

使用串行控制台

如果您的机器通过串行控制台进行控制,请激活此选项并指定要使用哪个 COM 端口以及使用哪个速度。请参阅 info grubhttps://gnu.ac.cn/software/grub/manual/grub.html#Serial-terminal

12.4 有用的 GRUB 2 命令 编辑源文件

grub2-mkconfig

基于 /etc/default/grub/etc/grub.d/ 中的脚本生成新的 /boot/grub2/grub.cfg

示例 12.1: grub2-mkconfig 的用法
grub2-mkconfig -o /boot/grub2/grub.cfg
Tip
提示:语法检查

在没有任何参数的情况下运行 grub2-mkconfig 会将配置打印到 STDOUT,以便进行查看。在 /boot/grub2/grub.cfg 写入后,使用 grub2-script-check 检查其语法。

Important
重要提示:grub2-mkconfig 无法修复 UEFI 安全启动表

如果您正在使用 UEFI 安全启动,并且您的系统不再正确到达 GRUB 2,您可能需要额外重新安装 Shim 并重新生成 UEFI 启动表。为此,请使用

# shim-install --config-file=/boot/grub2/grub.cfg
grub2-mkrescue

创建已安装 GRUB 2 配置的可启动救援镜像。

示例 12.2: grub2-mkrescue 的用法
grub2-mkrescue -o save_path/name.iso iso
grub2-script-check

检查给定文件是否存在语法错误。

示例 12.3: grub2-script-check 的用法
grub2-script-check /boot/grub2/grub.cfg
grub2-once

仅为下一次启动设置默认启动项。要获取可用启动项的列表,请使用 --list 选项。

示例 12.4: grub2-once 的用法
grub2-once number_of_the_boot_entry
Tip
提示:grub2-once 帮助

不带任何选项调用该程序即可获取所有可能选项的完整列表。

12.5 救援模式 编辑源文件

救援模式 是一个特定的 root 用户会话,用于故障排除和修复启动过程失败的系统。它提供了一个单用户环境,其中本地文件系统和核心系统服务处于活动状态。未激活网络接口。要进入救援模式,请按照以下步骤操作。

过程 12.3: 进入救援模式
  1. 重新启动系统。启动画面出现,提供 GRUB 2 启动菜单。

  2. 选择要启动的菜单项,然后按 e 键编辑启动行。

  3. 将以下参数附加到包含内核参数的行

    systemd.unit=rescue.target
  4. Ctrl+X 键以使用这些设置启动。

  5. 输入 root 的密码。

  6. 进行所有必要的更改。

  7. 通过在命令行中输入 systemctl isolate multi-user.targetsystemctl isolate graphical.target 再次进入正常运行目标。

12.6 更多信息 编辑源文件

有关 GRUB 2 的大量信息可在 https://gnu.ac.cn/software/grub/ 上找到。另请参阅 grub 信息页。

打印此页面