11 月已经结束,圣诞老人的小精灵们开始感到压力,YaST 团队为您带来 2016 年的最后一份报告之一。让我们看看 YaST 世界有什么新动向。

更难忽略的安装警告

“安装设置”摘要屏幕通常会报告一些非关键错误,以红色文本显示。尽管安装可以继续进行,但这些错误通常足以导致问题。因此,我们决定进行更改,以稍微突出显示它们,使其更难被忽略。

以下屏幕截图显示了在继续安装之前呈现的新确认对话框。

Preventing users to shoot their feet

使 DHCLIENT_SET_HOSTNAME 能够按接口配置

但本次冲刺中并非只有易用性方面的改进。我们还对网络配置对话框进行了一些修改。

对于家庭用户来说,为我们心爱的 Linux 系统设置一个固定的主机名(在安装期间设置)是很常见的。但在某些情况下,最好使用 DHCP 动态设置机器的主机名,YaST 一直允许通过勾选网络配置屏幕中的复选框来执行此操作。请参阅下面的“通过 DHCP 更改主机名”。

The old network settings screen

该复选框曾经会修改系统范围的变量 DHCLIENT_SET_HOSTNAME,这在只有一个网络接口通过 DHCP 配置的情况下是可以的。但是,当多个网络接口连接到不同的 DHCP 启用网络时,出现了一些问题。

在安装期间,如果使用网络配置,Linuxrc 会使用 DHCLIENT_SET_HOSTNAME='yes' 为所有已启用或配置的接口创建 ifcfg 文件,并且该值优先于全局值。

因此,主要问题是 YaST 只能修改全局变量,将其设置为“否”不起作用,因为它对某些接口已启用。

在此次冲刺中,我们修复了该问题,现在用户界面提供了选择将哪个 DHCP 接口用于确定主机名的可能性。

The new network settings screen

除了选择现有的接口之一,新的设置也可以设置为“否”或“任意”。无论如何,YaST 都会始终以一致的方式配置系统范围的选项和接口特定的选项,因此行为始终是可预测的。

但 YaST 并不是配置网络的唯一方法,因此始终有可能出现不可预测的配置。幸运的是,YaST 会检测到这些潜在的问题场景并向用户报告。

Detecting dangerous scenarios in network settings

CASP 中的分区

之前的报告 中,我们已经解释了我们如何改进安装程序以支持 SUSE CASP 的超简化安装流程的定义,CASP 是 SUSE 系列的新成员,基于 Kubernetes

在此次冲刺中,我们引入了几个额外的更改,以启用不同的分区方法,比以往任何时候都更具指导性和自动化性。在 CASP 节点中,使用我们的存储方案提供的加密或 LVM 等高级设置是没有意义的。此外,CASP 依赖于 Btrfs 来提供其一些很酷的高级功能,例如事务更新。

因此,虽然常规 SUSE 和 openSUSE 版本将继续以相同的方式提供所有当前的可能性,但在 CASP 中,分区步骤将被跳过,并且自动计算的建议将简单地显示在安装摘要中。

The new CASP installation summary

单击该建议将允许您以类似于常规安装程序的方式重新定位安装到不同的磁盘(或磁盘),但选项会受到更多限制。再次强调,没有简单的方法可以使用 LVM、加密、单独的主目录或任何其他文件系统类型,而不是 Btrfs。

Selecting the partitions in CASP, no proposal settings button

专家分区程序在 CASP 安装期间仍然可用,但使用它会显示额外的警告,因为它比在常规 SUSE 或 openSUSE 系统中使用它具有更大的风险。

Expert partitioner warning in CASP

改进的调试器集成

我们改进了 YaST 中的 Ruby 调试器集成。到目前为止,您可以使用 y2debugger=1 启动选项或通过设置 Y2DEBUGGER=1 环境变量来启动调试器。新功能还允许在 YaST 模块已经运行时启动 Ruby 调试器。

只需按 Shift+Ctrl+Alt+D 键盘快捷键(D 表示 debug),它将启动 Ruby 调试器。它在安装期间和安装系统中的工作(只需确保安装了 byebug Ruby gem)。

不幸的是,此新功能仅在 Qt UI 中有效,ncurses UI 不受支持(当前它根本无法处理调试键盘快捷键)。

按下键盘快捷键后,调试器窗口将弹出

New debugger integration

存储重构:它还活着!

比最初预期的多了一个冲刺,但最终我们可以说用于新存储堆栈的测试 ISO 已经完全可安装。

