1. Birthday

To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Subject: Birthday (was Re: Uptime found.  Thanks to all)
Date: 31 Jul 92 22:15:20 GMT

In article <1992Jul30.211132.20101@cc.umontreal.ca> duperval@ERE.UMontreal.CA (Duperval Laurent) writes:
>
>P.S.  閑話休題。 LINUX の生年月日はいつですか? まだ答えをもら
>ってませんよ。当日はお祝いしましょう。

LINUX が生まれたのがいつなのかさっぱり思い出せません。 おまけに日記
もつけていないので、LINUX が「生まれた」日時について正確なところを
お伝えすることはできません。しかし、私も知りたいと思ったので、(私が
LINUX を発表した) comp.os.minix のアーカイブのまわりをFTPし始めまし
た。

この文章はただ LINUX の初投稿の「なにか」を振り返るために書きまし
た。ですから、ここで 'N' のキーを押してしまってもかまいません。
もし、技術的な情報が欲しいのならそうして下さい。

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Gcc-1.40 and a posix-question
> Message-ID: <1991Jul3.100050.9886@klaava.Helsinki.FI>
> Date: 3 Jul 91 10:00:50 GMT
>
> ネットの皆さんこんにちは

> 私が今(MINIX で)やっていることの中で、POSIX の標準について知り
> たいのです。何方か最新の(できれば)機械可読の POSIX の規格が
> 何処にあるか教えて下さい。FTP のサイトならば最高です。

その時私がやっていたことというのが、まぎれもなく LINUX です。そして
7 月 3 日までには、ユ−ザ−のレベルでの実際的な事を考え始めていまし
た。つまり、デバイスドライバ−もいくらか整い、ハードディスクも実用
に耐える程度に動いてました。その他のことについては、それほどでもあ
りませんでしたが。

> 余談ですが、MINIX 上で GCC が利用.... (後略) 

ちょうどその頃、GCC-1.40 の MINIX 上への移植成功の報が入りました。
Alan W Black & co. によると移植には GCC-1.37 を使ったということ
でした。

>               Linus Torvalds          torvalds@kruuna.helsinki.fi

> PS. どなたか海外から私を FINGER してみてくれませんか。
> "changeing .plan" (本当は皆さんによる変更です)をインストール
> したのですが、外からでもまともに動くか自身がありません。うまく
> いけば、いつでも最新の .plan が見られるはずです。

私には仲間もいなかったので、やっと名前付きパイプ(named pipe)を理解
したところでした。ところが、書き込みの中のこの部分は、本文の POSIX 
についての質問よりもはるかに沢山のレスポンスを受け取りました。しか
し、POSIX についての質問が木細工から arl をかつぎ出しました。そし
て、何通かメールを出して回った結果、nic.funet.fi. に LINUX のサブ
ディレクトリを作ってもらうことができました。

そして、それからほぼ 2 か月が経った頃には、動作するものがしっかりと
手元にありました。バージョン 0.01 のソースを NIC に置くようにしたの
も、この時の前後です。0.01 は実際ソ−スであって実行形式ではありませ
んでした。もっとも、これは arl へ形だけ示して見せるためのものでし
た。その arl といえばかつぎ出されてみたものの、得たものにそろそろ愛
想をつかせ始めたに違いありませんでした。
ここにある次の投稿はそのリリース 2, 3 週間前のものです。

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: What would you like to see most in minix?
> Summary: small poll for my new operating system
> Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
> Date: 25 Aug 91 20:57:08 GMT
> Organization: University of Helsinki


> 画面の前の MINIX をお使いの皆様こんにちは

> 現在 386(486) を積んだ AT 互換機用の(フリーな) OS を作っていま
> す。(ただの遊びで、巨大にはならないでしょうし、GNU のように
> ちゃんとしたようなものにはならないでしょう) 4 月から仕込み始め
> ましたが、そろそろ出来つつあります。
> MINIX のなかでどの点が気に入られ、または、嫌われているのか、な
> んでもかまいませんから意見を下さればと思っています。というの
> も、私の OS は幾分か MINIX に似ているからです。(その中でも、
> ファイルシステムの物理的なレイアウトは、(現実的な理由から) 一
> 緒です。)

