随着 (open)SUSE 版本的临近,YaST 团队基本上处于修复 bug 的模式。然而,我们仍在添加一些缺失的部分,例如 AutoYaST 的 bcache 支持。此外,还有一些有趣的改进,我们想让您了解。

  • AutoYaST 支持将 Btrfs 子卷用作用户home目录。
  • 改进了注册模块中的证书管理。
  • 在使用 virtio-blk 时正确检测 DASD。
  • 正确处理启动加载程序模块中的 resume 选项。
  • 在安装过程中正确显示字体和图标。

另外,作为奖励,我们提供关于 YaST 在 GNOME 桌面上的字体缩放问题的一些见解(剧透:根本不是 YaST 的 bug)。

将 bcache 支持添加到 AutoYaST

几天前,bcache 的支持已经登陆到YaST 分区程序中。 简而言之,bcache 是一种缓存系统,它允许通过使用更快更小的磁盘(缓存设备)来提高任何大型但缓慢磁盘(所谓的后端设备)的性能。

在 AutoYaST 中描述 bcache 的方式与描述 RAID 或 LVM 卷组的方式非常相似。 一方面,您需要通过设置 bcache_backing_forbcache_caching_for 元素来指定将哪些设备用作后端缓存设备。 另一方面,您需要描述 bcache 设备的布局。 就像对 RAID 一样,您可以分区设备或将其用作文件系统。

以下示例使用 /dev/sda 来加速对 /dev/sdb 的访问,创建一个 bcache 设备(称为 /dev/bcache0)。

<partitioning config:type="list">
  <drive>
    <type config:type="symbol">CT_DISK</type>
    <device>/dev/sda</device>
    <disklabel>msdos</disklabel>
    <use>all</use>
    <partitions config:type="list">
      <partition>
        <!-- It can serve as caching device for several bcaches -->
        <bcache_caching_for config:type="list">
          <listentry>/dev/bcache0</listentry>
        </bcache_caching_for>
        <size>max</size>
      </partition>
    </partitions>
  </drive>

  <drive>
    <type config:type="symbol">CT_DISK</type>
    <device>/dev/sdb</device>
    <use>all</use>
    <!-- <disklabel>none</disklabel> -->
    <disklabel>msdos</disklabel>
    <partitions config:type="list">
      <partition>
        <!-- It can serve as backing device just for one bcache -->
        <bcache_backing_for>/dev/bcache0</bcache_backing_for>
      </partition>
    </partitions>
  </drive>

  <drive>
    <type config:type="symbol">CT_BCACHE</type>
    <device>/dev/bcache0</device>
    <bcache_options>
      <cache_mode>writethrough</cache_mode>
    </bcache_options>
    <use>all</use>
    <partitions config:type="list">
      <partition>
        <mount>/data</mount>
        <size>20GiB</size>
      </partition>
      <partition>
        <mount>swap</mount>
        <filesystem config:type="symbol">swap</filesystem>
        <size>1GiB</size>
      </partition>
    </partitions>
  </drive>
</partitioning>

在 AutoYaST 中将 Btrfs 子卷用作用户主目录

在上次报告中,我们展示了一个新功能,允许将 Btrfs 子卷用作用户的主目录。 然而,AutoYaST 对该功能的支持却缺失了。

现在您可以使用 home_btrfs_subvolume 来控制是否应将 Btrfs 用作主目录。

<user>
   <encrypted config:type="boolean">false</encrypted>
   <home_btrfs_subvolume config:type="boolean">true</home_btrfs_subvolume>
   <fullname>test user</fullname>
   <gid>100</gid>
   <home>/home/test</home>
   <shell>/bin/bash</shell>
   <uid>1003</uid>
   <user_password>test</user_password>
   <username>test</username>
</user>

调整启动加载程序的 resume 参数

启动加载程序使用 resume 参数来告诉内核应该使用哪个交换分区来进行休眠到磁盘功能。 如果您足够好奇,可以在YaST 启动加载程序模块内核参数选项卡中找到您系统的该值。 现在我们知道了 resume 参数是什么,是时候谈谈我们最近解决的两个问题了。

第一个问题与 YaST 确定应该使用哪个交换分区的方式有关。 错误报告提到 YaST 正在使用系统未使用的交换分区,此外,该分区位于可移动设备上。 在检查代码后,我们发现我们正在使用一种简单的启发式方法,该方法只是选择了可用的最大的交换分区。 我们改进了该逻辑,以使用系统正在使用的最大的交换分区。 但是,如果没有找到合适的分区,YaST 将回退到旧行为。

