皆さま、あけましておめでとうございます。コダシマでございます。
1年の切り替わりの際には、いろいろな物事の切り替わりも気になるところでございますが、その一つが Debian の 32 ビットサポート終了のニュース。2023年12月16日、ついに Linux の老舗 Debian においても、i386 アーキテクチャのサポートを近い将来、完全に終了する予定であることを発表しました。
まぁ、2038年問題もあることですし、仕方ない気もいたします。って、皆さまは「2038年問題」をご存知ですよね?これは 32ビットシステムとは切っても切り離せない問題です。
今回は、この「2038年問題」について深掘りしていきましょう。
32ビットの終焉
「2038年問題(year 2038 problem)」とは、西暦2038年のある瞬間を境に一部のコンピュータシステムが誤作動する可能性がある問題のことを呼びます。これは古い設計のシステムが採用している日付と時刻の標準データ形式が、定義上の上限値を超えてしまう、つまり表現できる時間がオーバーしてしまうために、そのシステムに問題が起きるというものです。
コンピュータおよびプログラムにおける時刻の表現のひとつとして「UNIX 時間」というものがあります。それを採用しているシステムがこの問題に該当いたします。具体的にこの時間は、古い UNIX 系 OS や C 言語といったシステムにおいて、協定世界時(UTC)の 1970年1月1日午前0時からカウントした経過秒数で管理しています。この値(time_t型)は、もともと 32 ビットの符号付き整数を使って時間を追跡する方法を取っていたため、上限値である「21億4748万3647秒」までしか表現することができません。
この限界に達する瞬間が、2038年1月19日午前3時14分7秒(UTC)で、日本標準時では同日12時14分7秒になります。そのため「2038年問題」といわれます。上限まで達したカウントはオーバーフローし、符号付き整数では最小値である「-21億4748万3648秒」に戻ります。これにより、システムは1970年より前の日付を示すようになり、多くのコンピュータプログラムで問題が発生する可能性があるといわれています。
この問題を解決するためには、時間を追跡する方法を変更する必要があります。例えば、64ビット整数を使用することで、この問題を回避することができます。64ビット整数を使用すれば、西暦3000億年まで使用できるので、事実上問題が発生することはありません。現在では、システムの多くが既に 64 ビット時間を使用しているため、概ね問題は無いとされていますが、現存する古いシステムや一部の組込みシステムでは依然として 32 ビットが使われていることがあり、これらのシステムはアップデートが必要になります。
ただし、ハードウェアの制約などで 64 ビットの整数型が使えないシステムもあります。その場合、一時しのぎの対策として 32 ビット符号なし整数型で置き換える方法があります。この方法によって、2106年まで問題の顕在化を先送りすることができるようです。これらの対策が進めば、大きな問題にはなりそうにないと感じますね。
過去に似た問題として、年号を西暦の下二桁で記録しているシステムが 2000年元日以降に誤作動するとされた「西暦2000年問題 (Y2K)」がありましたが、事前の周知や対処が進んだこともあり、この時には社会的な混乱を引き起こすほどの大きな問題起きませんでした。ただしこの時に、別の問題として、古い仕様やサポートが切れたソフトウェアが、社会のいたるところで想定を超えて、長期間使われ続けているという実態が明らかとなりました。この問題については、比較的記憶に新しいのではないでしょうか?
話を戻します。
2038年問題は、当時「その時」まで長い時間があるため、「意外と大丈夫じゃない?」という楽観論が多くあり、そこまで問題視されていなかったように思われます。ただし「Y2K問題」と「2038年問題」には大きな違いがあります。「Y2K問題」は個々のアプリケーションの問題であるのに対して、「2038年問題」の対象は主に Unix や Unix ライクなオペレーティングシステム、およびプログラミング言語のメイン部分の仕様についての問題です。システムの深い部分に関わるため、古い設計のまま先送りされ続けていた問題です。それらが 2038年に顕在化するシステムも、相当数現れるのではないかとの見方もあります。
そう聞くと、たしかに気づかれず見過ごされるシステムもありそうにも思いますね。
32ビットハードウェアについて
2038年問題は、オペレーティングシステムやプログラミング言語の仕様に関わる問題ではありますが、その 32ビットシステムを必要とする、ハードウェアについても見てみましょう。32 ビットアーキテクチャである「i386」において代表的なプロセッサは、Intel 80386、Intel 486、Pentium シリーズ 及び MC68000 シリーズがあります。その中で、例えば Intel 80386 は、1985年10月に発表されたのを考えると、2024年時点で、実に 39 年の時間が経っています。
参考までに、国税庁の主な減価償却資産の耐用年数表によると、パーソナルコンピュータで4年、サーバー用を含めたその他のコンピュータは5年、それ以外の通信機器や様々な工場関連のシステムでは10年、長いもので15年の耐用年数としています。
耐用年数とは、あくまでも資産価値を示すもので、その定義は「通常の用途で使用した場合、通常予定される効果を上げることができると見込まれる年数のこと」です。つまりは「当たり前に使って、当たり前の効果が得られる年数」と言うことで、耐久性とは少し主旨が違う話であるため「耐用年数=ハードウェアの寿命」というわけではありませんが、国としては「この期間は正規の品と認める」という期間であり、例えばパソコンの各メーカーも耐久性の目処を 5 年程度を一区切りとしているところが多いようです。
とはいえ、今の家電を始めとした様々な製品の品質はとても高く、動作が重たく感じることがあったり、モバイルの場合はバッテリーの持ちが悪くなったりはありますが、5年位は製品として問題ないと感じます。使い方によるところもあるとは思いますが、10年くらいは余裕じゃぁないでしょうかね?
そんな感じで、世の中では、当たり前のように耐用年数以上の期間使い続けているところは少なくありません。当然、コダシマもその一人です。
ですが、例えば 32ビット初期のハードウェアだと 2024年で、すでに 39 年もの時間が経っています。なかなかの時間ですし、それが2038年ともなると53年。実に半世紀以上になります。個人的に、さすがにここまで使い続けるのは、物理的に厳しいんじゃないかなぁとは思います。
こうしてみると、ハードウェア的にも 32 ビットは、なかなかの御老体なので、そのハードウェアと一緒に使うシステムが切り替わっても無理もないところでございます。
1990 年代初頭では、まだ 64 ビットはスーパーコンピュータのものでしたが、Apple の Macintosh が 2002 年に 64 ビットである PowerPC 970 プロセッサを採用したのを皮切りに、2003 年には x86-64 プロセッサがハイエンドの PC に搭載されるようになりました。その後、64 ビットプロセッサは、数年をかけて徐々にローエンドの PC にまで広がっていきました。また、モバイルデバイスにおいても 2013 年に Apple A7 を搭載した iPhone 5s でスマートフォンにも 64 ビット環境がもたらされるようになり、現在にいたります。
すでに十分な時間を掛けて、大部分の代替わりが済んでいるといっても過言ではないでしょう。
現存する 32 ビット OS
そうは言うものの、まだ動く 32 ビットマシンもたくさん現存しており、それらをもうちょっと使うために…、というかもはや限界まで使い倒すために、現存する 32 ビット OS をチェックしてみました。
Name | Live | Version | Base on | Desktop | |
antiX | ○ | i368 | 23 | Debian | IceWM |
BunsenLabs Linux | ○ | i386 | Beryllium 1 | Debian | Openbox |
CrunchBang++ (#!++) | ○ | i686 | 12.0 | Debian | Openbox |
Debian | ○ | i386 | 12.4.0 | – | ※ |
Devuan GNU + Linux | ○ | i386 | Daedalus 5.0 | Debian | ※ |
Emabuntüs | ○ | i686 | DE5 | Debian | Xfce |
Kali Linux | ○ | i386 | 2023.4 | Debia n | E, Xfce |
Linux Mint | ○ | i686 | LMDE6 | Debian | Cinnamon |
Mageia | ○ | i586 | 9 | – | ※ |
MX Linux | ○ | i386 | 23.1 | Debian | Xfce |
openSUSE | × | i686 | Tumbleweed | – | ※ |
Peppermint OS | ○ | i386 | bookworm, daedalus | Debian, Devuan | Xfce |
Porteus | ○ | i586 | v5.0 | Slackware | ※ |
Q4OS | × | i386 | 5.4 | Debian | KDE, trinity |
Raspberry Pi Desktop | ○ | i386 | 11 (bullesye) | Debian | LXDE |
SparkyLinux | ○ | i686 | 7.2 | Debian | LXQt |
Voyager Live | ○ | i386 | 11 Debian | Debian | GNOME, Xfce |
ちなみに、この一覧は仮にダウンロードできるイメージデータがあったとしても、2 年以上情報の更新が行われていないプロジェクトのものは除外しております。
で、Debian では、32 ビットサポートの終了を発表しましたが、まだ具体的な日程が決まっていません。その間は、Debian を源流とする派生のオペレーティングシステムは、まだ開発が続けられると思われます。その時が来るまで、32ビットに寄り添うのも、ノスタルジーというべきか、ある種のロマンなのではないでしょうか?
といったところで、今回は 2038年問題に触れてみました。コダシマとしては、一時代を築いた 32 ビットシステムには強い思い入れがありますが、この問題を考えると時の流れを感じざるを得ません。