> 現在のところ BASH(1.08) と GCC(1.40) を移植しましたが、ちゃん
> と動いているようです。これは、もう 2,3 ヵ月の間にはかなり実用
> に耐えるようになるということです。そこで、一般にどんなことが望
> まれているのか知りたいと思っています。
> どのような意見も大歓迎ですが、その意見を盛り込むという保証はし
> ません :-)

>               Linus (torvalds@kruuna.helsinki.fi)
>
> PS.  勿論 MINIX のコードからは完全に独立していますし、その上
> マルチスレッドのファイルシステムも乗っています。移植性は低いで
> すし (386 のタスクスイッチングを使っていたり)、AT ディスク以外
> は、まずサポートしないつもりです。
> つまり、それだけしか私は持っていませんので:-(。

この投稿を見るに、この時はまだ 0.01 を公表してなかったのですが、そ
の時はもう間近に迫っていたのでしょう。最初のバージョンは 91 年の中
ごろに発表したものと思われます。この時には、レスポンスがありました 
(ほとんどがメールで、とっておきませんでした。)し、中には LINUX の
ベータテスターになりたいというメールまでありました。

この後、ネットでは、ほんの 2,3 の質問と応答がかわされました。

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Re: What would you like to see most in minix?
> Summary: yes - it's nonportable
> Message-ID: <1991Aug26.110602.19446@klaava.Helsinki.FI>
> Date: 26 Aug 91 11:06:02 GMT
> Organization: University of Helsinki

> In article <1991Aug25.234450.22562@nntp.hut.fi> jkp@cs.HUT.FI (Jyrki Kuoppala) writes:
> >> [re: my post about my new OS]
> >
> >もっと詳しくお願いします。MMU は要りますか?

> ええ。MMU が必要ですし (皆さんすみません), もっと言うならば 
> 386/486 の MMU が必要です。(これについては後述).

> >
> >>PS.  勿論 MINIX のコードからは完全に独立していますし、
> >>その上マルチスレッドのファイルシステムも乗っています。
> >>移植性は低いですし(386 のタスクスイッチングを使ってい
> >>たり)
> >
> >どの程度Cで書きましたか?  移植するときに何が問題になるので
> >しょう? 移植性が ゼロだなんて誰も信じませんからね ;-), 
> >かく言う私も AMIGA に移植したいと思ってます。 (MACH には 
> >MMU がないし MINIXはフリーじゃない).

> 移植は不可能だと言う他はありません。ほぼ全てを C で書いていま
> すが、あれを C だと言う人はまずいません。386 の特徴を考えられ
> るだけ活用していて、386 について勉強するためのプロジェクトだっ
> たとも言える程です。既に言ってきたことですが、MMU をページング
> (ディスクはまだ)とセグメンテーションに使っています。そして、
> セグメンテーションのせいで完璧に 386 専用になってます。
> (ひとつのタスクはコードとデータのために 64MB のセグメントを 1
> つ用意します。ですから、4GB のなかに最大 64 タスク置けます。
> いったい誰が、タスクあたり 64MB も必要とするでしょう?)

> それから、GCC の特徴を考えられるだけ活用してもいます。 特に 
> __asm__ directive (命令)は多用していて、そのおかげでアセンブリ
> 言語をあまり使わずに済みました。
> "C" のソースの中には C ともアセンブラともほとんど区別のつかな
> いものもあります( MM.C は格別)。 GCC 以外のコンパイラに移植す
> るのでさえ「興味深い」ものとなるでしょう。(もっとも、誰かが 
> GCC 以外のコンパイラを使うきになったとしても、その理由は謎です
> ね。)

[1]

