在过去的两个星期里,除了我们通常不会在此介绍的常规错误修复之外,我们还致力于 AutoYaST、改进 Storage-ng 以及完善模块和扩展相关的各个方面,例如它们的注册和许可。

让我们从重写的分区程序开始,它是 yast2-storage-ng 的一部分。

分区程序:分区 ID 更加灵活

为每个分区设置正确的 分区 ID(也称为分区类型)是系统设置的重要组成部分,但常常被忽视。我们的分区程序一直都在显著位置显示允许设置该 ID 的小部件,并根据所选角色和所选文件系统类型始终建议最佳值。但在许多情况下,这不仅仅是一个简单的建议。在旧的分区程序(以及本次冲刺之前的新的分区程序)中,分区 ID 字段的值(Linux、交换、Linux LVM 等)只能在用户选择不格式化分区的情况下手动编辑。当选择“格式化设备”选项时,自动选择的值无法更改。

在 SLE15 和 openSUSE Leap 15(以及很快在 openSUSE Tumbleweed 中),无论分区是将被格式化还是不被格式化,都将可以修改 ID。当然,在用户选择文件系统类型时,提出最佳选项的逻辑仍然存在,但现在用户如果希望,可以随时覆盖它。这种更改导致该屏幕上的小部件略有重新排列,如下所示(请记住,我们正在尝试对分区程序中的 UI 更改保持非常保守)。

UI adjustments for the partition id

分区程序:更好地支持 DASD

我们之前的报告 中,我们解释了 s390 主机上使用的直连存储设备 (DASD) 与常规硬盘驱动器不同的某些方面。但正如您所能想象的,还有更多的差异……而且我们知道我们的读者喜欢在享受我们的报告的同时学习新知识。 :smiley:

简而言之,有两种可能的 DASD 设备类型:扩展计数键数据 (ECKD) 和固定块架构 (FBA)。如前述报告中所述,ECKD 设备需要在低级别进行格式化才能被操作系统使用,而且,它们有两种可能的低级别格式:兼容磁盘布局 (CDL) 和 Linux 磁盘布局 (LDL)。

现在有趣的地方来了——格式化为 LDL 的 ECKD 设备没有分区表。FBA 设备理论上可以有一个分区表,但通常也会跳过。为了管理没有分区表的这些 DASD,Linux 内核会模拟一个占用整个磁盘的隐式单个分区。当然,使用这样的隐式分区意味着存在一些限制,并且我们已经引入了几个控制措施,以确保 storage-ng 分区程序中的一切都在控制之下。例如,如果用户尝试删除隐式分区,现在会显示一条错误消息。

Trying to delete an implicit partition

对于好奇的读者,可以在 此链接 上找到有关 DASD 的更多信息。

分区程序:无法调整分区大小……为什么?

在 SLE15 和 openSUSE Leap 15 中,我们将报告分区或文件系统无法调整大小的详细原因,如本屏幕截图所示。

Detailed description of resizing restrictions

以前这只是一条非常简单的消息“设备无法调整大小”。但可能有许多原因导致这种情况,有时不同的限制可能会相互矛盾:虽然某些类型的文件系统只允许增长,不允许缩小(例如 XFS),但文件系统所在的磁盘分区可能无法增长,例如因为旁边有另一个分区。我们希望尽量减少用户在只报告第一个原因时可能遇到的挫败感,并且当用户设法解决该问题时,显示另一个无法修复的原因。

像往常一样,此功能将在几天内提供给 Tumbleweed。

SLE15 迁移中处理注册回滚

当然,分区程序并不是本次冲刺中获得关注的 YaST 唯一区域。还对产品、模块和扩展相关的各个方面进行了工作,所有这些都涉及注册、迁移和许可。

对于离线迁移到 SLE15,我们重用了来自在线迁移的部分,后者处理服务包升级。但结果表明,重用的部分没有正确集成到安装程序中,并且在某些情况下(注册错误)它没有按预期工作。

此外,如果升级过早失败,则系统仍然包含 SLE12 安装,但已在 SCC 服务器上注册为 SLE15 系统。启动原始 SLE12 系统后,无法访问在线仓库。

本次冲刺中,我们修复了该问题,以便在发生注册错误或返回原始注册时,原始注册将被恢复。现在您可以返回并选择另一个系统进行升级,它将按预期工作。

此外,我们还修复了与升级时使用的自定义仓库(附加组件或驱动程序更新)的一些小问题。

更多关于在 SLE15 中隐藏/显示 Beta 版本的乐趣

