14104379 story
Linux

Linuxカーネル5.6、32ビット版で2038年問題への対応が行われる 9

ストーリー by hylom
ついに 部門より

headless曰く、

Linuxカーネル5.6(Linuxカーネル5.4/5.5にバックポートされる可能性も高い)の32ビット版で2038年問題(Y2038)への対応が初めて行われたという(Arnd Bergmann氏のメーリングリスト投稿PhoronixThe 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ビットシステムにも適用されるとのことだ。

関連リンク

  • by Anonymous Coward on 2020年02月05日 13時43分 (#3756646)

    unsignedにするなら2108年?くらいまでモンダイなくなるのに…。
    データのバイナリ互換性も保たれる。

    time_tがエラーに-1を使ってる?そんなの
    if (t==(time_t)-1)
    のようにキャストすれば無問題。C言語規格上もこれが正しかったはず。time_tが符号付きとは規定されていなかった。(最新規格は確認してないが当初の規格では)

    ここに返信
    • by Anonymous Coward

      「年号処理めんどくさいからハードコーディングしたけど、次に年号変わるまでは問題ないからいいよね?」みたいでいやだなぁ

  • by Anonymous Coward on 2020年02月05日 13時51分 (#3756656)

    >32ビットの埋め込みシステム

    "埋め込みシステム"って何だろうと思ってググったら、「もしかして: "組込みシステム"」って教えて貰った。
    google先生有能!

    ここに返信
    • by Anonymous Coward

      そのくらい普通の人間は普通に連想して推定すると思うが
      そうでない人もいるんだなぁ

    • by Anonymous Coward

      「Embedded」を直訳したんだろうなあ…

    • by Anonymous Coward

      >"埋め込みシステム"って何だろう

      マスクROM(消去不可)とか、UV-EPROM(全消去のみ)とか
      実質更新できないプログラムで動いてるシステムの事じゃないかな?

      #書き換えできないから、カーネル変わっても更新する手段がないが
      #必殺!現地で筐体開けてROM差し替え!!(ソケット代ケチって基板にはんだ付けしてあったり)

typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...