Linuxカーネル5.6、32ビット版で2038年問題への対応が行われる 9
ストーリー by hylom
ついに 部門より
ついに 部門より
headless曰く、
Linuxカーネル5.6(Linuxカーネル5.4/5.5にバックポートされる可能性も高い)の32ビット版で2038年問題(Y2038)への対応が初めて行われたという(Arnd Bergmann氏のメーリングリスト投稿、Phoronix、The Register)。
Y2038はUNIX時間が2038年1月19日3時14分7秒(UTC)以降、符号付き32ビット整数で表現できる範囲を超えてしまうという問題だ。OpenBSDは2014年にY2038対応しているが、Linuxの場合64ビットシステムでは64ビット整数が標準のため影響は少ないものの、カーネルとユーザー空間が分かれていることから32ビットシステムでの対応は簡単に進められる問題ではなかったという。なお、2038年に32ビットPCが使われていない可能性は高いが、32ビットの埋め込みシステムが多数残っている可能性もある。
Arnd Bergmann氏らは何年にもわたってY2038対応に取り組んでおり、32ビットシステムでも64ビットのtime_tが使われるようにするなどの修正を進めていた。Bergmann氏によればLinuxカーネル5.6が2038年以降も32ビットシステムで実行可能な初のリリースとなるが、いくつか注意すべき点が残されているという。たとえば、ユーザー空間は64ビットtime_tを使用するようコンパイルする必要がある。また、タイムスタンプに符号付き32ビット整数を使用するファイルシステムの問題など、64ビットシステムに影響する問題は32ビットシステムにも適用されるとのことだ。
なぜ無理やり64ビットにしようとする? (スコア:0)
unsignedにするなら2108年?くらいまでモンダイなくなるのに…。
データのバイナリ互換性も保たれる。
time_tがエラーに-1を使ってる?そんなの
if (t==(time_t)-1)
のようにキャストすれば無問題。C言語規格上もこれが正しかったはず。time_tが符号付きとは規定されていなかった。(最新規格は確認してないが当初の規格では)
Re: (スコア:0)
「年号処理めんどくさいからハードコーディングしたけど、次に年号変わるまでは問題ないからいいよね?」みたいでいやだなぁ
もしかして: "組込みシステム" (スコア:0)
>32ビットの埋め込みシステム
"埋め込みシステム"って何だろうと思ってググったら、「もしかして: "組込みシステム"」って教えて貰った。
google先生有能!
Re: (スコア:0)
そのくらい普通の人間は普通に連想して推定すると思うが
そうでない人もいるんだなぁ
Re: (スコア:0)
「〇〇の言い間違いor書き間違いかな?」と思ってたら実は自分が知らなかっただけでそういう言葉も存在したという経験が何度もあるので「普通の人間は普通に推定」ってけっこう危険です。
ぐぐるは一時の恥、ぐぐらぬは一生の恥
Re:もしかして: "組込みシステム" (スコア:1)
Re: (スコア:0)
くぐるなあぶない(踏切)
Re: (スコア:0)
「Embedded」を直訳したんだろうなあ…
Re: (スコア:0)
>"埋め込みシステム"って何だろう
マスクROM(消去不可)とか、UV-EPROM(全消去のみ)とか
実質更新できないプログラムで動いてるシステムの事じゃないかな?
#書き換えできないから、カーネル変わっても更新する手段がないが
#必殺!現地で筐体開けてROM差し替え!!(ソケット代ケチって基板にはんだ付けしてあったり)