夏天快要过去了,但回过头看,从 YaST 的角度来看,这段时间生产力很高。我们修复了大量的错误,在存储层引入了相当有趣的功能,并且网络模块的重构工作(或多或少)按计划进行着。

所以现在是时候发布另一份冲刺报告了。在过去的两个星期里,我们主要忙于修复错误,并试图使网络模块尽可能地完善。但与此同时,我们也有时间改进我们的基础设施并为未来做准备。

YaST2 网络重构状态

虽然我们一直在努力工作,但我们还没有说过关于 yast2-network 重构进展的任何内容 自 7 月底以来,当时我们将部分更改合并到 yast2-network 4.2.9 中,并将其推送到 Tumbleweed。该版本包含大量与用户界面相关的内部更改,以及一些新的数据模型,特别是关于路由和 DNS 处理方面。

然而,从那时起情况已经发生了很大的变化,所以我们想向您概述一下当前的情况。也许,最显著的成就就是开发版本能够使用新的数据模型读取和写入配置。好的,它并不完美,并且没有涵盖所有用例,但我们正在朝着正确的方向前进。

在下面的屏幕录像中,您可以看到它在实际操作中,读取和写入接口的配置。演示还包括处理别名,这比当前发布的版本做得更好。

 YaST2 Network New Data Model in Action

此外,我们已经恢复了对许多类型设备的(VLAN、InfiniBand、qeth、TAP、TUN 等)的支持,改进了 WiFi 设置工作流程,并重新实现了设备重命名的支持。

现在,在当前的冲刺中,我们专注于将这个新的实现带到一个可用的状态,以便我们尽快发布当前的工作并获得您的反馈。

最后,如果您喜欢数字,我们可以给您一些。自上次更新以来,我们已经合并了 34 个拉取请求,并且单元测试覆盖率从 openSUSE Leap 15.0/SUSE Linux Enterprise SP1 中的 44% 提高到大约 64%。新版本由 31.702 (物理) 行代码组成,分布在 231 个文件中(大约每文件 137 行)与旧版本中的 22.542 行代码分布在 70 个文件中(超过 300 行/文件)相比。并且随着我们继续替换旧代码,这些数字会变得更好。 :smiley:

Leap 中缺失的软件包

事实证明,一些 YaST 软件包没有在 Leap 15.1 中更新。问题是,通常 YaST 软件包会提交到 SLE15 产品中,然后通过构建服务机器人自动镜像到 Leap 15 发行版。因此,我们不需要专门处理 Leap 的软件包更新。

但是,有一些软件包不包含在 SUSE Linux Enterprise 产品线中,但包含在 openSUSE Leap 中。显然,这些软件包无法从 SUSE Linux Enterprise 自动更新,因为它们不存在于那里。在这种情况下,Leap 包含来自初始 15.0 版本中的旧软件包版本。

为了解决这个问题,我们手动将最新的软件包提交到 Leap 15.2 发行版。为了避免将来出现这个问题,我们要求 Leap 维护者将 Leap 特定的软件包添加到检查列表中,以便在下一个版本发布之前对其进行验证。当然,如果您在 Leap 中看到任何过时的 YaST 软件包,您仍然可以打开一个 错误报告:wink:

仅供参考,受影响的软件包是: yast2-alternativesyast2-slp-serveryast2-dockerskelcd-control-openSUSE(内容仅存在于安装介质上,不作为 RPM 发布)。

让我们使用所有磁盘!

如您所记得,三冲刺前,我们添加了一些额外的配置选项,以便存储引导式提案能够处理 SUSE Manager 的方法。我们甚至为此写了一篇 专门的博客文章

尽管在引导式设置中提供了新的选项,但我们试图保持安装程序的默认初始行为与其它 (open)SUSE 产品一致。因此,安装程序最初会尝试将整个系统安装到单个磁盘上,除非这不可能实现,或者用户告诉它扩展到多个磁盘上。

