「2038年問題」への対応進むLinux

Steven J. Vaughan-Nichols (Special to ZDNET.com) 翻訳校正: 村上雅章 野崎裕子

2020-02-21 06:30

 2038年1月19日(火)の協定世界時(UTC)午前3時14分8秒に世界は終焉(しゅうえん)を迎える。と言ってもこれは「ヨハネの黙示録」に記されているような意味合いのものではない。この時点から、Linuxや旧版の「macOS」といった、32ビット版のUNIXベースのOSが使用している時刻の保存領域が桁あふれを起こす結果、負の数値を刻み始めるのだ。これは良いことではない。こういったOSが稼働している32ビットコンピューターは誤動作するだろう。だが幸いなことに、Linuxの開発者らは既に準備を整えている。

 この問題は、UNIXにおける時刻の計数方法に端を発している。UNIXとその親戚筋にあたるOS、つまりLinuxやmacOS、その他のPOSIX互換OSの日付は、エポックと呼ばれる1970年1月1日00時00分00秒UTCから開始されている。UNIXファミリーはそのエポックからの経過秒数を測定している。

 ここまでは何の問題もない。しかしUNIXファミリーは、32ビットのOSから始まったという歴史があり、その関係からか時刻を単精度符号付き32ビット整数として保存するようになっていた。これでも非常に大きな秒数まで保存できるのだが、2000年におけるY2K問題と同様、十分ではなかった。

 Linuxの開発者らは、この問題の到来を数十年前から予見していた。このため、Linuxのカーネル開発者Arnd Bergmann氏をはじめとする人々が対処に取り組んできている。そして、間もなく登場するLinuxカーネル「Linux 5.6」で、その修正が利用可能になる。Bergmann氏は、「Linux 5.6、あるいは5.4向けのバックポートパッチは、2038年以降での稼働を想定した32ビットシステムのベースとして機能する初めてのリリースだ」と説明している。

 ただし、注意点がいくつかある。

  • あらゆるユーザー空間は、間もなくリリースされるmusl-1.2およびglibc-2.32でサポートされる、64ビットのtime_t型とともに、Linux 5.6以降でインストールされるカーネルヘッダーを用いてコンパイルされていなければならない。
  • システムコールインターフェースを直接用いているアプリケーションは、既存のシステムコールの代わりに、「Linux 5.1」で追加されたtime64システムコールを呼び出すようにする必要がある。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

自社にとって最大のセキュリティ脅威は何ですか

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]