openSUSE 引入 XBOOTLDR 分区,轻松应对启动空间难题

openSUSE 引入 XBOOTLDR 分区,轻松应对启动空间难题

空间需求升级

openSUSE 此前已全面转向 BLS(启动加载器规范),并采用了 systemd-bootGRUB2-BLS 作为引导加载器——实际上,后者只是传统 GRUB2 的重新封装,因为其主要补丁自 2.16 版本起就已合入主线。

这一决策也带来了新的要求:ESP(EFI 系统分区)需要更大的存储空间。因为现在所有快照的内核和 initrd 文件都存放在 /boot/efi/$TOKEN 目录下,其中 $TOKEN 根据安装类型可能是 machine-idopensuse-tumbleweedopensuse-microos。对于全新安装来说,这不成问题——安装程序(YaSTAgama)会推荐一个较大的分区(1 GB)。但对于旧系统升级,迁移过程可能变得棘手,严重时甚至无法调整分区大小。建议在这种情况下保留原有的 GRUB2-EFI 引导加载器。

不过,如果你决定改用 systemd-boot,还有一个“逃生舱”方案:XBOOTLDR 分区。

全新分区方案

XBOOTLDR 是一个可以存在于磁盘任意位置的新分区。相比之下,ESP 分区通常只能位于系统首位,受到较多限制。当系统中存在 XBOOTLDR 分区时,systemd-boot 会自动从中读取引导菜单条目以及内核/initrd 文件,从而释放 ESP 分区的这部分职责。

该分区的文件系统同样必须采用 FAT32 格式(这是 UEFI 固件的限制),并且在创建时需要指定特定的 GPT 标识符(GUID)。使用 fsdisk 工具时,可新建分区并将其类型设为 142xbootldr,这样分区表就会写入正确的 GUIDsystemd-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-seedloader/loader.conf 文件,loader/ 目录下的其余内容均可移动到新分区。

更多参考资料


关注微信号:智享开源 ,及时了解更新信息。

原文链接:https://news.opensuse.org/2026/07/07/xbootldr/

评论列表

发表评论

你必须 登录 才能发表评论.

为您推荐


请支持IMCN发展!

谁在捐赠

微信捐赠 支付宝捐赠
微信捐赠 支付宝捐赠
ta的个人站点

发表文章4437篇

关注我的头条 不要放弃,百折不挠,坚强、自信。


扫码关注公众号:智享开源

最新科技信息


归档

近期评论