RPi会遭受Y2K38错误吗?


12

出于好奇,RPis Model A和B在2038年1月19日格林尼治标准时间上午3:14:07会发生什么?他们受Y2K38错误影响吗?


您预计还有多少运转?
托尔比约恩Ravn的安徒生

1
@ThorbjørnRavnAndersen说实话,我相信RPi的前途很大,并且仍然会有很多人在运行(最终型号为C或更高,但是..)
DaGhostman Dimitrov 2013年

5
在这种情况下,请设置时钟并查看。
托尔比约恩Ravn的安徒生

1
没强硬..:D
DaGhostman Dimitrov

1
不管pi的未来是什么,在25年之内都不会再使用32位处理器。根据维基百科,64位系统使用64位time_t,这将导致Y292G问题,我们和太阳都不会看到。
goldilocks

Answers:


10

是。

这是到运行OpenELEC的Pi的SSH会话的输出。

到达Y2K38后挂起。不仅SSH会话本身停止响应,而且OpenELEC也冻结。

我期望(并希望!)到2038年将发布一个修复程序。

那样的话,否则您的问题将在24年内获得很多好评。

在此处输入图片说明


令您惊讶的是,您能够与一台机器打开SSH会话,这使我感到惊讶。+1实际尝试过。
einnocent 2013年

@einnocent为什么我不能呢?在SSH握手规范上是否有任何时间比较可以防止这种情况?此外,我更改了建立连接的时间。此外,Pi时钟无论如何都已经出错了(可能要几个月,几年才能记起):P
巴西Guy

更改时间预连接后,我了解到时钟时间的巨大差异可能会导致一些安全握手问题,尽管我并不特别了解SSH。通过进行连接后更改,我可以想象到SSH在发现已打开34年的连接后突然崩溃了。我认为SSH只是在那个神奇的时间终止连接的可能性很小(但不为零)。但实际上我对您的回答深信不疑:)
einnocent 2013年

@einnocent我没想到SSH可以认为它“已开放24年”并挂起。我会再尝试22年。但是我认为这不是问题的原因,因为它刚好悬挂在Y2K38上
巴西的Guy

4

实际上,Raspberry Pi(硬件)会很好。它不包含RTC,因此它将取决于您使用的操作系统。

但是IIRC所有32位版本的Linux确实存在此问题。前一段时间(大约10年),Linus表示他对在32位平台上进行修复并不感兴趣,当时所有的64位Linux平台都具有64位time_t。从那以后,他当然可能改变了主意。我能找到的最好的链接是 http://permalink.gmane.org/gmane.linux.kernel/1184914-这不是相同的,但表达了相似的意图。

更改并不是一件特别困难的事情,但是它将迫使更改内核ABI。本身就是问题。

但是,RiscO使用40位时间(厘秒),但是具有不同的纪元。(https://www.riscosopen.org/wiki/documentation/show/OS_Word%2014_3)-我在2318年的某个时候做出失败-[计算结果为:1970 +((2 ^ 40)/ 100)/(60 * 60 * 24 * 365.25)]

Android当然使用Linux内核。而且我敢肯定我错过了其他选择。


1

按照目前的实施方式,如果不进行软件更改,Raspberry Pi将遭受列出的bug的命运。

大多数现代机器都在向64位处理器过渡,但是到那时仍然看到32位主流处理器我一点也不感到惊讶。有一些软件解决方案可能会而且必须解决该问题。

在我看来,最可能的修复方法是将Epoch时间更新为从2000年1月1日开始的时间。尽管这不会延迟该错误,但肯定会在可预见的将来将其重置

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.