テクノロジーと科学の最新の話題を毎日配信中!!

Linuxカーネル、i486と初期Pentiumについに「お別れ」– 30年の歴史に幕、コード1.5万行削減の背景

Y Kobayashi

2025年5月9日

Linuxカーネル開発の歴史に、また一つ大きな節目が刻まれようとしている。1990年代を象徴するIntelのi486プロセッサや、それに続く初期のPentiumクラスのCPUに対するサポートが、間もなく終了する見込みだ。この動きは、Linuxの生みの親であるLinus Torvalds氏の「もう、この種の古いCPUのために開発者の貴重な時間を1秒たりとも無駄にすべきではない」という強いメッセージがきっかけとなり、長年くすぶっていた課題に終止符を打つものだ。これは単に古いCPUを切り捨てるという話に留まらず、Linuxカーネルの未来の姿、そしてその開発思想にも関わる重要な決断と言えるのではないだろうか。

スポンサーリンク

「もう無駄な努力はできない」 – Torvalds氏が下した決断と開発者の迅速な対応

「i486サポートを打ち切る時だと強く感じる。誰もこの種の問題に開発努力を1秒たりとも無駄にする現実的な理由はない」
この言葉は、Linus Torvalds氏がカーネル開発者のメーリングリストで発したもので、今回のサポート終了の大きな推進力となった。 この発言から日を待たずして、長年のカーネル開発者であるIngo Molnar氏は、32ビットx86システムのハードウェア要件を引き上げるための15のパッチから成るRFC(Request for Comments)を投稿した。

モルナー氏が指摘するように、今日ではほとんど誰も起動することのないような古いチップのための「互換性維持の接着剤のようなコード」が、時として問題を引き起こし、開発者がその解決に時間を費やすという本末転倒な事態を招いていた。 開発リソースは有限であり、それをより現代的で広く使われている技術の改善や、将来に向けた新しい機能開発に振り向けるべきだ、という考え方が根底にあるのは明らかだ。

消えるのは「歴史の遺物」だけではない – 1.5万行のコード削減がもたらす真の価値

具体的にサポート終了の対象となるのは、Intelのi486ファミリー全般(M486、M486SXなど)、そしてCMPXCHG8B(CX8)命令やTime-Stamp Counter(TSC)といった現代的なCPUでは標準的な機能を欠く、ごく初期のPentiumクラスのプロセッサ(初期M586)だ。 これには、IDT WinChipやAMDの486時代のElanといった互換チップも含まれる。

この変更により、Linuxカーネルからは約14,000行から15,000行という膨大な量のコードが削除される見込みだ。 特に大きいのは、ハードウェア浮動小数点演算ユニット(FPU)を持たないCPU(例えばi486SX)のために存在したソフトウェアによるFPUエミュレーション機能(math-emu/ライブラリやno387ブートフラグ)の削除だ。 FPUエミュレーション関連を除いても、なお1,000行以上のコードが削減されるというから、その規模の大きさがうかがえる。

これにより、カーネルのコードベースはよりシンプルになり、メンテナンスの負担が軽減される。 また、古いハードウェアへの配慮が不要になることで、サポートされるシステム上でのパフォーマンス向上や、潜在的なバグの減少も期待できるだろう。 これは、Linuxカーネルがより堅牢で効率的なOSへと進化していく上で、避けては通れない道程だったのかもしれない。

スポンサーリンク

i386サポート終了から12年 – LinuxにおけるCPUサポートの歴史的転換点

Linuxカーネルが大規模なCPUファミリーのサポートを打ち切るのは、2012年にLinux 3.8でi386(80386)ファミリーのサポートが終了して以来のこととなる。 実に12年ぶりの大きな方針転換だ。i486サポート終了の議論自体は、少なくとも2022年からLinus Torvalds 氏によって提起されていたが、当時は他の開発者からの合意が得られず見送られていた経緯がある。

興味深いのは、MicrosoftがWindows XP(2001年リリース)の時点で既にi486プロセッサのサポートを打ち切っていたという事実だ。 Linuxは、それから実に20年以上もの長きにわたり、これらの古いCPUをサポートし続けてきたことになる。これはLinuxの幅広いハードウェアサポートという美点を示す一方で、ある種の「技術的負債」を抱え込んできたとも言えるだろう。

「実質、困る人はいない」のか? – サポート終了の影響範囲と代替策

