内容

本次冲刺主要集中在修复键盘、引导加载程序和 AutoYaST 的一些错误。

统一 SLE 和 openSUSE 的控制台键盘布局

Linux 系统中国际化的管理方式随着时间的推移而变化,以及用于表示每种语言中使用的不同字母和字符的技术。YaST 尝试提供一种集中管理系统范围设置的方式。一个看似简单的操作,例如在 YaST 界面中更改语言,意味着许多方面,例如设置要在基于文本的控制台中使用的字体和键盘映射,对图形 X11 环境执行相同的操作,并保持这些字体和键盘映射同步,确保所有组件之间的兼容性。

为此,YaST 维护一个列表,其中包含所有键盘布局及其对应的“keymap”文件,这些文件位于 /usr/share/kbd/keymaps 下。 以前,openSUSE 和基于 SLE 的产品之间的该列表内容有所不同。 在本次冲刺期间,我们有机会分析情况并尝试统一标准。

我们分析了两种发行版系列中使用的所有 keymap 文件的状态和来源(您可以在 bug#1124921 的评论 #18 中看到相当全面的研究),并得出以下结论

  • openSUSE 列表需要进行一些小的调整。
  • 撇开这些不谈,openSUSE 中使用的 keymap 通常是更好的选择,因为它们更现代,并且与当前的上游开发保持一致。

因此,我们决定统一所有系统以采用 openSUSE 方法。 这基本上不会对我们的 openSUSE 用户产生任何影响,但可能会对安装即将发布的 SLE-15-SP2 的用户产生一些影响。 无论如何,我们希望这种改变在大多数情况下都会更好。 时间会证明一切。

将用户定义的仓库导出到 AutoYaST 配置文件

使用 yast clone_system 命令将生成一个 AutoYaST 配置文件,该文件反映正在运行的系统的状态。 以前,只有 SUSE 附加组件在 AutoYaST 配置模块中定义。 现在,用户定义的仓库也会导出到 <add-on> 部分的自己的子部分 <add_on_others> 中。

<add-on>
  <add_on_others config:type="list">
    <listentry>
      <alias>yast_head</alias>
      <media_url>https://download.opensuse.org/repositories/YaST:/Head/openSUSE_Leap_15.1/</media_url>
      <name>Yast head</name>
      <priority config:type="integer">99</priority>
      <product_dir>/</product_dir>
    </listentry>
  </add_on_others>
  <add_on_products config:type="list">
    <listentry>
      <media_url>dvd:/?devices=/dev/sr1</media_url>
      <product>sle-module-desktop-applications</product>
      <product_dir>/Module-Desktop-Applications</product_dir>
    </listentry>
    <listentry>
      <media_url>dvd:/?devices=/dev/sr1</media_url>
      <product>sle-module-basesystem</product>
      <product_dir>/Module-Basesystem</product_dir>
    </listentry>
  </add_on_products>
</add-on>

<add_on_others> 部分的格式与 <add_on_products> 部分相同。

更好地处理升级过程中损坏的引导加载程序设置

使用 SLE 和 openSUSE 的当前版本,使用安装介质升级包含严重损坏的 GRUB2 配置的系统(例如,包含不再存在的 udev 链接的引用)可能会在过程中导致难看的内部错误。

第一个可能的问题可能出现在摘要屏幕上。 如图所示。

如果错误没有弹出,或者用户设法从错误中恢复,则有可能到达升级过程的最终阶段。 但随后相同的内部错误仍然可能出现在不同的位置

这些错误将在即将发布的 SLE-12-SP5 和 SLE-15-SP2 版本以及相应的 openSUSE Leap 版本和 Tumbleweed 中得到修复。 现在,如果在摘要屏幕上检测到这样的损坏设置,将显示适当的警告,包括技术细节和有关如何修复问题的提示。

用户可以忽略该问题或单击“booting”进行修复。 在后一种情况下,将出现带有说明的常用弹出窗口。

如果在不修复错误的情况下到达升级过程的最终阶段,则野生的内部错误现在将被一条信息性消息取代,该消息不会中断该过程。

希望我们的大多数用户永远不会看到这些改进。 但系统损坏的用户可能会欣赏额外的指导。

旧存储,新功能

如果您是本博客的常客,您可能已经知道 YaST 已经完全重新实现了存储堆栈(又名 storage-ng)。 该新的存储代码首次亮相于 SLE 15(和 openSUSE Leap 15.0)系列。 并且由于这种翻新的代码,我们热爱的用户今天可以在 YaST 中享受一些新的出色功能,例如 Bcache、可分区软件 RAID 或多设备 Btrfs 文件系统(仅举几个例子)。 但 SLE 12(openSUSE 42)产品仍然存在,并且在每个维护更新中都得到改进! 当然,旧的存储堆栈也不例外,现在支持一个新的安装场景。

感谢 bug 报告,我们意识到 Snapper 在某些情况下无法配置。 更具体地说,报告者试图使用 Btrfs 作为根目录并启用 snapper,通过 AutoYaST 在直接格式化的软件 RAID 上进行安装。 安装执行得非常完美,但结果是安装的系统中 Snapper 未正确启用。 在更深入地研究问题后,我们发现这并不是一个错误,而是一个完全缺失的功能。 但没问题,YaST 立即开始工作,现在它得到了很好的支持。