AutoYaST 中的用户友好型错误消息

近几周,针对即将推出的 SLE 15 系列,AutoYaST 版本在与新存储层的集成方面受到了很多关注,从修复错误到添加一些缺失的(甚至是一些新的)功能。让我们看看到目前为止我们都做了些什么。

首先,一个新的错误报告机制将在即将推出的 AutoYaST 版本中首次亮相。 以前,在分区过程中出现问题时,你会收到类似“配置分区时出错。请重试。”的消息。这根本帮不上忙,对吧? 此时,你只能自己找出问题所在。

现在 AutoYaST 能够以一种便捷的方式识别并向用户报告不同的问题。 此外,在许多情况下,它甚至能够指出 AutoYaST 配置文件的违规部分。

AutoYaST error reporting

错误报告机制可以区分两种不同类型的问题:警告和错误。 当检测到警告时,会向用户显示一条消息,但安装不会停止(它会遵守 <reporting> 部分中的设置)。 另一方面,错误会完全阻止安装。

请记住,此错误报告机制仅适用于 <partitioning> 部分。 也许将来可以将其扩展到涵盖自动安装过程的其他部分。

将跳过列表带回 AutoYaST 分区

在定义分区方案时,你可以让 AutoYaST 决定应该使用哪个设备进行安装。 这样,你可以使用相同的配置文件来安装具有不同存储设备内核名称(例如 /dev/sda/dev/vda)的机器。

显而易见的是,在这种情况下,我们可能希望影响决策过程。 例如,我们希望避免考虑 USB 设备进行安装。 AutoYaST 提供了一项称为跳过列表的功能,允许用户使用名称、驱动程序、大小等属性过滤设备。

不幸的是,SLE 15 Beta1 中的跳过列表支持相当有限。 但这些天我们已经扩展了 yast2-storage-ng 以提供额外的硬件信息,现在 AutoYaST 能够使用它来过滤设备。

作为副作用,ayast_probe 客户端已修复,可以再次显示你在跳过列表中可以使用的键。

更多关于 AutoYaST

除了添加或恢复功能外,我们还修复了几个错误。 如果你对细节感兴趣,可以查看 最近的条目yast2-storage-ng 更改文件中。

我们知道还有一些功能缺失,并且应该尽快解决更多错误,但希望 AutoYaST 在大多数情况下都能正常工作。

未注册系统的 SLE15 媒体基于升级

在本冲刺中,我们还继续实施从 SUSE Linux Enterprise (SLE) 12 产品到版本 15 的升级。特别是,我们解决了未注册系统的升级问题。

在这种情况下,你需要“SLE15 安装程序”介质,以及“SLE 15 包”介质。 安装程序介质仅包含安装非常小的系统的最小软件包。 其余内容可通过注册服务器或通过额外的介质获得。 显然,对于未注册的系统,只有第二种选择才有意义。

在本冲刺中,我们专注于使所有部分协同工作。 你可以在以下屏幕录像中看到结果。

Upgrading an unregistered system

修复了具有 512MB RAM 的系统中的安装程序崩溃

我们收到了一份错误报告,即即将推出的 SUSE Linux Enterprise Server 15 的 Beta 版本有时会在具有 512MB RAM 的系统上安装过程中崩溃。 这很糟糕,512MB 是应该足以在文本模式下安装最小系统的必需限制。

最初我们认为崩溃是由内存不足引起的,但报告的内存使用量正常,仍然有足够的可用内存。

事实证明,问题在于 pkg-bindings 尝试评估未定义的回调函数。 修复很简单,但问题是为什么只有在具有 512MB RAM 的系统上才会发生这种情况,而在有更多内存时不会发生这种情况。

后来我们发现,差异是由额外的 inst-sys 清理(在 Sprint 22 报告 中提到)引起的,当内存不足时 YaST 会运行该清理。 在这种情况下,YaST 删除了 libzypp raw 存储库元数据缓存。 假设数据已经解析并缓存到二进制 solv 缓存中,不再需要原始文件。 但是,libzypp 仍然可能稍后使用一些原始文件。