> MINIXと違い、割り込みも好んで使うようになり、割り込みを扱う時
> に、原因を隠蔽しようとしないようにしました。(私は特に自作のハ
> ードディスクドライバを気に入っています。誰か割り込みドライバを
> ステートマシンにしませんか?)
> どこをとっても、移植しようとする人にとっては悪夢となるでしょう
>
> >仮想端末(pseudo ttys)BSDソケット、ユーザーモードのファイル
> >システム (/dev/tcp/kruuna.helsinki.fi/fingerを cat したの
> >で言えるのですが),tty 構造体の中のウインドウサイズ、POSIX.
> > 1 をサポートできるようなシステムコール。それから、BSD ス
> >タイルの長いファイルネーム。
>
> ほとんどのことが可能だと思いますが、(TTY 構造体には既にウイン
> ドウサイズのメンバがあります。)ユーザーモードのファイルシステ
> ムは別でしょう。POSIX についてですが、あればいいと思ってはいま
> すが、POSIX の刊行物は有料ですから、現在のところ選択の余地はあ
> りません。いずれにせよ、まだしばらくの間サポートしないものもあ
> ります。(まずはじめに、MINIX そっくりにしようと思っています)
>
>               Linus (torvalds@kruuna.helsinki.fi)
>
> PS. ここで、物事を明らかにしたいと思います。勿論 LINUX 上で 
> GCC や BASH、その他 GNU の [bin/file]utilities が走っていま
> すが、それほどデバッグは進んでいませんし、ライブラリも必要最低
> 限のものです。今の所、フロッピーディスクさえサポートしていませ
> ん。あと 2, 3 か月は配布する準備は整わないでしょう。それに加え
> て MINIX で出来る以上のことは、それほど出来ないでしょうし、
> MINIX に遠く及ばない点もあるでしょう。それでも、フリーではあり
> ます。(おそらく、GPL かそれに似たものの下で。)

確かに何かが私のマシンで動いていました。しかし、LINUX の上でコンパ
イルした GCC をその時すでに持っていたかは怪しいものです。(というよ
りも、LINUX を自慢しようという気持のあまり、このことは言わなかった
のかもしれません。)まだ、リリース前のことでした。

そして、10月5日には 0.02 をリリースしたようです。前にも書きました
が、0.01 ではバイナリでの配布はいっさいしませんでした。つまり、ソー
スコードのみで配布していて、LINUX がどんな様子か知りたい人を対象に
していました。0.01 にはあまり自信がありませんでしたから、興味をみせ
た人だけに覚書を送ることにしました。

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Free minix-like kernel sources for 386-AT
> Message-ID: <1991Oct5.054106.4647@klaava.Helsinki.FI>
> Date: 5 Oct 91 05:41:06 GMT
> Organization: University of Helsinki

> 人は人として自ら望むデバイスドライバを書いていたMINIX-1.1の古
> き良き時代が懐かしくはありませんか? ちょうど良いプロジェクトが
> なくて、幼い頃から慣れ親たしんだ OS に手を加えようとして死んで
> いませんか? MINIX の上で全てがうまく行っている時にふとやり場の
> 無い気持に捕らわれませんか?夜行性の人間が素晴らしいプログラム
> に命をそそぎこむことはもうないのか? この投稿はそんなアナタのた
> めなのです:-)

