ハッカーの系譜⑨オープンソースの巨人たち (5) フィンランドでひっそりと誕生したLinux

牧野武文

December 15, 2016 09:30
by 牧野武文

フィンランドのヘルシンキの大学生、リーナス・トーバルズは、IBM PC上で動くMinixという学習用OSで、OS理論の勉強をしていた。Minixは、アムステル大学で開発されたもので、OS理論の学習をするための教材だった。コマンドなどはUNIX風だったが、個人でも買えるIBM PC上で動くのが魅力だった。

自分のパソコン用につくったLinux

しかし、リーナスには不満があった。ひとつは教育用OSであるために、あまりにも機能が簡略化されすぎていることだ。もうひとつは、用途が教育目的に限定されていたことだ。リーナスは、自分のPC上で動き、自由に使え、かつ無料で入手できるOSがほしかった。マイクロソフトのMS-DOSは論外だった。高価であり、なおかつマイクロソフトの製品なので、バグがあっても、気に入らない箇所があっても勝手に修正することは法に触れてしまう。

だったら自分でつくってしまおう。そう考えて、リーナスは一人でOSを書き始めた。Minixと同じようにUNIX風のOSだが、ソースコードも公開し、だれでも自由に使え、自由に改変できるものにしようと考えた。1991年、ある程度の形ができたところで、インターネットで公開をした。このときのOSは、決して傑出したものではなかったという。しかし、自由に使えるというところから、数は少ないが利用する人がで始めた。

使った人からさまざまな要望が寄せられるようになった。その要望の中には、リーナスもうなづくものが多かったが、自分一人ではとても対応しきれない。リーナスは、Linuxを気に入ってくれ、なおかつ自分で開発する力量がある人にプログラミングをまかすようになっていった。こうして、Linuxの開発者は、リーナス一人からしだいにインターネットを通じて10人、100人と増えていった。

リーナス・トーバルズ(2002年撮影)Photo by Wikipedia

移植をしたことがLinux発展の鍵となった

Linuxは、元々リーナスが自分のPC用に開発を始めたものなので、インテル386CPU用のものだった。しかし、欧州でアミーガを使っているハッカーたちがLinuxを使いたがった。彼らはMS-DOSやWindowsを嫌っていて、もっと使いやすいOSをほしがっていた。それでLinuxをアミーガの68000系のCPUに移植をすることになった。

しかし、これは正確な意味で移植とは言えなかった。アミーガコミュニティーのプログラマーたちは、リーナスと同じように、Linuxと同じ動作をするように、OSを一から書き始めたのだ。つまり、ソースコードはLinuxとはまったく違ったものになっている。

その後、DEC社のAlphaチップ用にLinuxを移植する計画がもちあがった。Alphaはワークステーションなどに利用された高速のRISCチップだった。しかし、リーナスはここで考え込む。アミーガと同じように、Linux風のOSをAlpha上で開発していくことは、Alphaに詳しいボランティアたちの力を借りれば、さほどむずかしくはないだろう。しかし、そのようなやり方で移植をしてしまうと、386用、68000用、Alpha用と3種類のまったく違ったソースコードができあがることになる。これで、Linuxの機能を修正するときはどうなるのだろうか。3種類のソースコードを別々に修正しなければならなくなるだろう。今後、さまざまなプラットフォームに移植していくとしたら、作業は等比級数的に増えていくことになる。いかにインターネットでボランティアを募集しても、その増えていく作業に追いつことはできないだろう。

しかも、理想的にはUNIX用のソフトウェアがそのままLinuxで動くのが理想だ。それも何種類ものソースコードが存在し、さまざまなLinuxの方言バージョンが存在するようになったら、ソフトウェアもそのままでは動かなくなるだろう。

UNIXは、この移植の問題を、UNIX自体をC言語で書くという方法で解決をした。ソースコードはC言語のソースコードひとつだけ。しかし、各機種用のコンパイラがあり、それでコンパイルをしてやることで、UNIXの実行コードができあがる。しかし、この問題の難点は、ソースコードを共通にすると、各機種特有の利点を利用するわけにいかず、どうしても実行速度が遅くなるということだった。ミニコンピューターの場合は、それがさほど問題にならなかったが、非力なPCでは実行速度の問題は大きい。

マイクロカーネルは優れた設計思想だったのか

リーナスが注目したのは、マイクロカーネルという考え方だった。マイクロカーネルとは、OSのカーネル部分の機能を最小限に絞りこんだ小さなカーネルのことだ。システムのスケジューリング、プロセス管理、デバイス入出力、メモリーページング、メモリースワッピングなどの管理系の機能だけをおこなう。このような基本的な機能だけのカーネルであれば機種依存はしないですむ。機種依存する部分は、カーネルとは別のパーツとして開発し、実際に使うときは、このマイクロカーネルと機種依存パーツを組み合わせるという考え方だ。

