时光飞逝,YaST 的车轮不停转动。让我们来看看自上次 开发报告 以来,有哪些进展。
更灵活的 NET 安装 ISO
Tumbleweed 或 Leap 的网络安装介质只能与构建时使用的确切仓库正常工作——对于 Tumbleweed 而言,这可能意味着在一天之内就会过时。
然后您会遇到此消息
为了改善这种情况,安装程序现在可以提供从仓库下载匹配的启动文件(确切地说,是内核和 initrd)的功能,如果检测到这种情况。
当然,您可以选择“否”——但随后您将回到红色对话框。 ![]()
从技术上讲,所做的是从仓库下载新的内核/initrd 对,并使用 kexec 重新启动安装过程。因此,请准备好迎接轻微的似曾相识感。
此功能由 kexec 启动选项控制。
Storage-ng 进入 Tumbleweed:小心使用
但这不是我们关于 openSUSE Tumbleweed 的唯一新闻。我们的常客已经了解 Storage-ng,我们重写整个 YaST 存储堆栈的努力。他们也知道它仍在进行中。但由于太多有价值的更改被 Storage-ng 的采用所阻止,因此决定是时候按下红色按钮了。因此,我们很高兴地宣布 Storage-ng 时代已经开始,它被包含在第一个官方 (open)SUSE 产品中——从 snapshot 20180117 开始,libstorage-ng 已经取代了 libstorage,因此,yast2-storage-ng 已经取代了 yast2-storage。
据说知情才能自保,因此在 news.opensuse.org 上提前发布了一篇文章 提前发布,以设定期望并提供当前状态的概述。我们鼓励所有 openSUSE Tumbleweed 用户(重新)访问该文章,以更好地了解情况。
专家分区程序中分区的对齐
这项正在进行的工作的重要组成部分是使用 Storage-ng 技术重新实现专家分区程序。如前几篇帖子中多次提到的,这主要是 1:1 克隆,具有与经典 YaST 分区程序完全相同的功能,并以完全相同的方式呈现。但有时我们有机会在这里进行一些改进,就像本周对分区对齐进行的改进一样,这可能会对系统性能产生非常明显的影响。
虽然很多人没有意识到,但系统中的分区必须正确对齐,以避免由过多的读-修改-写周期引起的性能下降。有关详细信息,请参阅 维基百科上关于该主题的精彩文章,尤其是标题为“4 KB 扇区对齐”和“SSD 页面分区对齐”的部分。此外,撇开性能考虑不谈,一些分区表需要对齐才能正常工作,例如 DASD 分区表,它需要对齐到轨道(通常是 12 个扇区)。
新的专家分区程序在创建和调整分区时会考虑到所有这些因素,始终确保所需的对齐(例如 DASD 轨道)并鼓励可选的与性能相关的对齐,同时避免分区之间的不必要间隙。
在上方,您可以查看用于选择新分区大小的对话框,不出所料,它看起来非常类似于 pre-storage-ng 专家分区程序中的相同对话框。如果用户在该对话框中指定了大小(表单中的前两个选项),则分区的开始和结束将对齐,以确保最佳性能并最大限度地减少间隙。这可能会导致分区略小(差异通常小于 1MiB)。如果指定了自定义区域,则开始和结束将尽可能地按照指定进行,没有性能优化(尽管强制对齐,例如 DASD 轨道,仍然会发生)。这是创建非常小分区的最佳选择。
在调整现有分区大小以及分区程序在此过程中建议的最小和最大大小的计算时,也将考虑最佳对齐的相同考虑因素。
存储设置的合理性检查
专家分区程序中绕过性能优化的可能性只是该工具提供的(潜在的释放)力量的一个例子。作为这种灵活性的结果,有时用户可能会忽略一些重要的设置配置,甚至犯错误。为了帮助解决这个问题,专家分区程序本周恢复了检查输入的存储设置的能力。
一旦用户设置了分区、LVM 卷、文件系统、挂载点等,并决定继续,分区程序将验证该设置,以确保它满足启动和运行系统所需的所有要求。当检测到问题时,将显示一个弹出消息,以显示问题是什么,并提供忽略警告并继续前进的选项。
为了确保分区设置的有效性,将执行两种类型的检查。首先,检查是否存在启动所需的必要分区。启动要求取决于当前架构(x86、PowerPC、AArch 等)和其他技术细节,例如分区表类型(GPT 与 MS-DOS)。然后,检查当前产品所需的强制卷。强制卷是在修改后的 partitioning 控制文件部分中定义的。通常,只有 root 和 swap 的卷是强制性的,但现在任何人定义产品(SLE、Leap、Tumbleweed、您自己的自定义 openSUSE 派生产品……)都可以完全配置它。
作为奖励,所有合理性检查现在都已集中化(它们曾经散布在 YaST 源代码中),并且更容易添加新的检查(您现在会错过一些旧的检查)并从 YaST 的其他部分(例如引导加载程序模块或 AutoYaST)使用它们。
专家分区程序的更多改进
本周专家分区程序克隆的警告和对齐改进并不是唯一的新闻。LVM 设备的大小调整也已恢复,包括卷组和逻辑卷。对于逻辑卷,功能与已经存在的并且您可以在对齐部分截图中看到的调整大小没有太大区别。
另一方面,在分区程序上下文中,调整卷组大小实际上意味着添加或删除物理卷。现在这些操作再次成为可能,包括相应的检查。例如,如果物理卷已存在于磁盘上(这可能会破坏您的数据),则无法删除物理卷,或者如果卷组的最终大小不足以覆盖所有逻辑卷,则无法删除。
除了上述功能之外,专家分区程序还改进了信息的呈现方式。例如,现在“类型”列显示每个设备的正确标签和图标,而不是无用的 TODO 标签。此外,类似的 TODO 标记已在设备概述选项卡中替换为正确的数据。
最小化 SLE15“Installer”和“Packages”DVD 之间的更改
SUSE Enterprise Server 15 (SLES15) 产品可以从一个可引导的“Installer”DVD 介质安装,该介质包含安装程序和非常精简系统所需的一组软件包。其他软件包可通过注册服务器(在注册 SLES 产品后)或单独的“Packages”DVD 介质获得。
由于这些 DVD 的结构(一些软件包同时存在于两者中),SLES 安装程序会在安装过程中多次要求用户更换介质。理想情况下,安装程序应使用“Packages”介质中的所有软件包,而无需更换介质。
此外,还有另一个要求是优先使用安装 DVD 上的软件包而不是通过远程仓库提供的软件包。从互联网下载软件包通常比 DVD 慢得多,并且在下载限制或基于带宽使用量的价格的网络连接中可能存在问题。
现在,安装程序正确调整了所有仓库的优先级,以实现所需的行为。为了避免可能的副作用,我们决定仅在使用了多个仓库并且所有仓库都是本地仓库(例如 DVD、硬盘、USB 闪存盘……)时才更改仓库优先级。这意味着在某些不太常见的情况下(2 个 DVD + 一个远程仓库),您仍然需要更换介质,但这是一种更安全的解决方案。
AutoYaST 中的附加产品
对于使用 SLE 附加产品的人员,我们改进了在 AutoYaST 安装期间无法添加附加产品时显示的错误消息。用户现在可以看到哪个配置错误的附加产品导致了错误。
这将随着即将到来的 SLE15 变得更加有用,在 SLE15 中,附加产品和模块的概念将比以往任何时候都更加重要。
修复了关闭 YaST 用户界面时发生的崩溃
现在是时候为那些喜欢我们报告这部分内容的爱好者提供一些技术见解了。
当关闭 UI(YaST 组件的用户界面)时,UI::OpenDialog() 和 UI::CloseDialog() 调用不匹配时,您会得到一个带有核心转储的段错误。好吧,您想要 关闭 YaST,但可能不是这样。现在已修复此问题。
在跟踪此问题时,使用 YaST 版本的简单“Hello, World”程序,并注释掉 UI::CloseDialog() 调用,可以很容易地重现它。
这是一个提供额外的错误报告导致问题比原始错误更大的情况:在终止程序时让对话框保持打开状态当然是一个错误。但是,通过清理剩余的对话框来修复这个小问题,导致在一些底层基础设施(在本例中是 QApplication)已经被销毁后处理小部件,因此所有 QWidgets 也被销毁了(因为 QApplication 会负责处理),但 YaST 的通用 UI 层仍然不知道这个事实,并试图再次销毁它们。
现在已通过首先清理 YaST 通用 UI 层中的小部件树来修复此问题,这也会清理相关的 QWidgets,因此没有剩余的内容供 QApplication 清理。
这可能还会修复其他类似段错误,在其他情况下,由于其他问题,YaST Ruby 引擎需要关闭,例如,当存在未处理的 Ruby 异常时。
令人惊讶的是,这可能是一个非常古老的(10 多年?)错误,但它从未变得非常明显,或者至少没有人感到恼火到尝试跟踪它。
如果您想了解更多详细信息,请查看 错误报告中的对话。
更多内容即将到来
本次冲刺的结束赶上了很多几乎完成的工作。但遵循 Scrum 原则“直到符合完成定义,否则任何事情都未完成”,我们不会在博客中发布此类内容。幸运的是,这意味着下一份报告可能会非常有趣。所以,再过几周见!