では、このサポート終了によって、実際に困るユーザーはどれほどいるのだろうか? 結論から言えば、ほとんどいない、あるいは皆無と言っても過言ではないだろう。 最後の商用i486チップが出荷されたのは2007年であり、現在、これらのヴィンテージなCPUで最新のLinuxカーネルを動かしているのは、ごく一部のホビイストやレトロコンピューティングの愛好家くらいのものだ。

もちろん、そうした限られたユーザーにとっては残念なニュースかもしれないが、彼らには古い長期サポート(LTS)カーネルを引き続き使用したり、QEMUのようなフルシステムエミュレータを利用したりする道が残されている。 また、Debian 3.0やUbuntu 10.04といった古いLinuxディストリビューションや、MuLinuxのような超軽量ディストリビューションは、引き続きこれらの古いCPUでも動作する可能性がある。 ただし、これらの古いシステムを利用する際には、最新のセキュリティパッチが適用されないリスクが伴うことを十分に認識しておく必要があるだろう。

CMPXCHG8B命令と伝説の「F00Fバグ」– そしてNetBSDの意外な動き

今回のサポートポリシー変更で必須となるCPU機能の一つに「CMPXCHG8B(Compare and Exchange 8 Bytes、略してCX8)」命令がある。これはアトミックな8バイト比較交換を実現する命令で、マルチプロセッサ環境での同期処理などに重要な役割を果たす。

このCMPXCHG8B命令には、初期のIntel P5マイクロアーキテクチャを採用したPentiumプロセッサにおいて、特定の条件下でCPUが完全にハングアップしてしまう「F00Fバグ」(命令のバイトシーケンス0xF00FC7C8に由来)が存在したことが知られている。 このバグは後にシリコンレベルで修正され、OSレベルでの回避策も講じられたため、現代においては過去の逸話となっているが、CPUの歴史を語る上では興味深いエピソードだ。 今回のサポート終了は、このF00Fバグとは直接関係ないものの、CX8命令が議論の中心にあることで、こうした技術史の一コマが思い出される。

一方で、Linuxが古いCPUのFPUエミュレーションを削除する流れとは対照的に、NetBSDプロジェクトでは最近、Mikhail Zakharov 氏によってNetBSD 10のコードベースにx86風のFPUエミュレーションが再実装されたという動きも報じられている。 これは、異なるOSプロジェクトが、それぞれの哲学やターゲットユーザーに応じて、異なる技術的判断を下していることを示す好例と言えるだろう。

「レガシー切り捨て」の先にあるLinuxの未来

今回のLinuxカーネルによるi486および初期Pentiumプロセッサのサポート終了は、単に古いハードウェアとの決別を意味するだけではない。これは、Linuxコミュニティが、過去の互換性という「重荷」を降ろし、より身軽になって未来へ進むための、意識的かつ合理的な選択と言えるだろう。

コードベースの簡素化は、バグの温床を減らし、セキュリティを向上させる。開発者がレガシーコードの保守に費やしていた時間は、新しい技術への対応や、カーネル全体のパフォーマンス最適化といった、より生産的な活動へと振り向けられるだろう。これは、変化の激しいテクノロジー業界において、Linuxがその競争力と革新性を維持し続けるために不可欠なプロセスだ。

もちろん、長年親しんだ技術が過去のものとなることに一抹の寂しさを感じる向きもあるかもしれない。かつて最先端だったi486DX 33MHzマシンが、今や博物館の展示品のような存在になっているという事実に、時代の流れの速さを改めて感じさせられる。 しかし、技術は常に進化し、その過程で古いものは新しいものへと置き換えられていく。今回の決定は、Linuxがその進化の歩みを止めないという、力強い意思表示の表れと言えるのではないだろうか。


Sources

Follow Me !

\ この記事が気に入ったら是非フォローを! /

フォローする
スポンサーリンク

「Linuxカーネル、i486と初期Pentiumについに「お別れ」– 30年の歴史に幕、コード1.5万行削減の背景」への2件のフィードバック

  1. > 「実質、困る人はいない」のか?

    今から486に対応するアプリを開発する事は考えにくく、組み込み用であれば既存のOSのまま使い続ければ良いので、困るのは「新しいバグが見つかった」時ぐらいであろう。

    返信
  2. > 「実質、困る人はいない」のか?

    今から486に対応するアプリを開発する事は考えにくく、組み込み用であれば既存のOSのまま使い続ければ良いので、困るのは「新しいバグが見つかった」時ぐらいであろう。

    返信

コメントする