【絶対】PC の時計を 2099 年 12 月 31 日にしてはいけない【ダメ】

下手すると PC が起動しなくなります。

コンピュータには 2036 年問題というのがあって、簡単に言うと、2036 年のある時刻以降、内部時計が 1900 年に戻ってしまうというもの。まあこれぐらいならかわいらしい現象です。

僕は実際に 2099 年 12 月 31 日 23 時 59 分ちょうどに設定してみました。そこからの 1 分はまさにカタストロフィでした。

まず、常駐しているアプリが不正終了したりエラーダイアログを出したりして、1 分後の大惨事を知らない僕はこの状況を少し楽しんでいました。エラーダイアログのキャプチャなんかを撮ったりして。

Cygwin で date コマンドを打つと、196x 年ぐらいだったので、まさに 2036 年問題が発生していました。

出てきたエラーダイアログのひとつは .NET Framework のスタックトレースが出ていたので、なんだろうな、と眺めていた時に、年が明けて 2100 年になってしまったようです。

その瞬間、Windows は画面を表示したままフリーズしてしまいました。

復旧の手段がないので、電源を落として再起動。

なんと、PC が起動せず、ビープ音を発し続けます。BIOS すら出ない。

職場で PC がビープ音を鳴らし続け、周りの人が振り返るのは、結構こたえます。

とりあえずその日は定時を過ぎていたので、電源を落とし、何食わぬ顔で帰宅。

帰宅途中、いろいろ考察。

まず、PC がビープ音を出して起動しないということは、BIOS が正常ではないということ。ビープ音が出たことでいたたまれぬ思いをしたけど、逆に異常時にちゃんとビープ音が出るというのはよくできた BIOS で助かった。

Windows が 2100 年の時刻を BIOS に書き込んだのが原因なのか?でも OS から定期的に BIOS の時計をいじったりするかね?BIOS が勝手に時刻をインクリメントして、勝手に死んだというのが正しいような気がする。これを証明するには BIOS で時刻を 2099/12/31 23:50:00 にセットして、電源を切って 10 分放置すればよいが、そんなことはしたくない。

BIOS の時刻だけの問題なら、CMOS の初期化をすればいいはず。CMOS の初期化はバックアップ用のボタン電池を外せばいいだけだ。ということで、その日はそれ以上は考えないことにした。

翌日早めに出社してマザーボードを確認。幸いデスクトップだったので、マザーボードへのアクセスは比較的簡単に行えた。それでも、どでかいグラフィックカードが干渉するので、取り外さなければならなかったが。

ボタン電池を外し、放電 1 分。電池を装着し、仮組みをして電源 ON。

BIOS が出た!!

時刻は 2005 年になっていた。適当に直して OS を起動。事なきを得た。


これを読んで、「やってみたい」と思う人はいないとは思うけど、やるなら自己責任でお願いします。