Linux HISTORY 和訳履歴 1) 1993年 9月11日 和訳 和訳者 NIFTY-Serve ID : GFH00250 kienn(深瀬 長彰) WIDE : GFH00250@niftyserve.or.jp ------------------------------------------------------------------------------- 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 ともアセンブラともほとんど区別のつKないものもあります > (MM.C は格別)GCC以外のコンパイラに移植するのでさえ「興味深い」ものとなる > でしょう。(もっとも、誰かが GCC 以外のコンパイラを使うきになったとしても、 > その理由は謎ですね。) [ 編 注: LINUX は新しいバージョンになって移植性が向上しました。つまり、初期の バージョンでは、非常に沢山アセンブラで書かれた部分がありました。しかし、今に なってさえ正気の人間なら移植しようなどとはしないでしょう ] > 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の代わりになるものが欲しいひとは、 > どうかこの書き込みは無視してください。LINUX0.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年第44半期か92年第14半期に登場 > > 現在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の話はおしまいです - これでなにか答えになった思います。 ----------------------------------------------------------------------------- To: Linux-Activists@BLOOM-PICAYUNE.MIT.EDU From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Subject: Re: Writing an OS - questions !! Date: 5 May 92 07:58:17 GMT In article <10685@inews.intel.com> nani@td2cad.intel.com (V. Narayanan) writes: > >どうも、皆さん > この分野の「初心者」は暇がある毎に考えてきたのですが、どうやったら >何もないところからOSを書き起こせるのでしょうか?そういうわけで、いくつか >質問しますが、これらの質問に時間を割いて答えて下さるなら尊敬します。 誰かが答えたのものとは思いますが、LINUXについては私が引き受けましょう。 私の個人的な経験そのままを書きます。普通はどのようにするのかは知りません。 >1) カーネルを作っているときには、だいたいどうやってデバッグしますか? 使っているマシンと、作業の進み具合によります。もっとシンプルなシステムなら たいていセットアップはもっと簡単です。プロテクトモードの386で私がやらなければ ならなかったことをかきます。 一番厄介な所は一番最初です。printf等が使える最低限のシステムさえ手に入れれた後 であっても、386でのプロテクトモードへの移行は楽しくないです。386の アーキテクチャを良く知らぬままに始めたのであればなおさらです。この段階システム では、死にたくなるほどリブートしまくります。もし386がなにかがヘンだと気づいた 日には、シャットダウンしてリブートしてしまいます。何が悪いのかの証拠を残す暇も ありません。 printf()もたいして役に立ちません。リブートすれば画面もきれいさっぱりです。 それから、VRAMも叩かなければだめです。VRAMはセグメントが間違っていたりすると 落っこちてくれます。デバッガなんて考えるだけ無駄です。386のプロテクトモード までついていくデバッガなんて聞いたことがありません。386エミュレータや、 一部の重装備のマシンならなんとかなるかもしれませんが、大抵は駄目です。 私が使ったのは、ただの時間稼ぎのループでした。 die: jmp die このうようなものをここぞというところに入れます。止まってしまえばOKですし、 リブートしてしまったら、すくなくともこのdieループの前が怪しいとわかります。 変わりにサウンドポートも利用できますが、私はPCのハードはいじったことがなかった ので、全然使いませんでした。これ以外に方法がないわけではありません。私は カーネルを書こうと思って始めたのではなく、ただ386のタスクスイッチ等について 知りたかっただけです。しかし、とにかくこうして書き始めました。(91年の4月のこと でした) 最低限のシステムが出来上がり、スクリーンを出力に使えるようになると、少々楽に なります。しかし、ここで割り込みを有効にしなければなりません。ドカ〜ン。 いきなりリブートして、また最初の方法に逆戻り。全てがこの調子で、およそ2か月 かけて、386のまわりをまともに動くようにしました。それからは、リブートしない ようにと気を使いながら、同時に基本的なもの(ページング、タイマ割り込み、単純な タスクスイッチャ、セグメントのテスト)を作るということをしないで済むようになり ました。 >2) カーネルを違うOSの上で、プロセスとして走らせることで、動作を確認できますか? > そのとき、(開発中の)OSが「特権」レジスタを操作しようとすれば、(開発環境の > 方の)OSで例外が発生しませんか? ええ。だいたい出来るなものもありますが、例えばデバイスドライバはたいてい、 裸のマシンでテストしなければなりません。LINUXを開発するのにMINIXを使ったの で、I/Oレジスタや割り込み等はいじることはできませんでした。こういうものも DOSの上でなら、全ていじることができますが、こんどは32bitモードがありません。 インテルもたいしたことありませんね。68040かなんかだったら、もっと楽にできた でしょう。 単純なタスクスイッチャ(タイマ割り込みを利用して、AAAA...、BBBB....のように 表示する2つのプロセスの間を行ったり来たりしました。)が出来ても、なお、だいたい printfを使ってデバッグをしなければなりませんでした。最初にキーボードドライバに 手をつけました。ちなみに、一番最初に書いたので、今でもオールアセンブラなわけ です。(まだCに移そうという気にはなれません。まだインストラクションのレベルで デバッグをしているからです。) シリアルドライバを書き上げました。うむ。これでシンプル(実際はそれほどシンプル では有りません)な端末のプログラムが走りました。走っているプロセスは例のやつ (AAAA..)ですが、今度はコンソールやシリアルを読み書きできるようになりました。 この状態から抜け出すにはリブートするしかありませんでしたが、これで小さな カーネルができました。 これから後は楽勝でした。まだ危ないところはありましたが、いくつかのデバイスが 出来ていたたので、デバッグは楽になりました。この頃にはCを使い始めました。 それで、確実に開発のスピードが上がりました。また、「あのMINIXより良いMINIX」を 作るという誇大妄想を真剣に考え始めたのもこの頃からでした。いつの日かLINUXの上で GCCをコンパイルできたらと夢に思うようになりました。 ハードディスクドライバはもっと酷かったです。この時にはドキュメントの不備が にわかに問題となりはじめました。PCは現在世界中で最も利用されている アーキテクチャですが、だからと言ってドキュメントがより揃っているというわけでは ありません。事実、私はATの中で386と387がどうやって接続されているかを書いた本 ですら一冊も見たことがありません。(Bruceさんありがとう) 次は小規模のファイルシステムです。うむうむ。これで最低限のUNIXです。基本的な セットアップに2か月かかりましたが、それから少しでディスクドライバ(ひどくバグっ ているのですが、何故かうちのマシンでは動きました)と小さなファイルシステムが できました。この頃に0.01を世に出しました。(91年末?か、とにかくそのあたり) 0.01は美しくありませんでしたし、フロッピードライバも無く、たいしたことは何も できませんでした。でも、この時からもうやめられなくなりましたし、MINIXをうちから 追い出すまでは止める気もありませんでした。 >3) リンカとローダは基本的なカーネルが走るようになるまえに必要になりますか? 0.11までのバージョンまでは、どれもMINIX386の上でクロスコンパイルしました。 ユーザープログラムも同様です。0.02の上でようやくbashとGCCが出来上がりました。 しかし、キャッシュの中の気まぐれに振舞うコードのせいで、GCCでGCCをコンパイル することは出来ませんでした。もっと小さなものでは対処することができました。 0.03(10月?)ではGCCをGCCでリコンパイルできました。多分実際に私以外の人が 使い始めたのは、このバージョンからでしょう。まだもって、フロッピーは使えません でしたが、基本的なものはだいたい動きました。 0.03を出した後、次のバージョンは実際に使えるものにしようと決心しました。(この時 も印象的ではありましたが、0.96でXが走ったときに比べればかわいいものです。) そして、次のバージョン(10月?)番号は0.10にしました。まだ、キャッシュのコードに 比較的重大なバグがありましたが、パッチをあてたあとはうまく動いてくれました。 0.11(12月)には始めてフロッピードライバを搭載しました。それから、この時点から、 LINUXの上でLINUXの開発をするようになりました。タイミングよく、/dev/hd2に自動 問い合わせ(autodial)しようとしている最中に、MINIX386のパーティションを間違って 捨ててしまいました。 この時にはみんなLINUXを使っていました。そしてメモリ不足に悩んでいました。最高に 悲しかったのは2MBのマシンではGCCが動かないことでした。c386が移植されましたが、 GCCにしかできないことがあり、カーネルをリコンパイルできませんでした。そういう わけで、ディスクページングを組み込まざるを得ませんでした。1月(?)に発表した0.12 では、私のページングとtytso氏によるジョブコントロールがまともに動いてました。 (その他のパッチでは、pmacdona氏がVCを作り始めました)このとき、初めて本質的な 変化がなく、部分的に私以外の人が書いたリリースが出ました。そして、このとき 初めて多くの点でMINIXよりも良くなりました。それから、本当に人々を引き付け始め ました。 それから0.95が3月に出て、4月にバグが取られ、すぐに0.96が出ました。LINUXには 本当に楽しませてもらいました。(そして、ずっとそうだと確信してます)反応は非常に 好意的ですし、こういうことをすれば非常に沢山のことを学ぶことができるでしょう。 (ちなみに、ほかの方面のでの学習は妨げられますけど :) Linus