〜 Googleがあまり知らないLinuxの歴史 〜
今でこそ無視できない存在に成長したLinuxですが、そこに至るまでにはLinusだけでなくさまざまな人の関わりがありました。Linuxカーネルがこの世に生まれた1990年代初頭を振り返ります。(編集部) |
WASP株式会社
生越 昌己
2008/9/29
ある日、@IT編集部から、「Linuxの昔話を誰か書いてくれないか」という話がやって来ました。まぁ古い話なら私に振られてもしょうがないかと引き受けた次第です。
打ち合わせのときに「最近の話ならググればいくらでも出てくるのだけど、Linux初期のころの話は意外に出てこない」という話になりました。確かに、古い時代の人々の動向や背景といったものは、意外なほど情報がありません。
試しに「Linux 歴史」でググってみると、有効な情報があまり出てこないことが分かると思います。多くは語り継がれていなかったり、新しい情報で上書きされていて、なかなか一次情報に近いものには当たれません。そこで「Googleがあまり知らない前世紀のLinuxの話」をお話ししたいと思います。
Linux誕生前夜のパソコン業界
Linuxのコードが書かれ始めたのは、1991年の春ごろのことのようです。このあたりの細かいタイムラインについては、表1に示します。
|
Linux以外の歴史的な背景から説明すると、このころはPC/ATのCPUがそろそろ386や486に、つまり32ビットが普通になろうとしている時期でした。日本ではまだPC-9801シリーズが幅を利かせていて、そろそろDOS/Vが一部マニアに使われるようになり始めたころでもあります。
CPUは32ビットになっていましたが、OSの方はまだまだで、Windowsではやっと3.0が出ようとしていました。どうしても32ビット環境を使いたい人は、お金があればSCO UNIXを買い、お金がない人は386DOS Extenderをはじめとする「DOSの上に32ビット環境を作るソフト」を使っていました。私は、DJGCCを使ってgcc(1.3.6辺り)を使ってGNUのソフトを動かしたり、そのころ公開されたMach 3.0のビルドに挑戦したりしていました。
またその当時、「Dr. Dobbs Journal」では、BSDコードのうちフリーになったものだけをベースにして不足している部分を書き足すということに取り組み、BSDをPC上で動かすという記事をジョリッツ夫妻(William JolitzおよびLynne Jolitz)が執筆していました。これがLinuxとほぼ同じころに公開された「386BSD」です。
当時のPCの平均的なスペックは、メモリは8Mbytes、CPUは486、HDDは200Mbytesくらいというものでした。ハードウェアは32ビット時代。商用OSではいまだ16ビットが主流で、それでは飽き足らない人が32ビットを摸索し始めたという時代です。このような時代背景があって、Linuxは最初から32ビットでスタートしています。
その先駆者、minix
Linuxの歴史や背景はUNIXのそれと無関係ではありません。しかし、本稿でUNIXの歴史や背景を詳しく書く余裕はありませんので、Linuxの歴史と関係の深い部分だけ、ちょっとだけ触れておきます。
UNIXは、ごく初期にはほぼオープンソース(注)なOSでした。実際にUNIX Version 6のソースコードを解説した「Lions' Commentary on UNIX」という本が出版されています。これは生きたOSの教科書として使われたものです。
注:当然、「オープンソース」という言葉ができる以前のことですから、厳密にいえばオープンソースではありません。 |
ところがその後は、UNIXのソースを入手するには、AT&Tのライセンスを受けなければいけなくなったうえ、それはかなり高価でした。
この後、やはり「OSの教科書」のためのソースコードの必要から、アンドリュー S. タネンバウム(Andrew S. Tanenbaum)によって「minix」が作られました。このminixは外見はほとんどUNIXですが、まったく独自に作られたものです。
特にカーネルの構造はUNIXとは全く異なり、マイクロカーネルの上にOSの機能が実装されるようになっていて、「現代的」なOSでした。また、ハードウェア環境は当時の諸外国での一般的なパソコン環境であったIBM/PCを想定して作られていました。つまり、学生が実際に自分の机の上にあるPCで動かすことのできるOSが、ソースコードとその解説とともに入手できたわけです。
minixはOSの実装の教科書である「Operating Systems: Design and Implementation」とともに配布されていました。いわゆる完全なフリーソフトウェアではありませんでしたが、あまり厳しい制約のあるライセンスでもありませんでしたから、当時の「UNIXのようなもの」に飢えている人々の支持を受けていました。
日本では1989年に、Operating Systems: Design and Implementationの和訳が発刊されました。当時の日本では「パソコン」といえばPC-9800シリーズでしたから、当然そのままでは動きません。そこで和訳本の出版元であるアスキーがPC-9800に移植したものを配布していました。これは主にJUNETを中心に、アカデミック方面で情報交換が活発に行われていました。
これとは別に、ほぼ同じころ、まったく別のコミュニティから、やはりmimixをPC-9800シリーズに移植した版が発表されました。これは正式な配布契約の下で配布されるものではなかったため、「原書を買った人に限り配布してもよい」という形式で配布されていました。このコミュニティはパソコン通信の「日経MIX」が基でしたので、「アスキー版」に対して「MIX版」と呼ばれていました。
2つの版は、基になったminixは同じですが、移植の仕方が異なるため、互換性があまりありませんでした。また、当時はいまのインターネットの上のコミュニティのように、コミュニティ間でのつながりもあまりなかったため、ちょっとした意見の相違や「口の利き方を知らない人たち」のせいで、磨擦が起きていました。
MIX版の方には、しばらくしてDOS/Vと同じ原理の「グラフィックを使って日本語を表示する」という機能が実装されます。DOS/Vと同じ原理なので「minix/V」と呼ばれていました。Linux上でも、同じような考え方と同じフォントデータを使って、日本語コンソールである「kon」が作られました。
1/2 |
|
||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム 仮想化技術関連記事 |
連載:実践! Xenで実現するサーバ統合 有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します |
|
特集:サーバの仮想化技術とビジネス展開の可能性 jailからUML/VMwareまで 1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった |
|
特集:仮想化技術のアプローチと実装 VMwareから要注目技術Xenまで 1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう |
|
特集:仮想OS「User Mode Linux」活用法 技術解説からカーネルカスタマイズまで Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
特集:仮想化技術の大本命「Xen」を使ってみよう インストール & Debian環境構築編 高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう |
|
特集:仮想化技術の大本命「Xen」を使ってみよう Xen対応カスタムカーネル構築編 Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる |
|
特集:IPv6、UML、セキュリティ機能の統合 全貌を現したLinuxカーネル2.6[第4章] 今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう |
|
Linux Squareプロダクトレビュー VMware Workstation 4 PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう |
|
古くて新しい「サーバ仮想化技術」の行方 サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する |
|
Linux Squareフォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|