Debian开始全面切换到64位架构 以避免Y2K38灾难

cnBeta全文版

  ·  

2025-07-26 00:05:26

  ·  

0次阅读

上了岁数的人可能还记得千年虫问题 (Y2K)。当时,人们普遍认为,一旦进入2000年,飞机就会从天上掉下来。这主要是因为当时许多软件应用程序通常只使用年份的最后两位数字来存储年份数据,这意味着2000年与1900年难以区分。幸运的是,由于众多软件供应商和工程师的不懈努力,我们得以避免2000年问题。现在,距离类似的问题还有几年的时间,Linux发行版Debian似乎正试图在其自己的操作系统中解决这个问题。

而较旧的 32 位架构将在 2038 年面临 Y2K38 问题。这是因为 Unix 日期时间值的带符号表示将溢出 32 位空间,从而导致相关软件出现错误。Debian 是一个相当古老的发行版,其第一个版本可以追溯到 1993 年,因此维护人员表示,许多敏感计算仍在 32 位架构上进行。尽管距离 2038 年还有大约 13 年的时间,但据The Register报道,开发人员希望主动解决这个问题,而不是像 Y2K 问题那样在最后一刻仓促解决。

Y2K38 的另一个名称是Unix 末日 (Unix Epochalypse),因为它会影响在有符号 32 位空间中以 Unix 格式存储日期时间值的系统。2038 年 1 月 19 日 03:14:07 (UTC),该空间将溢出。

因此,从Debian 13 “Trixie”版本开始,Debian 维护人员即使在 32 位架构上也将使用64 位 time_t格式。这可不是个小改动,因为维护人员在 6,429 个软件包中随机发现了time_t变量的使用。维护人员继续说道

i386 移植将保留现有的 32 位 time_t,作为现有 x86 二进制文件的兼容架构。如果大家对将 32 位 x86 引入其目前非常有限的发展空间充满热情,那么可以创建一个新的“i686”x86 ABI/架构,该架构使用 64 位时间以及可能更新的 ISA 特性。hurd-i386 移植将不会进行切换,因为其内核缺乏支持,目前正在努力切换到 hurd-amd64。

对于某些应用程序来说,这可能是一个重大更改,因此,利用 Debian wiki测试程序对 time_t 变量开关的响应非常重要。有趣的是,Y2K38 也可能影响某些较旧的 Windows 程序和不再受支持的 Windows 操作系统。

查看评论