第二个问题与 AutoYaST 未正确处理 noresume 选项有关。 当用户指定该选项时,AutoYaST 只是盲目地将其添加到内核命令行,同时保留了冲突的 resume 参数。 这当然会导致问题。 现在,当给出 noresume 时,AutoYaST 会简单地删除所有 resume 参数。

注册、OpenSSL 和调试

如今,以适当的方式处理 SSL 证书是保持系统安全的关键。 因此,在此冲刺期间,我们投入了大量时间来改进我们的注册模块中证书的使用方式。 基本上,我们改进了 YaST 在以下场景中的行为

  • 使用自签名证书。
  • 处理未知的证书颁发机构。

当自定义注册服务器(新的 RMT 或旧的 SMT)使用自签名证书时,YaST 会提供导入服务器证书并使其为系统所知的选项。

Self-signed Certificate Dialog

另一方面,如果服务器 SSL 密钥由未知密钥签名,YaST 过去只是显示一个错误弹出窗口。 这没有太大帮助,因为它不清楚该怎么做。 现在,将显示一个新的弹出窗口,其中包含一些关于如何手动导入 CA 证书的提示。 在这种情况下,它不能自动导入,因为 YaST 不知道从哪里获取它,它不在服务器响应中。

Unknown Certificate Authority Dialog

导入和激活证书的工作现在由 YaST 脚本执行,从而防止用户不得不运行一些复杂(且容易出错)的命令。

这些改进和其他 OpenSSL 细节已记录在 OpenSSL 证书文档中。 此外,如果您需要调试任何 SSL 相关问题,这份新的 OpenSSL 调试提示文档可能对您有所帮助。 它涵盖了基本主题,例如显示 PEM 证书详细信息、运行测试 HTTPS 服务器、创建自签名证书等。

在 zKVM 中使用 virtio-blk 时检测 DASD

IBM 的 S/390 平台具有一些您在传统架构(如 x86)中找不到的特殊功能。 其中之一是 DASD 硬盘。 可以使用 virtio-blk 后端在 zKVM 中访问这些设备,但 DASD 需要特殊处理。 例如,最常见的 DASD 类型(CDL ECKD)不能与 MS-DOS 分区表或 GPT 一起使用,而是需要 DASD 分区表。 考虑到这一要求,YaST 现在可以正确检测使用 virtio-blk 的 DASD,并使用正确的 DASD 分区表。

改进安装程序中的字体和图标处理

在一段时间之前,Stasiek Michalski(又名 hellcp),我们非常活跃的 openSUSE 社区贡献者之一,花了很多精力来改进 YaST 中的艺术作品。 因此,现在图标尽可能从桌面的图标主题中使用,并且安装程序字体已更改。

后者导致字体大小对于视力下降的用户来说太小了:新的字体具有不同的字体指标,因此默认字体大小太小。 我们在此冲刺期间修复了该问题。 另请参见 openSUSE/branding#107

顺便说一下,消失的图标问题也已解决。 请参阅 libyui/libyui-qt#100 如果您对细节感兴趣。

顺便说一句,我们欢迎积极的社区成员贡献(再次感谢,@hellcp!)。 会有一些 bug;这很自然。 我们需要合作来修复它们。

YaST 在 GNOME 桌面上的字体缩放问题

这实际上不是 YaST 的问题,但当然,针对此 bsc#1123424 向 YaST 报告 bug 也是很自然的。 而且,我们花了相当长的时间才弄清楚这里出了什么问题。

基本上,当您使用GNOME 调整工具设置一个不是 0.25 的倍数的字体缩放因子时,这将被完全忽略,因此所有 Qt5 应用程序(包括 YaST Qt 控制中心和所有 YaST 模块)将以未缩放的字体显示。

问题在于GNOME 调整工具设置非整数 DPI 值(这已经超出规范,因此是一个 bug),Qt5 库因此完全忽略该 DPI 值。 因此,GNOME 工具应该正确执行此操作,但 Qt5 库也可以更优雅地处理此问题。

不幸的是,我们无法从 YaST 方面解决此问题,即使我们知道将来这可能会再次被报告为 YaST bug。 :smiley:

总结

正如我们在本文开头所述,我们基本上处于修复 bug 的模式。 因此,如果您有时间,请尝试 (open)SUSE 的测试版本,并报告尽可能多的 bug。

谢谢!