アプリケーションは、マイクロカーネルとだけやり取りをする。アプリケーションがなにかを実行するときは、まずマイクロカーネルのAPIにアクセスして、命令を伝える。マイクロカーネルは、各機種用のパーツにアクセスをして、命令を実行する。このようにすると、アプリケーションはマイクロカーネルとしかやり取りをしないので、移植性のマイクロカーネルがつくれれば、アプリケーションはどの機種でも動くようになる。

カーネルの開発も格段に楽になる。OSの機能であっても機種依存をするようなものは、カーネルとは別に分けられる。つまり、マイクロカーネルは指揮者のような存在になる。カーネルは、アプリケーションという譜面に基づいて、どの楽器を鳴らすかを指示する。楽器は、その機種により、アコースティックバイオリンであることもあるし、デジタルバイオリンであることもあるし、MIDI音源であることもある。この分離をうまくおこなうことができれば、カーネルそのものはどの機種にでも簡単に移植することができるようになる。マイクロカーネルの外にある機種依存する部分だけを各機種用に開発すればよく、アプリケーションはマイクロカーネルとだけやりとりするので、アプリケーションも移植が簡単になる。というより、カーネルとアプリケーションはなんら変更をしなくても、そのままどの機種ででも動く。それがマイクロカーネルの理想だった。

マイクロカーネルに否定的だったリーナス

ところが、ここがリーナスのエンジニアとしての優れたところであり、彼の独特な性格を表している点だが、リーナスは安易にマイクロカーネルの手法を採用しようとはしなかった。

当時、マイクロカーネルはコンピューター科学の分野では注目された研究テーマであり、大学や企業などが巨額の研究費を投じていた。マイクロカーネルは考え方としては優れたものだが、OSは現実に動かさなければならない。コアカーネルと周辺部分が常にメッセージをやり取りしなければならないマイクロカーネルは、動作速度の点では不利なのだ。そこで、マイクロカーネル研究の中心テーマになっていたのが、カーネルを最適化して、いかにマイクロカーネルOSを軽快に動くようにするかということだった。コンピューター科学の分野で発表される論文のほとんどは、マイクロカーネルに関するもので、そのほとんどがマイクロカーネルの最適化、つまりカーネルを軽快に動かすための手法の提案だった。

この最適化に関する論文を片っ端から読んだリーナスは、あるひとつのことに気がついた。それはマイクロカーネルの最適化の手法のほとんどは、なにもマイクロカーネルだけではなく、一般のOSに対しても適応することができ、効果があげられるのではないかということだった。

リーナスは、研究者に対して不信感をもったという。つまり、彼らはマイクロカーネルの研究であれば、研究資金を引っ張りやすいので、一般のカーネルに対して考案されている最適化手法を、マイクロカーネル版に焼き直して論文発表をしているのではないか。

当時、マイクロソフトはWindows NTの開発を進めていて、商業用途としては初の本格的なマイクロカーネルOSになるという触れこみだった。しかし、リーナスはかなり早い段階で、それが真っ赤な嘘であることを見抜いていた。「マイクロカーネル」という言葉を使いさえすれば、世間から注目され、さまざまな研究資金が引っ張れる。マイクロソフトの開発エンジニアというきわめて高給の仕事にありつける。それが彼らの本音で、できあがるものはマイクロカーネルとは言えない中途半端なものになるだろう。実際、リーナスの予想通り、Windows NTはマイクロカーネルという点では中途半端なものになった。

リーナスはこう結論した。「マイクロカーネルで移植性を確保しようとするのは、四角いタイヤを使って、猛スピードができるレーシングカーをつくろうとするような愚かなことで、時間の無駄にすぎない」。

その6に続く




違法スパイ装置と見なされたIoT人形「ケイラ」とは?(前編)

February 27, 2017 08:00

by 江添 佳代子

ドイツの連邦ネットワーク規制庁Bundesnetzagenturは2月17日、インターネット接続の人形「マイ・フレンド・ケイラ(My Friend Cayla、以下ケイラ)」を違法な監視デバイスであると判断し、すでに国内市場から排除していることを発表した。 ドイツの連邦ネットワーク規制庁の発表 ドイ…

ハッカーの系譜(10)マービン・ミンスキー (5) 伝説のダートマス会議に参加

February 23, 2017 08:00

by 牧野武文

暇つぶしで共焦点顕微鏡を発明 しかし、なにもしないわけにはいかないので、好きな機械いじり三昧をしている間に、共焦点顕微鏡のアイディアを思いついた。これは顕微鏡にピンホール(小さな穴)を使うというアイディアだった。 レンズを組み合わせて構成されている一般の光学顕微鏡では、試料を観察するときに焦点を合わ…