Ubuntu如何利用Rust重建核心系统工具

Ubuntu如何利用Rust重建核心系统工具

💡 原文英文,约1800词,阅读约需7分钟。
📝

内容提要

Ubuntu正用Rust重建核心系统工具,基于内存安全与长期平台战略,选择性替换关键组件。26.04 LTS已默认采用uutils coreutils和sudo-rs,后者改变默认行为(如密码显示星号)。未来将引入ntpd-rs统一时间同步、UPKI实现证书撤销,并关注压缩库。通过cargo auditable嵌入SBOM,采用vendoring管理依赖,确保安全与可维护性。

🔎

延伸解读

兼容性与行为改变的权衡

Ubuntu在采用Rust重写工具时,采取了两种不同的策略:uutils coreutils追求与GNU工具100%兼容,甚至将行为差异视为bug;而sudo-rs则重新设计sudo,引入如密码输入显示星号等行为改变。这种对比凸显了在系统工具迁移中,兼容性与创新之间的取舍。用户需注意,sudo-rs的默认行为变化可能影响脚本或用户习惯,但Canonical认为新行为更优。

LTS边界发布策略的意义

Canonical选择在LTS版本边界引入这些变化,是出于风险控制的考虑。LTS是企业升级的主要时机,同时提供较长的支持周期。若新工具出现问题,用户可回退到上一LTS版本,并享有长达15年的维护支持。这一策略降低了迁移风险,确保用户有充足时间适应变化,而旧工具仍保留在软件源中,不会被强制替换。

供应链安全与依赖管理

Ubuntu在打包Rust软件时采用vendoring方式,将所有crate捆绑发布,确保构建确定性。同时,通过cargo auditable为每个Rust二进制嵌入SBOM,便于漏洞追踪。此外,snap包机制允许新软件在旧版Ubuntu上运行,解决了Rust工具链版本升级带来的兼容性问题。这些措施增强了供应链透明度,但用户需注意,SBOM仅列出依赖,不保证无漏洞。

Q&A

Ubuntu为什么选择用Rust重建核心系统工具?

Ubuntu选择Rust主要是为了内存安全,以提高系统的安全性和可靠性。此外,这也是一个长期平台战略,旨在吸引注重正确性和安全性的开发者,并为未来20年的平台发展奠定基础。

Ubuntu 26.04 LTS中默认使用了哪些Rust重写的工具?

Ubuntu 26.04 LTS默认使用了uutils coreutils(GNU coreutils的Rust重写版)和sudo-rs(sudo的Rust重写版)。

sudo-rs与传统的sudo在行为上有哪些不同?

sudo-rs在设计上更注重安全性,它改变了默认行为,例如在终端输入密码时显示星号。这与传统sudo的静默输入不同,是sudo-rs有意的行为改变。

ntpd-rs将如何改变Ubuntu的时间同步方式?

ntpd-rs将取代chrony和linuxptp,成为Ubuntu默认的时间同步工具,统一处理NTP、NTS和PTP协议,简化配置,并利用Rust的内存安全特性提高可靠性。

UPKI项目在Ubuntu中扮演什么角色?

UPKI是一个与Rustls项目合作的新项目,旨在为Linux系统工具(如curl、wget和OpenSSL)实现证书撤销功能,这是浏览器早已支持但Linux工具尚未实现的功能。UPKI计划在Ubuntu 26.10中首次发布。

Ubuntu如何管理Rust依赖并确保供应链安全?

Ubuntu采用vendoring方式管理Rust依赖,将所有crates打包成tarball随软件发布,确保构建确定性。同时,所有Rust包都启用了cargo auditable,嵌入SBOM(软件物料清单),便于追踪漏洞。

Ubuntu为什么选择在LTS版本边界推出这些Rust重写工具?

LTS版本是企业升级的主要时机,也是回退选项最重要的时刻。通过在LTS边界推出新工具,如果用户遇到问题,可以在上一个LTS版本上获得15年的维护支持,同时旧工具仍保留在软件源中,用户不会被强制升级。

Ubuntu未来计划用Rust重写哪些组件?

Ubuntu未来计划关注压缩库,包括bzip2-rs、zlib-rs和zstd-rs。此外,ntpd-rs和UPKI是接下来的重点,ntpd-rs计划在26.10归档,28.04默认切换;UPKI计划在26.10首次发布。

🏷️

标签

➡️

继续阅读