因此,我们更改了 inst-sys 清理算法,仅删除我们知道以后不需要的文件,并保持其余文件不变。

专家分区:那些 有些人回来了

在本冲刺期间,已经将几个功能带回到专家分区器中。

  • 允许创建和删除逻辑卷。
  • 允许删除 MD RAID。
  • 允许使用多路径设备。

现在你可以使用专家分区器创建逻辑卷。 当你转到 LVM 概述或访问特定的卷组时,将提供一个用于添加逻辑卷的按钮。 单击它,你将进入逻辑卷创建向导。 请注意,虽然可以在第一个向导步骤中选择逻辑卷类型,但只能创建常规卷。 薄逻辑卷和薄池很快就会到来。 除了创建逻辑卷之外,现在还有一个用于删除它们的按钮。

LVM management in the reimplemented partitioner

Creating an LVM LV in the reimplemented partitioner

Deleting an LVM LV in the reimplemented partitioner

也为 MD RAID 实现了删除操作。 因此,你在 RAID 概述中以及访问特定的 MD RAID 时都有一个删除按钮。 当然,在删除设备之前会要求你确认。

Deleting an MD RAID in the reimplemented partitioner

此外,在本冲刺期间恢复的另一个重要功能是使用多路径设备的可能性。 现在,多路径与专家分区器树视图中的其他磁盘一起列出,允许你像管理常规磁盘一样管理它们。 例如,你可以在其上创建或删除分区。 此外,当选择多路径设备时,会显示一个新的选项卡以列出属于多路径的所谓“线”。

Multipath devices in the reimplemented partitioner

改进产品升级工作流程

虽然从 openSUSE Leap 升级到 SLE 的可能性在 SUSE 和 openSUSE 的规划中,但事实是它一直是一个不受支持的场景。

但是,使用以前版本的 SUSE Linux Enterprise,你可以拿一张 SLES DVD,以升级模式启动它,然后选择升级 openSUSE 分区。 YaST 会让你通过几个屏幕,然后告诉你它实际上不会让你从 openSUSE 升级到 SLES。

从最近的 SLE15 预发布版本开始,不兼容的产品已经在分区选择器中被过滤掉了(可以通过“显示所有分区”复选框覆盖),让你更早地知道是否能够将你的系统升级到新的 SLES。

安装过程中注册问题的修复

在 SLE 15 安装程序中,在安装过程的非常开始时有一个产品选择对话框。 之后,你可以注册所选产品,但无法更改产品,因为注销产品并注册另一个产品不受支持。 我们的优秀 QA 团队发现,当安装被中止并从 Linuxrc 重新启动而没有重新启动时,安装程序认为产品已经被选中,并且没有提供任何产品进行安装。 一个小修复使其再次工作 – 现在我们在安装程序的开始时始终执行以下 SUSEConnect 命令。

SUSEConnect --cleanup

这将删除安装程序中所有以前注册尝试的痕迹。 这也意味着你可能仍然需要在 SUSE 客户中心 直接注销,如果需要的话。

改进注册过程中的帮助文本

正如你所见,我们一直在努力完善注册体验的许多方面和场景。 这也包括与用户的更好沟通。 因此,注册模块中的帮助文本已得到改进,以包含复选框状态的描述。 这对于“自动选择”状态尤其重要,该状态特定于此对话框,并且未在其他任何地方使用。

YaST 中的帮助文本使用允许包含图像的 HTML 子集。 在这种情况下,我们直接从 UI 样式表包含复选框图像。 但是在文本模式下,我们必须使用文本替换而不是图像。 这意味着帮助文本内容必须根据当前的 UI 动态创建。

你可以在这里看到两个界面的示例。

The graphical version of the new registration message

