アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ
linux release 0.01 のリリースノート(訳例) (スコア:5, 参考になる)
linux-0.01.tar.Z - kernel のソース
bash.Z - テスト用の bash の圧縮したバイナリ
update.Z - 圧縮した update のバイナリ
RELNOTES-0.01 - このファイル
1. 短い前置き
これは、i386 シリーズを使用した AT 互換機で動作する minix 風のフリーな
カーネルです。ソースコード全部が含まれています。このソースは2台の
異なった機器で動作しました。現在のところ、異なった機器で動作させるには
ソースコードをそれぞれの機器でコンパイルする必要がありますので、
カーネルのバイナリは公開していません。コンパイルには gcc が必要です
(私は gcc 1.40 を使用しました。gcc 1.37 では __asm__-directive 全部が
利用できるかどうかわかりません。)関連する設定ファイルの書き換えも
必要です。
バージョンは 0.01 ですが、これはきちんとした出来ではないという意味です。
現在のところ、AT 互換機の一部機能(ハードディスク、画面表示、キーボード、
シリアルライン)をサポートするのみとなっています。また、システムコールの
一部はまだ完全には実装していません。(mount/umount さえも実装していま
せん) ソースコードのコメントや readme を参照してください。
このバージョンの意味は、今のところ読むだけ、それも、たとえば現在どんな
風に見えるかに興味がある人向け、ということでもあります。コンパイルすれば
動作するカーネルができます。あなたの機器で動かすことについてはできる
限りの助言はします(私にメールしてください)が、全てをサポートする訳
ではありません。頻繁に変更をかけていますので、おそらく最初の”製品”
バージョンは、アルファリリース以前であるこのバージョンとは大きく
異なったものとなっていることでしょう。
linux を動かすために必要なハードウェア
- 386 の AT 互換機
- VGA もしくは EGA のスクリーン
- AT のハードディスクコントローラ (IDE が良い)
- フィンランド語キーボード(まあ、US キーボードでも使って使えないことは
ないでしょうが、多少練習が必要でしょう:-)
フィンランド語キーボードをハードワイヤしています。私はUS キーボードを
持っていませんので、US キーボードに切り替えようとすると、非常に面倒な
問題を抱えることになってしまうのです。詳細はkernel/keyboard.s を参照
してください。もしどなたか、部分的にでもポーティングしていただければ
嬉しいです。テーブルドリブンですので、特別に難しくはないはずです。
(アセンブラですけど)
linux は完全なカーネルであり、minix のコードや、その他のソース
は流用していませんが、ほとんどのルーチンはまだサポートしていません。
そのため、現時点ではシステムを起動させるために minix が必要です。
minix を持ってなくても、無料で入手できる minix のデモディスクで
ファイルシステムの作成と linux の起動は可能かもしれませんが、私には
わかりません。
Re:linux release 0.01 のリリースノート(訳例、続き) (スコア:3, 参考になる)
このカーネルの著作権は、(C) 1991 Linus Torvalds とします。ただし、
その全部もしくは一部を、下記に従って再配布可能とします:
- ソースコード全てが(無料で)入手可能であること。そうでなければ、
最低限、それを請求できる条件で配布すること。
- 著作権の表示を変更しないこと(実際の所、ソースの一部分だけを配布する
つもりであれば、全てのファイルに(C)が記述されているわけではないので、
著作権の追記は必要でしょう)。極々一部の引用であれば、著作権表示なし
でも構わないでしょう。
- 配布に際し、金銭の授受を禁止します。たとえ手数料であってもです。
何か質問がありましたら、私(torvalds@kruuna.helsinki.fi)宛にメールくだ
さい。
残念ながら、カーネルそれ自体だけでは何もできません。システムを動かす
ためにはシェルやコンパイラ、ライブラリが必要です。それらは個別のより
きついか、あるいはゆるい著作権に基づいた部分品となっています。
linux で利用するツールの大半は GNU ソフトで、GNU に著作権があります。
こうしたツールは当配布物に含まれていません。詳細は私(もしくは GNU)に
問い合わせてください。
3. カーネルについての短い技術概論
linux カーネルは minix 環境下で作成されました。当初私は、minix と
バイナリ互換にするつもりでした。両者の差異が拡大したことにより
廃案となりました。システムは未だに相当似かよって
います。キーポイントは以下の通りです。
- 386 チップの可能性の有効活用。minix は 8088 チップの上で記述され、
他のマシンにも移植されました。linux は 386 チップの強みを最大限に
活用しています( あなたが 386 チップを /持って/ さえいれば、すばらしい
ことですね。移植は大変困難ですけど)
- メッセージパッシングはありません。より伝統的な unix らしい方式です。
システムコールは単なる呼び出しです。より高速化できるかも
しれません。あるいはできないかもしれませんが、メッセージに
起因する問題の一部(メッセージキューなど)を免れていることをも、
意味しています。もちろん、良い機能を失ってもいますが:-p
- マルチスレッドなファイルシステム メッセージを使用しない、必然の
結果です。それによりファイルシステムはやや(というより非常に)
複雑になってしまっていますが、より優れたものになっています。改良された
スケジューラーと相まって、複数のプロセスを実際に動かすことができ、
minix による パフォーマンスヒットもないということです。
- 最小限のタスク切り替え。これもメッセージ不使用による結果です。
何をやっているときでもタスクが切り替わってしまう minix とは
違い、本当にタスクを切替えたくなったときに限って、タスク切替えを
実行します。これにより、387 サポートの実装がより容易になって
います(実を言えば、実装はほとんど完了しています)。
- 割り込みは隠蔽されていません。( Tanenbaum を含む)、人によっては
割り込みを醜い、隠すべきものと考えるようですが、残念なことに、
他の全て同様、コードの一部分になっています。管見によれば、
現実的な理由により、割り込みは主に、機械語で制御すべきもの
です。特にデバイスドライバはほとんど割り込みルーチンから
成り立っています。kernel/hd.c 等を参照して下さい。
- kernel/fs/mm ディレクトリには、区別はありません。すべて同じ
code のheap にリンクされています(?)。この点については欠点同様、
利点も存在します。このコードは minix のコードとは異なり、
モジュールではありませんが、その反面、様々な箇所が単純になっています。
カーネルにおける相違点はソースツリーの異なるサブディレクトリに
あります。しかし起動時には同じデータ/コードスペースで動きます。
linux の実装における基準は、高速に稼働すること、カーネルをシンプルに
しておきたかったこと、大半の unix のソフトを動かせるよう十分に
強力なことでした。
ファイルシステムについては大したことはできませんでした - 実用的な
理由により、 minix のそれと互換にする必要がありました。もちろん minix
のファイルシステムは十分にシンプルでした。カーネルと mm はシンプルに
できました:
- タスクに対して、たった一つのデータ構造体。"真の" unix は、
数カ所のタスクインフォメーションがあります。私は一箇所に
全てがあるようにしたかったのです。
- i386 のページングとセグメンテーション機能を利用した、うんと
シンプルなメモリ管理アルゴリズム。現時点での MM は memory.c と
page.s とのファイル二つの、数百行のコードだけです。
以上の決定は非常にうまく作用したように思います。バグ修正も容易で、
ちゃんと動作します。