玩式草子─ソフトウェアとたわむれる日々

第85回 Linuxの成長過程をふりかえる[その4]

この記事を読むのに必要な時間:およそ 6 分

前回に引き続き,今回はlinux-2.1シリーズの成長過程を検討します。

linux-2.1のシリーズは1996年9月30日に公開されたlinux-2.1.0から開発が始まり,約2年3ヵ月の開発期間を経て1998年12月22日に公開されたlinux-2.1.132で開発終了,その後,翌年の1月中旬ぐらいまでデバッグや安定化のためにlinux-2.2.0-preXが公開され,次の安定版であるlinux-2.2.01999年1月26日に公開されました。

カーネルサイズの変遷グラフからlinux-2.0と2.1の2つのシリーズを取り出して描くと,図1のようになります。

図1 linux-2.0.xとlinux-2.1.xのサイズの変遷

図1 linux-2.0.xとlinux-2.1.xのサイズの変遷

図1を見ると,linux-2.0のシリーズは2.1の開発が終った後,すなわち次の安定版であるlinux-2.2が公開された後も,ずいぶん長くメンテナンスされていることに気づきます。

第82回で紹介したカーネルサイズの変遷グラフを見ると,2.0系の最終バージョンである2.0.40は2.2系の最終バージョンである2.2.26とほぼ同時期にリリースされています。

このころのLinuxは,同じ「安定版」とは言っても,2.0と2.2のように世代が異なるとカーネルの内部構造が大きく変更されていて,必須のツール類も多数更新する必要があると共に,カーネルの内部構造を利用していたソフトウェアが動かなくなったりしました。そのような事情から新しい安定版へ更新できない環境もあちこちにあり,そのためにメンテナンス期間を長く取っていたようです。

それではlinux-2.0と2.2の間でどのような変更が行なわれたかを,開発版であるlinux-2.1シリーズを元に検討してみましょう。

linux-2.1シリーズの概要

linux-2.1では130を越えるバージョンが公開されているので,前回よりもチェックポイントを1つ増やし,2.1.02.1.452.1.902.1.132の4つのバージョンについてソースコードをチェックしてみることにします。

前回同様,それぞれのバージョンごとに,ソースコードのトップディレクトリのサイズを調べると以下のような結果になりました。表中の各数字はKB単位で,1100は1100KB(1.1MB)⁠130000は130000KB(13MB)を意味します。

2.1.02.1.452.1.902.1.132
Documentation1100150020002500
arch5000720086009800
drivers13000180002300029000
fs2100230040004300
include3800590074008700
init28323640
ipc72766464
kernel200224260264
lib64646464
mm196248260260
net1500280032004200
scripts284288292296
modules0---
Total27000380004900059000

この表を見ると,linux-2.1シリーズの開発過程でソースコード全体は2倍強に増加しています。一方,それぞれのディレクトリを見るとarchやdirvers,fs,includeのように2倍強に増加したディレクトリとinitやipc,kernelのように2~3割の増加に留まっているディレクトリが見られます。

linux-2.1シリーズでは,driversのような大きなディレクトリとinitのような小さなディレクトリの差が700倍近くあり,前回までのような全体に占める割合を示す扇形グラフでは各ディレクトリの変化パターンが見えにくいので,今回は容量の大きいディレクトリとそれほどではないディレクトリをそれぞれ別のグラフに仕立ててみました。

図2は容量の大きいディレクトリのサイズがバージョンごとにどのように変化したかを示しました。このグループにはDocumentation,arch,drivers,fs,include,netの各ディレクトリが含まれます。図3は容量がそれほど大きくないディレクトリの変化で,init,ipc,kernel,lib,mm,scriptsの各ディレクトリが含まれます。

図2 容量が大きいディレクトリのサイズ変遷

図2 容量が大きいディレクトリのサイズ変遷

図3 容量が小さいディレクトリのサイズ変遷

図3 容量が小さいディレクトリのサイズ変遷

2つの図を比べると,容量の大きいディレクトリは2.1シリーズ全体を通してコンスタントに増加し続けているのに対し,容量の小さいディレクトリは横這いだったり,増加のペースにむらがあったりするようです。

ある意味これは当然の結果で,容量の大きいディレクトリ群に含まれているarchやdrivers,includeは,それぞれのハードウェアに依存するコードを集めた部分で,Linuxが新たなコンピュータ(CPU)に対応すると,そのためのコードがarchディレクトリに追加されると共に,そのコードを利用するためのヘッダファイルがincludeディレクトリに追加され,そのコンピュータ用の周辺機器用のドライバがdriversディレクトリに追加されます。すなわち,これらのディレクトリはLinuxが対応するハードウェアの増加に伴なって増えていくわけです。

事実,linux-2.1シリーズでは,1.xシリーズ同様,新しいコンピュータ(CPU)への対応が続いています。2.1.0,2.1.45,2.1.90,2.1.132のそれぞれでarchディレクトリは以下のように増加しています。

2.1.02.1.452.1.902.1.132
alpha396516684948
arm--492 576
i3868088929961100
m68k2400250019002100
mips28011001200948
ppc4123769121300
sparc780130013001500
sparc64-75613001500
total5000720086009800

表に見るように,linux-2.1シリーズでは前期にSPARC64用のコードが,中期にARM用のコードがソースツリーにマージされ,Linuxの特徴のひとつとしてよくあげられる「上はスパコンから下は組み込みまで」の対応は,この時期に実現したと言えそうです。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入