Text-based version of the new registration message

扭转存储提案:这次是认真的

Sprint 42 的报告 中(确切地说,在标题为“扭转存储提案”的部分中),我们提出了使软件提案在每个产品的基础上更可定制的计划,以及 新格式的草案文档,该格式将允许发布经理定义安装程序在该方面的行为。

现在这比单纯的规范更进一步,新的格式实际上被用于定义 SUSE Linux Enterprise 15 的 KVM/Xen 角色以及即将推出的基于 SLE15 的 CaaSP 的分区提案。

在以下屏幕截图中,你可以看到上述 KVM/Xen 角色的引导设置的相应步骤,其中经典的 /home 和 Swap 分区的控件已被角色描述部分中控制文件中定义的更具目标性的卷替换。

Partitioning configuration for the KVM/Xen role

而且,如你所见,安装程序现在会遵守这些设置,以提出合理的分区布局。

Storage proposal for the KVM/Xen role

新的格式和逻辑以及 UI 的相应实现都足够灵活,可以使发布经理定义所有类型的产品,并使每个人能够创建更定制的 openSUSE 衍生版本,而不会放弃自动提案的强大功能。 请参阅下面的另一个示例(不对应短期内计划的任何产品或衍生版本),其中具有更多可能性,并注意根据用户在先前步骤中的选择,措辞是如何自动调整为谈论 LVM 卷而不是分区的。

LVM-based example of the new proposal

用 Chrony 替换 yast2 ntp 客户端中的 ntpd

从 SLE15 和 openSUSE Leap 15 开始,Chrony 将取代经典的 ntpd 作为默认 NTP 客户端。 这将为系统管理员和其他用户提供几个优势,如 此比较 所示。 为了使这种替换成为可能,我们开始研究 Chrony 支持的内容以及如何允许我们的用户通过 YaST 配置它。

研究阶段现已完成,我们已经制定了一个计划来继续调整现有的 yast2-ntp-client 模块。 并且一些代码,允许在安装期间设置 NTP 服务,现在在一个功能分支中(因此尚未在 Tumbleweed 中)。

下一步将是对 YaST 模块进行巨大的改进(和简化),这将超越适应选项列表。 在下面的屏幕截图中,你可以看到尚未完成的原型正在运行。

New NTP settings

通过 systemd 在安装程序中配置键盘

最初,键盘配置是由 YaST 直接写入相应的 Systemd 相关配置文件。 但是,我们收到了一份错误报告,指出 YaST 不应该直接触摸配置文件,而应该调用 localectl 工具来更改它。(请参阅 localectl man 页面 中的详细信息)。

但是,这仅适用于已安装的系统,不适用于系统安装,因为它需要正在运行的 Systemd,而这在安装过程中不可用。 更改未运行系统的设置必须使用 systemd-firstboot 命令完成。

但是,这不支持修改键盘设置。 幸运的是,一位 SUSE 开发人员帮助我们并实现了此功能到 Systemd (pull request)。 当前该功能在 (open)SUSE 包中可用,但以后将在上游版本中提供给其他人。

另一个相关的更改是 YaST 不仅设置了控制台键盘,还构建了 X11(GUI)的键盘设置。 但是这实际上是一个重复的功能,localectl 本身就包含此功能。 因此,我们已将其从 YaST 中删除,并让 localectl 工具自动设置两个键盘设置。

现在来点完全不同的

Hack Week 0x10(即第 16 届)现在开始了。 这意味着 YaST 团队的大多数开发人员将花一周时间致力于可能对我们心爱的用户在短期内产生直接和可见影响的主题。 但嘿,也许我们会制造一个机器人或一艘宇宙飞船!

经过一周后,我们将重新启动我们的 Scrum 活动。 因此,如果一切顺利,你将在大约四周后收到有关 YaST 开发的另一个更新。 同时,加入我们的 Hack Week,让我们一起玩得开心!