Linuxカーネル、削っても膨らむ4000万行の壁
13万行を切り捨てたはずのLinuxカーネルが、それでも4000万行に迫っている。AMDのGPUドライバだけで600万行を超え、コード本体は初めて3000万行の大台に乗った。削除しても止まらない肥大化の正体は何か。
削減してもなお、史上最大規模に到達
リーナス・トーバルズ(Linus Torvalds)は今週、Linux 7.1のマージウィンドウで大胆な削減に踏み切った。古いISDN(Integrated Services Digital Network)サブシステムやアマチュア無線(ham radio)関連のコード、PCMCIA時代のネットワークドライバ群など、合計で約13万8000行を一気に削ぎ落とした。
ところが、Linux 7.1-rc1のリリースを目前に控えた4月26日時点で、カーネル全体の行数はむしろ増えている。Phoronix創設者のMichael Larabel氏がclocで計測した結果、Linux 7.1のGitリポジトリは 3988万636行 に達した。前バージョンのLinux 7.0は3962万1378行だったから、削除を経てもなお25万9000行が積み増された計算になる。
リリース直後のLinux 7.0が4月12日に世に出たばかりで、次の7.1は2026年6月中旬の正式リリースが見込まれる。そのわずか数週間のマージウィンドウで、これだけ大きな出入りが起きている。
コード本体は3000万行を初めて突破した
ここで注目すべきは、空白行とコメント行を除いた純粋なコード行数だ。Linux 7.0時点で2989万1675行だったものが、7.1のGit状態では3008万8957行に増えた。
カーネルが「3000万行のコード」を抱えるのは、トーバルズが1991年にLinuxを公開してから初めてのことになる。
空白行とコメント行を含めた総行数で見れば、3988万行はあと12万行ほどで 4000万行の大台 に届く。Linux 7.2のサイクルでこの線を踏み越えることが、ほぼ確定的だ。
| 区分 | Linux 7.0 | Linux 7.1 | 増減 |
|---|---|---|---|
| 空白行 | 499万1874 | 501万5790 | +2万3916 |
| コメント行 | 473万7829 | 477万5889 | +3万8060 |
| コード本体 | 2989万1675 | 3008万8957 | +19万7282 |
| 総行数 | 3962万1378 | 3988万636 | +25万9258 |
削られたのは「使われなくなったハードウェア」
今回の13万行強の削除は、単なる断捨離ではない。背景には、AIや大規模言語モデル(LLM)を使った自動バグ検出の急増がある。
ファジングやLLMが古いドライバの脆弱性を次々と報告し始めた結果、もはや実機ユーザーがほぼ存在しない領域のコードが、開発者にとって 対応コストだけが残る重荷 になった。プルリクエストには「アマチュア無線やNFCのような古いコードは、ネットワーク開発者にとって長らく重荷だった」との指摘がある。
削除対象の主なネットワークドライバはこうだ。
- 3Comの3c509、3c515、3c574、3c589
- AMD LanceとAMD NMCLAN
- SMSCのSMC9194とSMC91C92
- 富士通のFMVJ18X
- 8390系のAX88190、Ultra、WD80X3
それに加えて、長らくレガシー扱いだったバスマウス対応、Intel 486 CPUのサポート、そしてロシアのバイカル(Baikal)CPU向けコードの撤去も7.1で動き始めた。バイカルCPUはロシアが国産プロセッサ計画として推し進めたシリーズだが、ウクライナ侵攻後の制裁でTSMCでの製造ラインを失い、開発元のBaikal Electronicsは2023年に経営破綻している。 メンテナ不在のコードに居場所はない という判断が、ここでも貫かれた格好だ。
増えているのはAMDのGPU、それも桁違いに
Larabel氏は今回、drivers/gpu/drm/amd ディレクトリのサイズも測っている。AMDGPUとAMDKFD、表示コア(DC)、各GPU向けの自動生成ヘッダーファイルを含むこの領域は、Linux 7.0時点で604万9235行だった。Linux 7.1のGit状態では616万2946行に増えている。
GPU1社分のドライバ群だけで、カーネル全体の15%超を占める計算になる。これはLinuxカーネル史を貫く一つの構造的事実を示している。古いハードウェアを削っても、新しいハードウェア、特にGPUとAIアクセラレータが、削った分の何倍ものコードを持ち込んでくる。
デバイスドライバはカーネル全体の約60%を占め、その中でもネットワーク、GPU、マルチメディアの3カテゴリが最大級だ。新世代GPU、RISC-V、PCIeやメモリ分離機能の追加によって、カーネルは2カ月ごとに約40万行のペースで増えていく。
それでも「太りすぎ」とは呼びにくい
肥大化と聞くと、すぐにソフトウェアの劣化を連想する人もいるだろう。だが、Linuxカーネルの場合、4000万行のうちユーザーが実際に動かすのはごく一部だ。
x86の一般PCで動かしている読者なら、ARMやRISC-V、PowerPC、SPARC向けのアーキテクチャ依存コードはコンパイル時に切り捨てられる。ファイルシステム、ネットワークプロトコル、GPUドライバも同じで、ビルド時に必要なものだけが選ばれていく。4000万行という総量は、Linuxがサポートする 世界そのものの広さ を表している。
それでも、メンテナ不在のコードを抱え続けることが現実的な負担になってきているのは、今回のISDN削除が物語っている。AIが古いコードの粗を見つけてくる時代に、人間のメンテナが追いつけない領域は、撤退戦を選ばざるを得ない。
物理的な「忘却」は、ソフトウェアにも訪れる
Linuxカーネルの歴史は、追加と削除の歴史でもある。1991年に1万行で始まったカーネルが、170万行のLinux 1.0を経て、2025年初頭に総行数で4000万行を初めて突破し、その後の整理で一旦減少しながら、再び大台に迫りつつある。
倍々で増えるコードベースを抱えながら、トーバルズが30年以上にわたって最終マージの権限を握り続けていることのほうが、行数そのものよりよほど驚異的だ。
ISDNが消え、486が消え、バイカルが消える。そのどれもが、かつてはLinuxの守備範囲だった世界の一部だ。ハードウェアが姿を消し、ユーザーが移り、メンテナが手を引く。ソフトウェアが過去を手放す瞬間は、思った以上に淡々としている。
そして、その隙間を埋めるように、AMDのGPUドライバが100万行単位で膨らんでいく。 削っても膨らむ カーネルは、サポートする世界の広さに対して律儀すぎるのかもしれない。
参照元
他参照
関連記事
- Radeon HD 7870 XT、14年目のLinux対応
- Valve開発者、LinuxのVRAM管理を根本から修正
- Linux 7.1で「蘇生」したNTFS、リーナスが刻む皮肉
- gkh_clanker_t1000の正体、Framework Desktopが浮上
- Valve製VRAMパッチ、4GB GPUで3倍弱の蘇生劇
- Linux 7.1に新NTFSドライバ、NTFS3と併存へ
- Linux 7.1、i486削除コードが正式マージ──反対ゼロ
- Mesa 26.1 RADV、VK_EXT_descriptor_heapでSteam Play加速
- トーバルズ、Linux 7.0来週リリースへ rc7で最終確認
- CachyOS 4月版、Shelly導入とVRAM管理改善で使い勝手が変わる