> 一月(?)ほど前にも言いましたが、386 の AT 互換機用のフリーで 
> MINIX にそっくりな OS を作っています。それが、とうとう(なにを
> 望むかにもよりますが)使えるという段階に達しましたので、ソース
> を大々的に配布したいと思います。今回はバージョン 0.02(+1(非常
> に小さい) パッチがあたってます)ですが、
> BASH/GCC/GNU-MAKE/GNU-SED COMPRESS 等を走らせることができまし
> た。
>
> この小さなプロジェクトのソースはnic.funet.fi(128.214.6.100)の
> /pub/os/linux にあります。このディレクトリには、README ファイ
> ルとLINUX上で動くバイナリが少々あります。(BASH, UPDATE, GCC, 
> これ以上は尋ねて下さい :-)カーネルのソースも完全な形で上げてお
> きました。その中ではMINIXのコードはいっさい使っていません。し
> かし、ライブラリのソースは部分的にしかフリーでないので、今の所
> 配布するわけにはいきません。このシステムは、そのままコンパイル
> することができ、尚且つ動くことが確認されてます。ふぅ。(BASH や
> GCCのソースはやはり nic.funet.fiの/pub/gnu にあります。

> 警戒! 警告! 注意! これらのソースをコンパイルするには、まだ 
> MINIX-386(と GCC-1.40 おそらく 1.37.1 でも可。しかしテストして
> ません。) が必要で、LINUX を走らせるのにも MINIX でセットアッ
> プしなければなりません。つまり、MINIX を持ってない人にとって
> は、今の所スタンドアロンではありません。現在なんとかしようと
> しています。また、今の所 LINUX はハッカーの「何か」がないと
> セットアップできません(?)。そういうわけで、MINIX86 の代わりに
> なるものが欲しいひとは、どうかこの書き込みは無視してください。
> LINUX 0.02 は、OS と 386 に興味があって MINIX が使えるハッカー
> を対象にしているのです。

> また、このシステムには、AT 互換のハードディスク(IDE はもってこ
> いです) と EGA か VGA が無くてはなりません。ここまで読んでまだ
> 興味のあるかたは、README や RELNOTES を読んだり、もっと知りた
> いとこがある人は私にメールしたりしてください。

> 「何故?」という言葉が聞こえて来るようです。HURD は1年(2年かも
> しれないし、2 か月かも知れないです。)以内には出てきそうです
> し、すでに MINIX があります。しかし、これはハッカーによる
> ハッカーのためのプログラムなのです。だから、私も楽しみながら
> 作りましたし、きっと誰かは見て喜ぶだろうし、その人自信のために
> 改造したりもするでしょう。まだ、規模が小さいので理解したり改造
> するのに困るようなこともないでしょう。そのようなわけで、皆さん
> のコメントを首を長くして待っています。

> それから、MINIX のユーティリティやライブラリ関数を書いたことの
> ある人はメールして頂けませんか? もし、それら皆さんの努力の産
> 物が自由に配布して良いなら(著作権の下ででも、パブリックドメイ
> ンのものでも)お知らせ下されば、件のシステムと一緒に配布するこ
> とができます。現在は EARL CHEWS ESTDIO を使ってます (EARL 
> さん、素晴らしい、そして、使えるシステムをありがとう)し、この
> ようなものは大歓迎です。勿論皆さんの「(C)」はそのままです。自
> 分のコードを使ってもらって構わないという人は、お手紙ください。

>               Linus

> PS. PHIL NELSONさんへ! 音信不通になってますよ。ずっと 
> "forward error - strawberry unknown domain" 等のエラーを受け取
> ってます。

確かに動いていましたし、それを自分で確認した人もいます。しかし、
0.02 には酷いバグもいくつかあって(おまけにフロッピードライバも無け
れば、VM(仮想記憶)も無いというないない尽くしの状態)、あまり使い勝手
はよくありませんでした。

その後すぐに 0.03 がリリースされ(その当時でさえ 2 つのリリースの間
は最大に見積もっても 2,3 週間でした。)、非常に使勝手の良いものでし
た。そして、次のバージョン番号は 0.10 になり、この時から実際非常に
安定して動作するようになりました。次の投稿には、それから 2 か月の間
に出来るあるもののアイディアがありました。

> From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix
> Subject: Re: Status of LINUX?
> Summary: Still in beta
> Message-ID: <1991Dec19.233545.8114@klaava.Helsinki.FI>
> Date: 19 Dec 91 23:35:45 GMT
> Organization: University of Helsinki

> In article <469@htsa.htsa.aha.nl> miquels@maestro.htsa.aha.nl (Miquel van Smoorenburg) writes:
> >こんにちは *,
> >     LINUXという386/486用のフリーのOSを作っている人々がい
> >ると聞いてました。どんな様子かと思って nic.funet.fi をぼち
> >ぼち見にいってました。ところが、私は生まれた時から FTP を
> >使える環境にないものですから、今現在何が起こっているのか、
> >知る由がありません。どなたか、そのことを知らせくれません
> >か?
> >おそらく、私がここで書いていることは的を射ているのではない
> >でしょうか。というのも、このニュースグループを読んで、密か
> >に期待してるひとが大勢いると思うからです。斯く言う私も、
> >>=386なマシンを持ってませんが、近い内に手に入れることに
> >しています。

> LINUXはまだベータで(もちろん、勇敢な人は FTP して利用できます
> が), バージョン 0.11 になりました。まだ、386-MINIX ほどの完成
> 度ではありませんが、勝っている点あります。 そのうち "Linux 
> info-sheet" をその管理者が投稿するでしょう。それまでのつなぎに
> 私からなにか少し言えるでしょう。

> まず悪いニュース:

>       - SCSIが無い: 現在作っていますが、まだ出来ていません。
>         そういうわけで、AT互換のハードディスクが必要です 
>         (聞いた所によると、とある EISA 486 の上で AT ディスク
>         をエミュレートするとある SCSI ディスクが動くそうです
>         が、単に運が良かった以外の何者でもないでしょう。

ここまで見て来た通り、0.11 では既に小数ながら賛同者がいました。充分
とは言えませんでしたが、ちゃんと働いてくれました。

>       init/login が無い: 立ち上げたら ROOT で BASH に入る。

次のリリースでもこれが普通でした。

>       - 動いてるようなVM(ディスクにページングする)があります
>       が、まだ配布はできません。そんなわけで、LINUX で GNU の
>       バイナリ (GCCは格別) 走らせるには最低4M必要です。2M でも
>       立上りますが、コンパイルできません。

実際は 0.11+VM を 91 年のクリスマス直前にリリースしました。とはいっ
ても、私には必要の無いものでした。しかし、2MB でカーネルをコンパイ
ルしようとして失敗する人がいたので、VM をインプリメントしないわけに
はいきませんでした。0.11+VM のバージョンはテストしたいという小数の
人の手にしか渡りませんでした。しかし、思った通りに動いたのは、今で
も脅威です。

>       - まだ MINIX を使う人のほうが大勢いる: サポートを万全に
>       すべき。
>
>       - 沢山の人々による長年に渡るテストを受けていないので、ま
>       だ非常に沢山のバグがあるはずである。
>
> それでは、良いこと....
>
>       - フリーである(著作権は私にありますが、極めてゆるやかな
>       著作権の下で自由に配布できます。

黎明期の著作権は GNU のコピーレフトに比べるとはるかに厳しいものでし
た。LINUX が人手に渡る時に金銭がやりとりされることを完全に禁止しま
した。

>       - 楽しくハックできます
>
>       - 本もののマルチスレッドのファイルシステム
>
>       - 386 の特徴を活かしてます。だから、386/486 ファミリーに
>       固定されてます。しかし、他のチップに移植しようと思わなけ
>       れば、非常にスッキリしています。
>
> LINUX は私に言わせれば、MINIX よりも良いです、勿論、私は少々贔
> 屓してますけど。
> LINUX は HURD が(来世紀かその頃に:)目指しているようなプロフェ
> ッショナルな OS にはなることは無いでしょう。しかし、LINUX は学
> 習用にもってこいですし( MINIX よりも向いていると思います。
> IMHO)、楽しみながらいじれます。
>
>               Linus (torvalds@kruuna.helsinki.fi)
>
> --- 以下は私の .plan --------------------------
>      フリーな 386 用の UNIX 91年第4四半期か92年第1四半期に登場
>
> 現在 LINUX はバージョン 0.11 で、UNIX のカーネルに必要なものじ
> ゃあらかた揃っています。init と login を作り、もう少しのテスト
> を経た後、1.0 をリリースできる予定です。現状ではブートの後で
> シェルに飛び込むことになります。
>
> LINUX は 'nic.funet.fi' (128.214.6.100)のディレクトリ 
> '/pub/os/linux' から anonymous FTP で取って来れます。そのディ
> レクトリのなかに LINUX 上で動くバイナリもあります。現在は GCC,
>  BASH, UPDATE, EMACS, TAR, MAKE, FILEUTILS があります。
> 走るシステムを手に入れた人もいますが、まだハッカーのシステムで
> す。
>
> LINUX をまともに使うには、今のところ AT ディスクが必要です。
> SCSI ドライバを作っている人々もいますが、いつ出来上がるかは定
> かではありません。
>
> 他のいくつかのサイトでも LINUX を置いてあります。というのも、
> NIC にはなかなかコネクトできませんから。そのサイトは
>       Tupac-Amaru.Informatik.RWTH-Aachen.DE (137.226.112.31):
>               directory /pub/msdos/replace
>       tsx-11.mit.edu (18.172.1.2):
>               directory /pub/linux
>
>  'Linux-activists@niksula.hut.fi' にセットアップされたメーリン
> グリストもあります。登録は、'Linux-activists@niksula.hut.fi' 
> にお願いして下さい。
> 私にメールしてきても無駄です。実際私はこのメーリングリストとは
> 関係ありません。(私自身ごく普通のメンバであることを除いては)
>
> これ以上のことが知りたければメールを下さい

>               Linus (torvalds@kruuna.Helsinki.FI)
>
> 0.11 で新しくなったこと
>
> デマンドローディング
> - 無関係なプロセス間でのコード/データの共有
> - 格段にましなフロッピードライバ (ほぼ完全に動きます)
> - バグがとれました
> - Hercules の MDA, CGA, EGA, VGA をサポートしました。
> - コンソールがBEEPするようになりました。
>    (わお! 凄えカーネル :-)
> - mkfs, fsck, fdisk がつきました
> - アメリカ、ドイツ、フランス、フィンランドのキーボードが使えま
>   す
> - COM1/2のスピードがセットできます

御覧の通り: 0.11 は本物のスタンドアロンでした。LINUX 用に初めて 
mkfs, fsck, fdisk のプログラムを書きました。もう、セットアップに
MINIX は要らなくなりました。また、シリアルドライバも 2400BPS (私が
持っていたのはこれだけ)用にハードコーディングしました。

> まだ無いものは
> - init, login
> - renameシステムコール
> - 名前つきパイプ(named pipe)
> - シンボリックリンク

今ではこれらのものは全て揃いました。init, login は 0.12 のころは完
全にはできていませんでした。rename() は 0.12 と 0.95 の間のどこかで
組み込まれました。シンボリックリンクは 0.95。名前つきパイプに至って
は 0.96 の時でした。

> 0.12 は 1 月(15日あたり)に出るでしょう。そしてこんなことが実現
> されるはずです。
> - POSIX のジョブコントロール(tytsoより)
> - VM (ディスクへのページング)
> - 細かい点での修正

実際に 0.12 が出たのは 1月 5日のことでした。中には大きな修正もあり
ました。0.12 は非常に安定したカーネルでした。色々なハードの上で動く
ようになりましたし、長い間パッチが要りませんでした。また 0.12 のカ
ーネルは「遂にここまで来たか」というものでした。この時から LINUX が
広がるのが急激に加速しはじめました。初期のカーネルはまさにハッカー
専用でしたが、0.12 は本当によく動きました。

ここまでで 1991 の話はおしまいです - これでなにか答えになった思いま
す。

Notes

[1]

編 注: LINUX は新しいバージョンになって移植性が向上しました。つま り、初期のバージョンでは、非常に沢山アセンブラで書かれた部分があり ました。しかし、今になってさえ正気の人間なら移植しようなどとはしな いでしょう。