編集部からのお知らせ
「ZDNet Japan Summit」参加登録受付中! 
新着記事集:「負荷分散」

「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 記事を毎朝メールでまとめ読み(登録無料)

特集

CIO

モバイル

セキュリティ

スペシャル

ホワイトペーパー

新着

ランキング

  1. クラウドコンピューティング

    Google Cloudセキュリティ基盤ガイド、設計から運用までのポイントを網羅

  2. セキュリティ

    仮想化・自動化を活用して次世代データセンターを構築したJR東日本情報システム

  3. ビジネスアプリケーション

    スモールスタート思考で業務を改善! 「社内DX」推進のためのキホンを知る

  4. セキュリティ

    Emotetへの感染を導く攻撃メールが多数報告!侵入を前提に対応するEDRの導入が有力な解決策に

  5. セキュリティ

    偽装ウイルスを見抜けず水際対策の重要性を痛感!竹中工務店が実施した2万台のPCを守る方法とは

NEWSLETTERS

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

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

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