我们修复了我们已经在上一个冲刺中几乎可以正常工作的 UEFI + MBR 分区表场景(原来在 Tumbleweed 中并没有那么严重),并且我们调整了 yast2-bootloader,使其也能够使用新的存储堆栈处理传统(即,非 UEFI)引导。

作为一项不错的成果,我们的测试 ISO 可用于安装一个在 UEFI 或传统系统上都能完美运行的系统,前提是磁盘上存在预先存在的 MBR 分区表。它只会显示几个与要安装的软件建议计算相关的错误弹出窗口,但没有任何东西会阻止您用新的基于 openSUSE 的实验替换您拥有的任何操作系统。

此里程碑为使用 openQA(相同的系统来帮助保证所有最新 SUSE 和 openSUSE 版本的稳健性)开始测试新的堆栈打开了大门。

存储重构:准备存储建议

现在 yast2-bootloader 开始能够在越来越多的场景中使用新的存储堆栈,是时候调整仍然在安装期间抱怨的唯一组件了。

为了使这项任务在下一次冲刺中可行,我们在此次冲刺中投入了一些时间来分析软件建议计算器与旧存储层之间的交互。结果是 一份小文档,详细说明了需要在建议和新堆栈中进行哪些调整。这是下一次冲刺任务的完美输入。

帮助记忆力短的专家用户

我们心爱的 YaST 在表面之下充满了 神奇的技巧。其中许多技巧对于调试安装问题或更好地了解 YaST 内部工作原理非常有用。不幸的是,开发人员往往不擅长盲目地记住东西,并且该功能隐藏得很好,以至于大多数新手很难找到它……直到现在。

我们添加了几个新的键盘快捷键来显示所有高级热键的摘要,现在您只需要记住一个键组合而不是一打键组合。在文本(ncurses)和图形(Qt)模式下,只需按 shift+F1 即可显示高级帮助。由于某些终端模拟器可能已经使用了该组合,因此在 ncurses 界面中也可以使用 ctrl+D F1 作为替代方案。

Advanced Hotkeys help dialog

贡献源源不断!

正如我们已经在之前的冲刺报告中提到的,作为开源开发人员,我们日常工作的重要组成部分是帮助休闲(和不太休闲)贡献者将他们的想法和代码引入 YaST 和相关项目。

这一次,这位(希望不是休闲的)贡献者是 Devin Waas,他希望改进安装程序,以便让云爱好者更容易使用。

对于云端用户来说,检索失败安装的日志 是一个 曾经是一个巨大的问题。现在,多亏了 Devin,您只需要运行一个 rsyslog 服务器,就可以从那里轻松访问您的安装日志。

A drawing is worth a thousand words

事实上,最新的 Tumbleweed 版本允许我们通过“Loghost 标志”从引导加载程序指定远程服务器的 IP 地址。Linuxrc 将负责为 dmesg 内容和 YaST 安装日志设置 UDP 广播。

这只是第一步。Devin 承诺进一步改进我们新实施的远程日志记录系统。而且他的编码水平比绘画水平更高,所以请继续关注!

存储重构:基于 LVM 的建议

正如我们之前在报告中提到的,当我们开始开发分区建议时,我们首先关注的是基于分区表的建议,其中包含一个或多个 MBR 风格的分区表。这看起来是最复杂的场景,因为主分区数量有限,对齐问题,每个逻辑分区引入的 EBR(扩展引导记录) 带来的开销等等。

几轮冲刺前,我们完成了这项工作,然后开始研究基于 LVM 的建议。这比预期的花费的时间更长,但现在我们能够为几乎所有可能的场景生成基于 LVM 的建议。目标是在我们的模拟测试用例中使其工作。因此,新的基于 LVM 的建议可能仍然无法用于安装一个完全可用的系统,但它得到了一个完整的测试负载的支持,证明我们可以处理许多情况,从简单的到真正棘手的……相信我们,如果您将逻辑分区及其 EBR 开销与 LVM 卷及其 PE 大小四舍五入以及它们的 元数据开销混合在一起,事情会变得非常棘手。

漏洞,漏洞,漏洞

在此次冲刺中,我们继续采用已经评论过的修复低优先级和小型漏洞作为 Scrum 流程的一部分。因此,我们记录了大约 50 个这些烦人生物的死亡。

结论

查看报告,我们可以说这是一次相当成功的冲刺。但老实说,我们的目标更高。相当多的有趣 PBI(Scrum 术语中的功能或错误修复)在冲刺结束时几乎完成了。但遵循 Scrum 哲学,我们从不谈论几乎完成的事情。

因此,如果一切顺利,三周后的下一份报告中的情况会更好。所以尽情尝试新功能,并保持关注!