我们博客的常客已经知道 SUSE 正在将扩展和模块提升到一个全新的水平,使其成为系统安装和升级过程的基石。如先前帖子中所述,这意味着扩展和模块之间存在更复杂的依赖关系。所有这些机制通常工作良好……除了我们发现的一个小问题,即 Beta 版本。

如果给定的扩展处于 Beta 阶段,并且其某些依赖项也处于 Beta 阶段,如果未选中“隐藏 Beta 版本”复选框,则系统只会显示用户选择的扩展,而不会显示自动选择的依赖 Beta 扩展。我们的 SLE 测试人员发现这非常令人困惑。因此,为了让所有人的生活更轻松,我们修复了该行为,如以下屏幕截图所示。

Displaying selected and auto-selected beta extensions

展望未来:分析我们如何显示许可

目前,处理和显示许可有许多不同的方法。这可能发生在安装或升级过程中,在将其他产品添加到已安装的系统时,以及最后在使用 YaST2 Firstboot 在首次系统执行时执行其他安装步骤时。

此外,这些许可来自 3 个不同的位置。它们可以由 SUSE 客户中心提供,由 libzypp 提供,或通过遗留方法从仓库提供。

为了简化和统一所有这些,在不久的将来,第一步是研究所有这些可能性以及如何在 (Auto)YaST 中处理它们。可以在 Github 上托管的此文档 中找到该研究的结果。

AutoYaST 产品选择和安装程序更新改进

如您可能已经知道,从 SLE-15 开始,所有产品都使用一种介质分发,您需要显式选择要安装的产品。当然,如果介质只包含一个产品,则不需要这样做。

在 AutoYaST 配置文件中,产品是使用 XML 节点 /software/products/product 选择的

    <software>
      <products config:type="list">
        <product>SLED</product>
      </products>
    </software>

由于一个错误,克隆的系统导出了产品的 short_name 而不是 name,导致安装程序更新报告了一个内部错误,随后在自动安装过程中报告了一个错误,因为未选择任何产品,导致自动安装中止。

因此,在此冲刺期间,我们对这两种情况都进行了改进。

  1. 安装程序更新将完全不依赖于产品选择(安装程序对于所有产品都是相同的),而是使用控制文件中的 self_update_id 以及介质上可用第一个产品的 versionarchitecture安装程序更新文档 也已根据最新更改进行了更新,并且可能是了解其行为的最佳场所。
  2. 报告的错误产品选择错误信息没有用,因此决定提供有关介质上可用产品的更多信息。请查看下图中的最新实现

Warning about wrong product in AutoYaST

记录 AutoYaST 配置文件中 SLE12 和 SLE15 之间的主要区别

需要选择产品不是影响 AutoYaST SLE15 配置文件的唯一相关更改。与 SLE12 相比,SLE15 有许多其他重要的更改。例如,新的模块概念,用 firewalld 替换 SuSEfirewall2,用 Chrony 替换 ntp……想要重用现有 SLE12 配置文件的用户,可能需要对其进行调整。

我们创建了 此摘要,描述了一些最重要的更改,以帮助进行转换。

该文档只是一个初步的临时工作,目前正在由 SUSE 优秀的文档团队进行审查和改进。很快(可能在您阅读本文时已经完成),内容将被合并,并且 当前 AutoYaST 指南 中将提供一个名为“SLES 12 和 15 配置文件之间的主要区别”的新部分。我们曾经提到过文档团队有多棒吗?因此,请使用最后一个链接作为最终参考,而不是我们的临时摘要。

NTP 客户端的 Cron 配置

可以设置 YaST-ntp-client 模块以定期同步系统时钟。如果使用该功能,YaST 会将所需的配置写入 cron.d 配置文件。我们仍然使用“novell”作为该文件名的组成部分,这被报告为错误。这变成了一个很好的机会来查看一个模块,正如您从该错误中可以猜到的那样,我们并不经常更新它。 :smiley:

首先,我们确保新写入的文件具有更现代化的名称。简单直接。

第二部分是为文件已经存在的情况提供升级路径。我们将此与现有的 ntpchrony 转换集成。这意味着现有的配置将在安装新版本的 yast2-ntp-client 包时更新,因此用户无需再次运行该模块即可开始使用具有现有配置的 chrony

最后,第三部分是调整该包,使其成为 RPM 世界中更好的公民,在 RPM 规范中将该文件标记为 ghost 文件。现在此命令可以识别 yast2-ntp-client 负责该配置文件。

      rpm -qf <file>

两个月……并且还在继续

距离 openSUSE Leap 15 发布日期还有两个月的倒计时!这意味着我们还有很多艰苦的工作要做,所以请继续关注更多更新。