GRUB

跳转到:导航搜索
GRUB

GNU GRUB (Grand Unified Bootloader) 是一个多重引导

openSUSE 下载

供应商: 自由软件基金会,公司。
开发者: 自由软件基金会,公司。
许可: GNU 通用公共许可证
网站: https://gnu.ac.cn/software/grub/

GRUB 是一个引导加载程序。这意味着它将加载安装在计算机上的操作系统。
Icon-warning.png
警告: 从 2023 年 12 月开始,Tumbleweed 和 MicroOS 使用 systemd-boot 代替 Grub

GRUB2 和 GRUB Legacy

GRUB2 现在是 openSUSE 中的默认引导加载程序,取代了 GRUB Legacy(GRUB 版本 0.9x)。GRUB2 比 GRUB Legacy 具有更高级的功能。GRUB Legacy 仍然可用,但不再积极开发。

有关 GRUB2 的更多信息可以在 此处找到。

GRUB2

GRUB2 在 btrfs /boot 上

由于 GRUB2 无法写入 btrfs,请参阅 [1],因此在 GRUB2 内部写入 /boot/grub2/grubenv 存在问题,例如在使用 /etc/default/grub 中的 GRUB_SAVEDEFAULT 时。

作为解决方案,openSUSE 修复了 GRUB2,以允许将易失的 grubenv 数据存储在 btrfs /boot 分区的一个保留块中。它将该块的位置和大小存储在“原始”/boot/grub2/grubenv 中,格式为“env_block=512+1”,其中 512 表示分区内的偏移量,“1”表示大小。两个值都以通常为 512 字节的文件系统扇区为单位。因此,要检查存储在那里的数据,您可以使用

  dd if=/dev/yourbootpartition bs=512 skip=512 count=1

但是,使用 grub2-editenv 命令正确读取和调整这些值。

从损坏的 grubenv 中恢复

如果 GRUB2 抱怨

  Error: invalid environment block. Press any key to continue...

以下步骤允许重新创建它

  rm /boot/grub2/grubenv
  grub2-editenv - unset dummy

“unset”步骤是必要的,以便实际设置保留的 btrfs 扇区中的存储,并将位置存储在 /boot/grub2/grubenv 中,该文件应包含

  # GRUB Environment Block
  # WARNING: Do not edit this file by tools other than grub2-editenv!!!
  env_block=512+1
  #################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################

如果您省略了此步骤,“env_block”值仍然会丢失,并且 GRUB2 仍然无法存储变量。

支持指南

外部链接

在内核中启用 32 位 x86 支持

从 openSUSE Leap 16.0 开始,内核默认禁用 32 位 x86 支持。

要启用它,用户可以安装 `grub2-compat-ia32` 包,该包可确保内核使用 `ia32_emulation=1` 参数启动。

sudo zypper install grub2-compat-ia32

安装该软件包后,需要系统重启才能使更改生效。

这使得在 Steam 或通过 wine 运行 32 位应用程序(例如游戏)成为可能。

有关缺少 32 位库的相关故障排除,请参阅 Steam 故障排除 wiki 页面