因此,我们在开放SUSE大会 2018 (openSUSE Conference 2018) 之前,在美丽的布拉格举行了为期数天的 YaST 团队全体会议。
但在过去的三周里,我们所做的事情远不止参加研讨会和会议。除了最后的修复之外,以下是我们在此期间在 YaST 中进行的一些有趣的更改列表。请注意,其中一些更改并未包含在 Leap 15.0 中,但所有更改都将在 SLES15 中提供,并且可能已经集成到 openSUSE Tumbleweed 中。
微调小磁盘上的安装程序行为
如你所知,SLE 和 openSUSE 发行版的默认安装在根分区上启用 Btrfs 快照,以及为 /home 和交换空间单独的分区。这意味着默认安装需要相当大的空间。在 SLE12 和 openSUSE Leap 42.X 中,如果磁盘空间不足,安装程序会静默地尝试禁用单独的 /home 甚至快照,以便能够创建初始建议。
这种行为已通过 Storage-ng 针对每个产品和角色进行了配置,在上次冲刺期间,关于 openSUSE 和 SLE 系列的配置应该是什么,存在一些争议。这可能看起来是一个小问题,但在虚拟化环境(其中虚拟磁盘小于 10 GiB 并不常见)或具有特殊存储设备的特定架构(如 s390 和 ARM)中,它变得非常重要。
最终决定是在 openSUSE 的情况下,绝不自动禁用快照,因此用户将被强制手动通过引导设置,并明确禁用快照才能安装到小磁盘上。在 SLE 的情况下,决定保留传统行为(如果确实需要,则自动禁用快照),但通过添加先前的句子来解释如何计算初始建议,使情况更加可见。
因此,在正常磁盘上的安装将如下所示。
而在非常小的磁盘上安装会显示类似以下屏幕的信息(在截取屏幕截图后,措辞略有改进)。
解释性文本将出现在所有基于 SLE15 的产品中,但不会出现在 Leap 15.0 中,因为对安装程序的修改未能在截止日期前准备好,而且,及时获得翻译也是不可能的。
顺便说一下,如果你对分区建议如何适应各种情况(如小磁盘和其他场景)的更深入的解释感兴趣,请不要犹豫,查看 Iván 在 openSUSE Conference 2018 上展示的关于其内部机制的演示文稿。
更多 s390 参数传递
说到不常见的场景和 s390 架构,你可能还记得,在上一次冲刺中,我们改进了针对此类系统,内核参数中持久网络设备名称的处理。不久之后,我们发现类似的改进也需要用于 FIPS 参数。
FIPS 是美国的军事加密标准。如果使用相应的参数启动安装,YaST 将强制使用强大的加密,并安装特定的 FIPS 模式。此外,在最近的修复之后,以强化模式安装的 s390 系统将在安装后继续以这种模式运行。
玩转 MD RAID
随着 SLE15 的日益临近,未来的用户开始使用更奇特和更复杂的硬件设置来测试系统。openSUSE Leap 15.0 在官方发布后也是如此。作为所有这些测试的结果,我们发现了一些 Storage-ng 对某些特定硬件或用户在开始安装之前手动定义的 MD RAID 感到困惑的场景。
默认情况下,旧存储无法处理软件 RAID 内的分区,也无法直接处理物理磁盘上没有分区(即在物理磁盘上没有分区)的软件 RAID。对于 Leap 15.0 和 SLE15 中存在的 Storage-ng 的第一个版本,我们尝试实现相同的行为,目的是重新思考整个事情并为不久的将来打开新的可能性。请查看 Ancor 在 openSUSE Conference 2018 上关于 Storage-ng 的现在和未来的演讲,了解更多信息。
不幸的是,在尝试复制旧存储行为与软件定义的 MD RAID 配合使用时,我们忽略了一些隐藏在旧实现中的启发式方法,用于识别某些特殊设置,在这种设置中,当前检测到的作为常规软件定义的 RAID 的 RAID 设备应该被视为硬件 RAID。这就是在 DellEMC PowerEdge 服务器上通过 BIOS 接口定义的 S130/S140 控制器上的软件 RAID 虚拟磁盘的情况。我们还发现一些用户通过手动创建软件 MD RAID 并在其内部创建分区来产生类似的情况。
由于 SLE15 的准备工作已经进入最后阶段,并且 openSUSE Leap 15 已经发布,因此现在无法对 MD RAID 的检测和使用方式进行重大更改。为了减轻问题,同时限制潜在的破坏,我们重新引入了一个古老的安装程序参数。现在,当我们使用 LIBSTORAGE_MDPART=1 运行安装程序时,所有现有的软件定义的 RAID 都将被视为 BIOS RAID。
该新参数在 Leap 15.0 中不可用(我们添加得太晚),并且希望在 SLE 和 openSUSE 的未来版本中不再需要,因为短期计划是重新设计关于如何在安装过程中处理 MD RAID 的所有内容。
还有更多关于 MD RAID 的乐趣
另一个看起来由软件定义但实际上由 BIOS 组装的 RAID 示例是 Intel RSTe 技术。在这种情况下,不需要使用 LIBSTORAGE_MDPART,但我们仍然发现引导程序安装已损坏,因为 YaST 再次对混合 RAID 设置感到困惑。
幸运的是,在 YaST 团队无法直接访问硬件的情况下,由于报告错误的用户的杰出帮助,我们能够在短短两天内修复该问题并验证解决方案。直接连接用户和开发人员总是能产生很好的结果……这就是开源如此强大的原因之一!
改进 AutoYaST 中错误引导程序的错误报告
这并不是本次冲刺中引导程序处理的唯一改进。我们还投入了一些时间来改进 AutoYaST 中的用户体验,因为在使用系统架构中不受支持的 EFI 变体时显示的错误消息远非有用或信息丰富。
因此,除了更清晰的消息之外,AutoYaST 现在将列出给定架构上支持的所有可能值,以更好地指导用户。
在 AutoYaST 中设置默认子卷名称
AutoYaST 还获得了其他方面的改进,例如利用 Storage-ng 提供的新的可能性。新的存储层允许用户为每个 Btrfs 文件系统设置不同的默认子卷(或根本没有子卷)。如以下示例所示,可以使用 subvolumes_prefix 为每个分区指定一个前缀名称。
<partition>
<mount>/</mount>
<filesystem config:type="symbol">btrfs</filesystem>
<size>max</size>
<subvolumes_prefix>@</subvolumes_prefix>
</partition>
要省略子卷前缀,请将 subvolumes_prefix 标签设置为
<partition>
<mount>/</mount>
<filesystem config:type="symbol">btrfs</filesystem>
<size>max</size>
<subvolumes_prefix><![CDATA[]]></subvolumes_prefix>
</partition>
因此,旧的 btrfs_set_default_subvolume_name 标签不再需要,因此它在 Leap 15.0 和 SLE15 中不受支持。
跳过 Btrfs 子卷创建
更多在 SLE15 和 openSUSE Leap 15.0 中及时到达的 AutoYaST 更改。最近,我们引入了一个新的 AutoYaST 分区部分标志,用于跳过 Btrfs 子卷的创建,因为由于我们 XML 解析器的已知限制,无法指定空列表。
因此,从现在开始,将 create_subvolumes 设置为 false 将阻止 AutoYaST 在给定分区中创建任何 Btrfs 子卷。
<partition>
<mount>/</mount>
<filesystem config:type="symbol">btrfs</filesystem>
<size>max</size>
<create_subvolumes config:type="boolean">false</create_subvolumes>
</partition>
继续前进!
像往常一样,此帖子的内容只是我们在冲刺期间所做的一切的一小部分。还有许多其他修复和改进,从在安装过程中自动修复错误的磁盘分区表(大小与底层磁盘不同)到与 udisk 或 mdadm 自动组装等其他组件的更好交互,以及介于两者之间的一切。
但现在是时候回到工作岗位,开始实施 YaST 团队研讨会和 openSUSE 大会上产生的所有新想法了。下次报告再见!



