
openSUSE 此前已全面转向 BLS(启动加载器规范),并采用了 systemd-boot 和 GRUB2-BLS 作为引导加载器——实际上,后者只是传统 GRUB2 的重新封装,因为其主要补丁自 2.16 版本起就已合入主线。
这一决策也带来了新的要求:ESP(EFI 系统分区)需要更大的存储空间。因为现在所有快照的内核和 initrd 文件都存放在 /boot/efi/$TOKEN 目录下,其中 $TOKEN 根据安装类型可能是 machine-id、opensuse-tumbleweed 或 opensuse-microos。对于全新安装来说,这不成问题——安装程序(YaST 或 Agama)会推荐一个较大的分区(1 GB)。但对于旧系统升级,迁移过程可能变得棘手,严重时甚至无法调整分区大小。建议在这种情况下保留原有的 GRUB2-EFI 引导加载器。
不过,如果你决定改用 systemd-boot,还有一个“逃生舱”方案:XBOOTLDR 分区。
XBOOTLDR 是一个可以存在于磁盘任意位置的新分区。相比之下,ESP 分区通常只能位于系统首位,受到较多限制。当系统中存在 XBOOTLDR 分区时,systemd-boot 会自动从中读取引导菜单条目以及内核/initrd 文件,从而释放 ESP 分区的这部分职责。
该分区的文件系统同样必须采用 FAT32 格式(这是 UEFI 固件的限制),并且在创建时需要指定特定的 GPT 标识符(GUID)。使用 fsdisk 工具时,可新建分区并将其类型设为 142 或 xbootldr,这样分区表就会写入正确的 GUID,systemd-boot 便可自动识别。
引入新分区后,挂载点也需要相应变更。此前 openSUSE 默认将 ESP 挂载到 /boot/efi,但现在我们需要管理两个分区。根据 UAPI 规范的建议,应将启动条目和内核统一放在 /boot 目录下,而引导加载器本身则放在 /efi 目录中(前提是存在单独的分区)。因此,我们需要更新 /etc/fstab 中的配置:
UUID=4165-E891 /efi vfat utf8,dmask=0077,noexec,nodev,nosuid,nosymfollow 0 2
UUID=414C-528C /boot vfat utf8,dmask=0077,noexec,nodev,nosuid,nosymfollow 0 2
请将上述 UUID 替换为实际设备的唯一标识符。
现在,sdbootutil 工具能够同时识别两个分区,并根据操作类型(例如更新引导加载器或添加新启动条目)自动将内容写入正确的位置。
接下来,我们可以将旧 /boot/efi/loader 目录下的启动条目和内核子目录迁移到新分区。具体操作时,只需保留旧位置中的 loader/random-seed 和 loader/loader.conf 文件,loader/ 目录下的其余内容均可移动到新分区。
关注微信号:智享开源 ,及时了解更新信息。
原文链接:https://news.opensuse.org/2026/07/07/xbootldr/
你必须 登录 才能发表评论.
| 微信捐赠 | 支付宝捐赠 |
|---|---|
![]() |
![]() |
扫码关注公众号:智享开源

还没有任何评论,你来说两句吧!