简介
又到了 YaST 团队报告的时间!让我们看看今天有什么内容。
- 存储方面更多新闻和改进,特别是关于加密支持。
- YaST 网络行为的一些优化。
- libYUI 中的新小部件。
- 深入了解 systemd 定时器以及我们如何使用它们来取代
cron。 - 还有一个为必须处理复杂面向对象代码的开发人员准备的超酷工具!
所以让我们开始吧。
加密设备性能改进
如您所知,我们最近扩展了 YaST,以支持其他加密机制,例如交换设备的易失性加密或数据卷的持久性加密。您可以在我们的博客文章 "高级加密选项登陆 YaST 分区器" 中找到更多详细信息。
这些加密机制提供了根据磁盘的扇区大小调整加密层扇区大小的可能性。这可以在基于 4k 块的存储设备上提高性能。为了充分利用您的系统,我们指示 YaST 在可能的情况下将扇区大小设置为 4096 字节,这应该可以提高使用最近实现的方法创建的加密设备的性能。
此外,我们花时间改进了与加密相关的代码库,这是基于我们在实施易失性和持久性加密时学到的经验。我们还进行了一些额外的测试,并发现 一个问题,我们已经在刚刚开始的冲刺中修复了它。
与加密相关的其他改进
我们最近学到的经验之一是,使用 LUKS2 加密层调整设备大小与传统的 LUKS1 情况略有不同。使用 LUKS2,即使设备已经打开并处于活动状态,也必须在调整大小的时刻提供密码。因此,我们更改了 libstorage-ng 处理用户提供的密码的方式,以便在多种情况下调整 LUKS2 设备的大小,尽管仍然存在一些 YaST 分区器无法调整 LUKS2 设备大小的情况。
作为新密码管理的一个副作用,现在在安装开始时分析存储设备的过程应该在类似于 bug#1129496 报告 的场景中更加愉快,即存在许多加密设备,但用户不想激活所有这些设备。
说到基于我们用户反馈的改进,我们还根据我们之前提到的博客文章的评论中提出的建议,调整了使用易失密钥加密交换的新方法的名称。我们还借此机会改进了相应的警告消息和帮助文本。
网络和设备之间的依赖关系
与加密类似,网络后端是另一个在之前的冲刺中完成大实施后需要进行最终调整的领域。特别是,我们希望改进对依赖于其他网络设备(如 VLAN(虚拟局域网)或桥接)的设备的管理。
从历史上看,YaST 只是将设备的名称作为依赖项保留下来,即使该设备不再存在。这导致了不一致的状态。现在,依赖项是动态更新的。如果用户重命名设备,则会在所有其依赖项中自动重命名。如果用户删除了任何其他设备需要的设备,YaST 会立即询问用户是否修改(在绑定和桥接的情况下)或删除(在 VLAN 的情况下)这些依赖设备。
新的 libYUI 小部件:ItemSelector
现在我们提到了用户体验,有必要指出,我们创建 libYUI(我们的 YaST UI 工具包)的最后一个新小部件已经有一段时间了。但是,我们确定需要一个可以让用户从许多项目(每个项目不仅具有简短的标题,还具有描述性文本(可选地带有图标))中选择一个或多个项目,并且如果屏幕上放不下所有项目,则可以滚动的部件。
所以,欢迎使用新的 SingleItemSelector。
正如您期望的任何 libYUI 小部件一样,还有一个基于文本(ncurses)的替代方案。
请注意,上面的屏幕截图只是简短的使用示例。我们不计划恢复桌面选择屏幕。另一方面,现在我们有机会创建一个更漂亮的屏幕来选择计算机角色。敬请期待更多新闻。
还有一个允许选择多个项目的该小部件的替代版本。令人惊讶地命名为 MultiItemSelector。
当然,它也带有 ncurses 版本。
在不久的将来,我们计划将其用于选择产品和附加模块。但这种小部件也会找到其他用途。
玩转 Systemd 定时器
说到近未来,许多人可能知道,有一个计划正在酝酿中,要用 systemd 定时器取代 cron 作为 (open)SUSE 包执行周期性任务的默认机制。
在我们的例子中,我们决定从 yast2-ntp-client 开始更改,它提供了定期同步系统时间的可能性。所以让我们看看 systemd 定时器是如何工作的,以及我们如何使用它们来取代 cron。
在 systemd 中定义服务时,可以为该服务指定一种类型来定义其行为。启动时,类型为 oneshot 的服务将简单地执行一些操作然后完成。这些服务可以与定时器结合使用,定时器根据单调时钟以给定的节奏调用任何服务。为了使该节奏可由用户配置,YaST 模块会用位于 /etc/systemd/system 的另一个定时器覆盖默认定时器。
作为给任何其他人迁移到 systemd 定时器的注意事项,我们的第一个想法是使用 EnvironmentFile 指令而不是覆盖定时器。但似乎定时器无法做到这一点。
使用 systemd 服务实现此操作的一个明显优势是能够指定依赖项和与其他服务的关系。在我们的例子中,如果正在运行 chrony 守护程序,则不允许使用一次时间同步,因为它们会相互冲突。因此,新系统比一个单行 cron 脚本略微复杂,但它也更具描述性和可靠性。
还有一个给任何处理 one-shot 服务和 systemd 定时器的人的提示,您可以使用 systemd-cat 捕获任何脚本的输出并将其重定向到 systemd 日志。
每个人都喜欢图表
除了给系统管理员和打包人员的提示之外,我们还为我们的开发人员同事提供了一些内容。您知道 YaST 是一个试图管理各种相互关联的片段的庞大项目。通常,平均 YaST 开发人员需要跳转到一些复杂的模块。代码文档可以帮助您了解 YaST 内部结构,而您并不每天都使用它。为了生成这样的文档,我们使用 YARD 工具,其输出例如可以在这里找到,用于 yast-network。但是,对于具有许多小类的庞大模块,这不足以获得良好的概述。
进入 yard-medoosa,YARD 的一个插件,可以自动创建 UML 类图,可点击以获取类的文本文档。
它仍然是一个原型,但它已被证明对导航某个大型拉取请求很有用。我们希望很快告诉您有关改进版本的信息。
fstab 和 crypttab 中更可靠的设备名称
回到与存储管理相关的课题,您肯定知道有几种方法可以在 /etc/fstab 文件中或 /etc/crypttab 中指定要挂载的设备。除了直接使用设备名称(如 /dev/sda1)或基于 udev 的任何替代名称外,还可以使用文件系统或 LUKS 设备的 UUID 或标签。
默认情况下,YaST 将在 s390 系统中使用 udev 路径,并在任何其他架构中使用 UUID。虽然这可以通过修改 /etc/sysconfig/storage 文件或简单地使用分区器中的此屏幕来配置,分区器可以更改安装(包括引导设置和专家分区器)写入结果 fstab 和 crypttab 文件的方式。
但是,如果默认选项(如 udev 路径)对于某些特定设备不是有效选项怎么办?到目前为止,YaST 只是将设备名称(例如 /dev/sda1)作为直接的回退。这发生在过程的最后阶段,即已经将更改写入磁盘时。
我们已经为 Tumbleweed、SLE-15-SP1(这意味着 Leap 15.1)以及 (open)SUSE 的即将发布的版本改进了这一点。现在,如果默认值不适合特定设备,因为相应的 udev 路径不存在,因为使用给定的名称与所选加密方法不兼容,或出于任何其他原因,YaST 将回退到最合理和最稳定的替代方案。它将从过程的最开始就执行此操作,并立即在分区器中可见。
敬请期待更多……并保持沟通
像往常一样,当我们发布我们的冲刺报告时,我们已经在致力于下一个开发冲刺。因此,在大约两周后,您将收到更多关于我们工作的新闻,这次可能重点关注 AutoYaST。
请不要忘记继续向我们提供反馈。如上所述,它对我们非常有价值,我们真的将其用作计划后续开发冲刺的输入。