但是 SUSE Manager 的团队发现这与他们在引导式设置中引入的新理念相悖。根据他们的反馈,在这种情况下,与其它 (open)SUSE 产品保持一致并不能减少混淆,而是增加了混淆。SUSE Manager 应该从一开始就尝试将产品尽可能地扩展到所有可用磁盘上。

因此,在此冲刺期间,我们引入了第一个 改进(又名另一个配置选项),所以现在可以告诉初始提案是否应该尝试首先使用多个磁盘。

引导加载程序和小 MBR 间隙

我们收到一个 错误报告,因为系统在安装后无法启动。在这种情况下,用户决定使用 Btrfs 并将根文件系统放在逻辑分区中。理论上,这种场景应该可以工作,但不幸的是,MBR 间隙太小,无法嵌入 Grub2 引导加载程序代码。

乍一看,这个问题可以通过要求 YaST 将引导加载程序安装到逻辑分区并将通用引导代码安装到 MBR 中来解决。但这只有在您将逻辑分区设置为活动分区时才有效。不幸的是,某些 BIOS 可能会坚持将主分区作为活动分区。

但别担心,我们有好消息。Grub2 维护者已经处理了 这个问题。如果 MBR 间隙太小,Grub2 将自动回退到 Btrfs 分区。就这样。这对 YaST 意味着什么?好吧,由于这个修复,YaST 将可以直接工作,您的系统将再次可引导。但等等!您仍然需要稍等才能在 Tumbleweed 安装程序中获得这些 Grub2 改进。

处理 NTP 配置中的空注释行

AutoYaST 支持定义要在安装期间应用的特定 NTP 配置,并且依赖于 Augeas 来读取/写入 ntp.conf 文件。但似乎 Augeas 在尝试写入带有空行的注释时遇到了一些问题,如 bug 1142026 中所示。解决方案是调整 YaST 以在保存配置文件之前过滤掉空注释行,从而规避 Augeas 问题。

调整某些分区时出错

通常,MS-DOS 分区表为其 MBR 间隙保留了第一个 MiB,因此分区通常在该点之后开始。但是,在旧 Windows 系统的分区中,尤其是在分区中,它可能在该第一个 MiB 之前开始。在这种情况下,如果我们尝试调整该分区(例如,使用专家分区器),YaST 会因在计算调整信息时出错而崩溃。幸运的是,这个问题现在已经解决了,您将能够调整这种分区。

键盘布局统一的副作用

冲刺 81 期间,openSUSE 和 SUSE Linux Enterprise 控制台 键盘布局在进行了一些小的更改后被统一。其中一项更改是停止使用外观上无用的阿拉伯语和柬埔寨语的 keymaps 符号链接。但它们是存在的,原因在于:YaST 使用它们来正确地在 X11 环境中调整键盘。如果您想深入了解更多技术细节,请访问 拉取请求 如果您 想吓唬自己

幸运的是,对于那些键盘的用户,我们在即将发布的 SLE-15-SP2 发布之前意识到了这个问题。 :smile: 并且,它已经修复了。

家务事

作为我们在此冲刺中的开发职责的一部分,我们投入了相当多的时间来审查和更新我们的持续集成 (CI) 设置。除了使用 Travis CI 进行拉取请求外,我们还依赖 Jenkins 来运行测试并将代码提交到 Open Build Service 实例 中的适当项目。

然后,当新版本的开发开始或产品即将发布时,我们需要调整配置。以防您想知道,我们不再手动完成这项工作,而是使用 SaltJenkins Job Builder 来处理此配置。

结束语

在下一个冲刺(实际上,当前的冲刺)中,我们正在三个不同的领域工作,除了修复错误之外:改进存储层中的加密支持,向安装程序添加一些功能(无仓库安装程序、支持从 tarball 读取产品许可证等),当然,重构网络代码。显然,我们将在下一次冲刺报告中向您提供各种细节。