MS-DOS ユーザのための Linux の基礎知識

いちに

1994/08/27


Table of Contents
1. はじめに
2. インストールする前に
2.1. インストールする前に
2.2. 壊してしまう前に
2.3. 文句を言う前に
2.4. 質問をする前に
3. 基本用語
3.1. バックスラッシュとスラッシュ
3.2. COMMAND.COM とシェル
3.3. バッチとシェルスクリプト
3.4. AUTOEXEC.BAT と/etc/rc
3.5. CONFIG.SYS とカーネル再構築
4. 仕様の差異
4.1. ドライブ名とパス名
4.2. 基本コマンド
4.3. ファイル名
4.4. ワイルドカード
5. 特有の用語
5.1. ログインとログアウト
5.2. ユーザレベル
5.3. スーパーユーザ
5.4. ホーム
5.5. シンボリック・リンク
5.6. パーミッション
5.7. プロセスとジョブ
5.8. ファイルシステム
5.9. 特殊ファイル
5.10. マウント
5.11. 共有ライブラリ
6. 運用上のノウハウ
6.1. あるはずのファイルがない時
6.2. 突然すべて動かなくなった時
6.3. もらったバイナリが動かない時
6.4. 万が一、落ちた時
6.5. 圧縮ファイルの種別がわからない時
6.6. テキストが正しく表示されない時
6.7. ログインできなくなった時
7. Linux で何をするのか
7.1. UNIX の勉強をしたい
7.2. 文章を書きたい
7.3. プログラムを書いてみたい
7.4. ゲームをしたい
7.5. 仕事に使いたい
8. おわりに
9. 参考文献
10. appendix
10.1. この文章の目的
10.2. 対象になる人
10.3. この文章の扱い
10.4. 章立て

1. はじめに

Linux は、UNIX クローンの OS です。Linux は、パーソナル・コンピュータを対象 とした OS であり、まず IBM-PC 上に実装され、後に FM-TOWNS へも移植されました。 おそらく、これらのマシンを所有するユーザは、MS-DOS を主力として使い、その機 能について習熟していることと思います。

Linux は、完全なマルチタスク、強力なセキュリティ機能など、MS-DOS では提供 できない、数々の優れた機能を持っています。 ユーザは、これらの機能を使いこな すため、 Linux 特有の知識について学習する必要があります。しかし、心配はいり ません。MS-DOS は、階層ディレクトリやパイプなど、一部 UNIX の機能を取り込んで きた経緯があります。従って、MS-DOS を十分に理解している人にとって、Linux は さほど難しいものではないでしょう。

本稿では、MS-DOS と、Linux という UNIX との違いに着目し、必須と思われる知 識について解説しています。


2. インストールする前に

まず始めに、Linux を実際にインストールする前に知っておくべき知識について 説明します。現在、Linux のインストールは、より手軽な方向へ進んでいます。SLS Slackware 等の優秀なパッケージの出現や、雑誌記事の充実、国内外の貢献者の努 力によって、初心者を取り巻く環境は、随分と良くなったと思います。しかし、依 然として、初心者が陥り易い間違いというものは存在します。これらは技術的な問 題というよりむしろ、心構えや姿勢の問題であることが多いのです。ここでは、公 衆の面前で恥をかかないために、最低限必要な知識について触れます。


2.1. インストールする前に

インストーラが親切になっても、やはり注意力は必要です。判断を間違えれば、 最悪の場合、MS-DOS がインストールされている区画 [1] を消滅させる危険性もありま す。念のため、インストール前に MS-DOS の区画のバックアップをとっておくこと をお勧めします。また、区画の対応をしっかり把握しておきましょう。

MS-DOS 上で、区画を作成するには、fdisk [2] というコマンドを用います。Linux でも、同名の fdisk と いうコマンドが用意されています。これは MS-DOS の物より シンプルです。しかし、Linux の fdisk は区画を作成したり 消したりしても、'w' さえ押さなければ区画情報は書き込まれませんから、さほど恐れる必要はありま せん。


2.2. 壊してしまう前に

Linux のシステムが起動しなくなった場合、ハードウェアの故障にせよ、おか しな操作をしたにせよ、必ず原因があるはずです。その原因を調べ、修復するた め、緊急用の起動フロッピー [3] を作成しておくことをお勧めします。具体的には インストール時に用いた起動フロッピーを保管しておくだけで良いのです。なに かあった時は、これを起動して原因を究明しましょう。


2.3. 文句を言う前に

もし、MS-DOS に不備があるのなら、それを OEM 販売しているメーカー、もしく はMSKK [4] の責任でしょう。また、メーカーは、ユーザサポートをする義務がある でしょう。しかし、Linux は売り物ではありません。 店頭で売られているパッ ケージの値段は、Linux 自体の値段ではないのです。そこには、サポート料金な どは含まれていません。また、ネットワークなどでサポートしているように見え る人達も、Linux 上に数々のソフトウェアを移植/制作している人達も、ほとんど すべてがボランティアなのです。この点こそが、Linux と MS-DOS との、本質的な 違いでしょう。従って、不備な点を見つけても文句を言うのではなく、「ここを こうしたら良くなるよ」「おかしいので直してみました」というように、自分の 作業の成果を、全体にフィードバックすることを考えてください。正に Linux はこうして発展してきたのですから。

この協調の理念が理解できないという人は、Linux を使用するべきではありま せん。この理念は、GNU と呼ばれるプロジェクトにも通じます。もし、これから も、売り物ではないけれど非常に優れた 〜例えば Linux のような〜 ソフトウェア を使い続けたいならば、GNU の理念 [参考文献 1 ] を、正しく理解する必要があります。


2.4. 質問をする前に

Linux では、サポートしている人達はボランティアです。質問をするにしても その前にソフトウェアに付属の説明書を読んだり、下調べをすることは、最低限 必要な態度でしょう。実際、BBS 上の電子掲示版 などにかかれている質問で、 よく見られるのですが、「私は英語が苦手で」「初心者なもので」「時間がない もので」という言葉を、あたかも免罪符のように扱う人が多いのです。だから他 人になんとかしてもらおう、というのならば、どんなハードを使い、どんなソフ トをインストールして、どういった試行錯誤を行ったか、書く事はマナーです。 ボランティア精神も有限であることを、忘れてはいけません。

Linux は、UNIX に限りなく近いシステム [5] であるため、Linux を勉強するため には、一般に発行されている、UNIX 関連の文献 [参考文献 2, 3, 4] を用いることができ るでしょう。また、貢献者の手により、Linux 関係の FAQ [6] なども日本語化されて います。

ネットワークに参加できる人は、過去に同じような質疑応答がないか、チェッ クすることによって、有用な情報を得ることができるでしょうそうした試行錯誤 の後、問題が解決したならば、その情報を、ネットワークに還元してください。 こうすることによって、ひとりの苦労は、全体の共有財産となります。きっと、 それを読んで助かる人もいることでしょうから。善意にすがった人が、次の担い 手にならなければ、善意も枯渇する [7] のです。


3. 基本用語

ここでは、MS-DOS からスムーズに Linux へ入っていく上で、まず知っておか なくてはならない用語や動作の違いを、両者を対比させながら、説明します。


3.4. AUTOEXEC.BAT と/etc/rc

MS-DOS の AUTOEXEC.BAT は、PATH などの環境変数の設定や、プログラムの自動実 行などをするバッチです。これは Linux では、/etc の下にある rc ファイルに相当します。 rc ファイルは、ハードディスクなどの各種装置を使えるように したり [9]、 プログラムの自動実行などを行ないます。

パッケージによっては、ディスク管理用、ネットワーク用など、rc ファイルを用途別に分けて、/etc/rc.d 下に置いてあるものもあります [10] 。最近のパッケージには 専用のシェルスクリプトが存在し、 ネットワーク関係の設定などは、ユーザが大幅 に rc ファイルを書き換えなくても良いように工夫されてい ます。ユーザは、大抵の場合、日本語環境などのカスタマイズで、rc.local ファイルを書き換える程度です。

その他/etc 下には、いろいろな設定ファイルがあるので、UNIX 関連の文献 [参考文献 5 ] で調べることをお勧めします。


4. 仕様の差異

ここでは、 MS-DOS と Linux において、盲点となるであろう仕様の差異について 説明します。


4.1. ドライブ名とパス名

ドライブ名とは、"A:" といったものです。例えば、ハード ディスクの A: ドライブのファイルを指定するには、 A:\usr\bin\gcc としました。ドライブ名を省略すると \usr\bin\gcc\ といった操作は、カレントドライブに影響 されます。自分は、 A: ドライブの \usr\bin\gcc を実行したつもりでも、カレントドライブが B: で、B: ドライブに、\usr\bin\gcc があれば、それが実行されてしまいます。また、 B: ドライブがカレントドライブの時に、"cd A:\usr\bin" を実行しても、 A: ドライブに移動す ることはありません。

つまり、ドライブごとに、複数のカレントディレクトリが存在したり、同名のパ スが存在することがありえるのです。分かっている人にはなんでもないことですが ずいぶん不便な仕様ではないでしょうか。

Linux では、すべてのファイルはルートディレクトリにつながっているため、あ るパス名は、システムにひとつしか存在しません。もちろん、Linux も MS-DOS と 同じように複数の装置が扱えますが、ドライブ名やカレントドライブという概念は ありません。カレントディレクトリは常にひとつだけです。これらを実現するため の仕掛けは、マウントと呼ばれる操作にあります。これは、後に詳しく説明します。


4.2. 基本コマンド

MS-DOS における主な内部コマンドと、Linux の基本コマンドとの対応関係は、 以下の通りです。

MS-DOS では、これらのサービスは COMMAND.COM が提供していますが、Linux で は、cd コマンドを除き、/bin の下の独立したプログラムが担っています。また、 機能的には大幅に異なっています。例えば、ls コマンドは ファイル属性などの詳細情報も参照できますし、mv コマンドは 単なるリネームではなく、ファイル/ディレクトリの移動も可能です。rm コマンドは、ファイルだけでなく、ディレクトリの削除なども行なえます。

この中で、特に注意しなければならないのは、rm コマンド です。MS-DOS の del コマンドは、"DEL*.*" とやると、いったん確認を求めてきます。しかし、大概に おいて Linux の rm コマンドは確認を求めずに削除してしまい ます。また、MS-DOS では、消したファイルでも、undelete コマンド [12] によって、 運が良ければ復活 することができますが、Linux では絶望だと思ってください。 大抵、シェルには エイリアスと呼ばれる機能があるので、これを用いて rm コマンドに確認を求める オプションを付加したものを、コマンドとして登録して、 rm コマンドを用いる際 は、必ず確認させると言う自衛手段を取る必要があります。具体的には、 シェル の初期化ファイルに、

    alias rm='rm -i'

という記述を追加します。 エイリアスとは、このようにコマンドラインに入力さ れた文字列を解釈し、指定した別の文字列に変換する機能です。 上記のような指 定をしておくと、例えば、"rm abc.txt" と入力しても、" rm -i abc.txt" が実行さ れていることになります。


5. 特有の用語

シングルユーザ・シングルタスクの OS である MS-DOS の概念では説明しきれな い、Linux 特有の用語と概念 [13] について説明します。


5.2. ユーザレベル

シングルユーザの OS である MS-DOS では、誰が触っても、マシンに対してあら ゆる操作が許されていました。しかしこれでは、誤って重要なファイルが消され たり、巨大なファイルでディスクスペースが浪費されたとしても、誰の仕業なの かわかりません。悪意がなくとも、不心得者が一人いるだけで、他全員に、甚大 な被害を及ぼすこともありえます。

Linux ではマルチユーザのシステムであり、ユーザを大きく 3 つの立場に分け て、ファイルに対するアクセスに制限をもうけることによって、安全性を高めて います。これらの情報は、ファイル属性として、ファイルひとつひとつに存在し ます。


5.3. スーパーユーザ

Linux には、ユーザレベルという立場を越えた存在として、スーパーユーザ [14] と呼ばれる人が存在します。ユーザの登録/削除や、 ログイン名やパスワードな どの重要な情報が記述されている /etc 下のファイルの 参照/編集など、本当に重 要な部分については、この人しかできないようにしておきます。こうしておけば スーパーユーザ自身のパスワードが洩れない限り、システムの安全性は保たれる わけです。

また、スーパーユーザが、ファイル属性をしっかり管理しておくことで、シス テムに重要なファイルを、勝手に消されてしまったりといった危険性を回避する ことができます。

スーパーユーザ以外のユーザを、一般ユーザ [15] と呼びます。パーソナルユース でも、 スーパーユーザと一般ユーザを使い分けることには、 メリットがありま す。スーパーユーザは、あらゆるファイルやファイル属性を自由に変更可能であ るがゆえに、普段からスーパーユーザでログインしていると、操作ミスでシステ ムを破壊してしまうことも考えられます。そのため、普段は、一般ユーザとして ログインしておいて、本当に必要な場合のみ、 su コマンド でスーパーユーザに移行するという形態が一般的です。

ユーザの情報は /etc/passwd ファイルに記述されてい ます。各ユーザが、どの ように管理されているかを説明するため、その書式に簡単に触れます。

passwd ファイルは、以下のような行の繰り返して構成 されています。

  user1:*:203:6:user:/home/user1:/bin/sh

これは、左から順に、 ログイン名、 暗号化されたパスワード、ユーザID、グ ループ ID、ユーザ名、 ホームへのパス、 ログイン時に起動されるシェルへのパ ス、を示しています。":" は区切り文字です。

これらの設定は、スーパーユーザのみ行なうことができます。例えば、新たに ユーザを受け入れる場合は、まずスーパーユーザが、useradd コマンドを用いて /etc/passwd に一行記述を追加し、 ユーザのログイン名と仮のパスワードを設定 します。その後、ユーザがログインして、好みのパスワードに変更するという作 業が一般的です。特に、ネットワークを使用する環境においては、事故を防止す るため、これらの管理は厳重に行なわれる必要があります。


5.5. シンボリック・リンク

さて、作業空間が、ホームとして固定されてしまうと、どのような問題が起き るでしょうか。こんな例を考えてみましょう。

/usr/home/akaike というホームを持った akaike さんが、 最近頻繁に作業を行うようになった場所が、/usr/spool/kenkyuusitu/ringi/kaikei だとします。こ れでは、交互に移動するのもけっこう大変です。それでは、akaike の下に kaikei というディレクトリを作成し、その中に /usr/spool/kenkyuusitu/ringi/kaikei 下の全ファイルをコピーすれば、"cd kaikei", " cd .." だけで交互に移動できま すね。でも、それらのファイルは、研究室の会計に関するもので、他の人も見た り書き加えたりできるものだったとしたら、これは問題です。皆で、自分のホー ムにコピーし、編集した後、書き戻そうとしたら、どうなるでしょうか。

この問題を少しだけ緩和する機能が、シンボリック・リンクです。上記の例で は、ホームにカレントディレクトリがある時、以下のコマンドを実行します。

  ln -s /usr/spool/kenkyuusitu/ringi/kaikei .

こうすることで、あたかもホームの下に kaikei という ディレクトリがコピー されたように見えます。これは、他の人も同じ操作をすることで、同じことがで きます。ただのコピーと違うのは、ホームに出来たディレクトリ kaikei は、/usr/spool/kenkyuusitu/ringi/kaikei と実体を共有しているということです。

それでは、"cd kaikei" で移動して見ましょう。 中には、/usr/spool/kenkyuusitu/ringi/kaikei の ファイルが並んでいるはずです。ここで"cd .."を実行する と、どこへ移動するのでしょうか。残念ながら、/usr/home/akaike ではなく、/usr/spool/kenkyuusitu/ringi へ移動します。"cd" と実行することで、ホーム へ直に移動できますので、シンボリック・リンクと併用することで、離れたディ レクトリの参照が楽になると思います。


5.6. パーミッション

MS-DOS のファイル属性では、せいぜいファイルのリードオンリーを設定したり 隠したりといったことしかできませんでしたが、 Linux では、ユーザレベルに応 じた細かい管理が可能です。このファイル属性はパーミッションとも呼ばれます。

裏を返せば、Linux はパーミッションを細かく管理しなければ、 いろいろ困っ た事が起きる可能性もあるわけです。ディレクトリの内容が見れなかったり、プ ログラムの存在するディレクトリを、正しく指定しているのに実行できなかった りするのは、大抵このためです。パーミッションは、ユーザレベルに応じて、以 下のような、3 つのフラグ [16] を持っています。

読み込み可能フラグ (r)

このフラグが立っているファイルは、読むことが可能となります。また、ディレ クトリの場合は、ディレクトリ内を参照することが可能となります。

書き込み可能フラグ (w)

このフラグが立っているファイルは、 その内容を更新することが可能となりま す。しかし、ファイルを消せるという意味ではありません。また、 ディレクトリ の場合は、そのディレクトリ内に新たにファイルを登録したり、 既にあるファイ ルを消したりすることが可能となります。

実行可能フラグ (x)

このフラグが立っているファイルは、実行することが可能となります。 テキス トファイルの場合は、スクリプトと判断され、 シェルがこれを解釈して実行しま す。また、 ディレクトリの場合は、そのディレクトリにカレントディレクトリが 移動することを許します。

これら、パーミッションの状態を参照するためには、ls コマンドを用います。"-l" オプションを付けることによって、 以下のような情報を得ることができます。

  -rw-r-----  1   akaike   akaike   4597 Nov 16 01:38 test.tex
  drwxr-xr-x  3    root    users    4096 Feb 17 03:27 mute/
  lrwxrwxrwx  1    root    users      18 Jan 10 23:13 src -> /usr2/IV3.1/iv/

この左端にある 10 バイトが、パーミッションの状態を表しています。一番左端 の1 バイトは、それがファイル(-) であるか、ディレクトリ(d) であるか、 シン ボリック・リンク(l) であるか、を表しています。

その次から、3 バイトが1 組となって、オーナー, グループ, 他者のパーミッ ションを表しています。例えば、 "test.tex" の場合は、 「ファイルであり」「オーナーは読み書きが可能」、「グループからは読むこと ができ」、「他者からは、そういうファイルがあることだけはわかるが、読むこ とも変更することもできない」、ということを意味します。これらの、パーミッ ションを制御するには chmod コマンドを用います。

また、上記の例において、左から3 番目の、"akaike", "root", "root"といっ た名前は、オーナー名(ユーザID) を表しています。4 番目の "akaike", "users" "users" といった名前は、グループ名(グループID) を表しています。以降、ファ イルサイズ、更新日時、ファイル名と続きます。


5.7. プロセスとジョブ

MS-DOS では、基本的に同時に 2 つ以上のプログラムが、 動いていることはあ りえません。子プロセスは存在しますが、子が起動している時は、親は必ず停止 しています。しかし、Linux はマルチタスク OS ですから、 複数のプログラムを バックグランド [17] で動かしたり、好きな時にフォアグランド [18] に切替えたりする ことができます。Linux は、それらを管理する仕組みを持っています。

システムから見た、動作しているプログラムの実行単位を、プロセスと呼びま す。 各プロセスは、システムによってプロセスID を割り当てられ、統一的に管 理されます。 プロセスは、ps コマンドを使用することに よって、知ることができます。また、kill コマンドにプロ セスID を指定することによって、動作中のプロセスを強制的に終了させることも できます。

プロセスはシステムから見た管理方法ですが、シェルによっては、よりユーザ の視点に近い実行単位として、ジョブと呼ばれる管理方法を提供しているものが あります。各ジョブには、ジョブ番号が割り当てられ、統一的に管理されます。

現在、どんなジョブがあるかは、 jobs コマンドを使用 することによって、知ることができます。ジョブには、動作中であるか、一時 停止しているかなどの状態を持っていて、これらは fg, bg コマンドにジョブ番号を与えることによって、 制御することができます。jobs, fg, bg などは、シェルの内部コマンドです。

プログラムをバックグランドで動かすには、コマンドの最後に " &" をつけて、 実行することで行ないます。 また、普通に起動したプログラムでも、 動作中に CTRL-Z を入力することで、一時停止させることができます。

ここでは、例として、ソースリストの修正とコンパイルを同時に行なうことを 考えます。現在 jobs で得られた結果が以下のようになって いたとします。

  [1]  + Suspended            emacs -nw test.c
  [2]  - Suspended            gcc test.c

ここで、コマンドラインから、"bg %2" を実行すれば、 バックグランドでコンパイラである gcc が実行されていきます。 その時の jobs の結果を示します。

  [1]  + Suspended            emacs -nw test.c
  [2]    Running              gcc test.c

さらに、"fg %1" とすると、起動しておいたテキスト エディタである emacs がフォアグラウンドになり、ユーザが操作できる状態にな ります。当然、test.c を編集しながらでも、gcc は裏で動いています。しかし、ここで test.c に重大なミスが見つかったので、gcc を止める ことにしました。emacs から、CTRL-Z を入 力して emacs を一時停止させ、コマンドラインに戻った後、"kill %1" とすれば、

  [2]    Terminated           gcc test.c

と表示されて、実行されていた gcc が、強制終了します。 後は、おもむろに "gcc test.c &" と実行すれば、 新たに gcc がバックグランドで動き始めます。


5.10. マウント

フロッピーディスクドライブや、ハードディスクドライブなどの記憶装置は、 特殊ファイルに割り当てられています。それでは、これらを扱うには、どうした ら良いのでしょうか。それには、マウントと呼ばれる操作を、行う必要がありま す。ここでは、フロッピーディスクを例にとって説明します。

MS-DOS では、フロッピーを差した時点では何も行いません。 とりあえず読み にいって、駄目だったら、MS-DOS が"ドライブの準備ができていません."という お馴染みのエラーを吐き出します。考えてみると、非常にアバウトな構造です。 Linux では、きちんとその装置が使用可能どうか、始めにチェックしなくては、 アクセスが許されない構造になっています。そのための操作を、マウントと呼び ます。マウントには、mount コマンドを使用します。

MS-DOS では、起動時に装置を検索して、自動的にドライブ名を割り振ります。 しかし、Linux では、ドライブ名という概念がありません。mount コマンドは、指定した特殊ファイルの指す記憶装置のルートディレ クトリを、特定のディレクトリ名に置き換え、そこからアクセスできるように します。動作としてはMS-DOS の join コマンドに似ています。非常に乱暴な表現ですが、特殊ファイル自身が ドライブ名のようなもので、それを適時ディレクトリに結びつけてしようすると いうことになります。

例えば、A: ドライブにある MS-DOS フォーマットの フロッピーにアクセスするために、/mnt を割り当てる とすると、

  mount -t msdos /dev/fd0 /mnt

と、なります。この場合のディレクトリの対応関係は以下のようになります。

割り当てられた /mnt 下に元々あったファイルは、 アクセスできなくなりますので、通常は空のディレクトリを割り当てます。

マウントの反対の操作を、アンマウントと呼びます。フロッピーを交換したい ときなどは、一度、umount コマンドを実行して、システム からそのフロッピーを システムから切り離し、フロッピーを入れ換えた後、再度マウントを行う必要が あります。一応安全対策も施されていますが、むやみにフロッピーを差し替えた りしていると、しばしば前に挿入していたフロッピーディスクの内容が変更され なかったり、後から挿入したフロッピーディスクの内容が破壊されてしまいます。


5.11. 共有ライブラリ

もし、複数の実行ファイルから、共通に使用できる部分だけを抜き出してまと めて置いておいたら、ディスクスペースが節約できるとは思いませんか。この機 能を実現するのが、共有ライブラリ [21] というものです。この共有ライブラリを用 いて、コンパイルされた実行ファイルは、起動する際に共有ライブラリを自力で 読み込んで、共有ライブラリに入っている機能を使用しながら動作します。従っ て、ディスクの定められた場所に、共有ライブラリがなければ、そのプログラム は自分に必要な機能を使用できないため、動くことができません。通常は /lib 下に共有ライブラリを入れておきます。

共有ライブラリを使用しない実行ファイルには、予め実行するために必要なす べての機能を含んでいます。共有ライブラリを使用したものより、サイズは大き くなりますが、共有ライブラリの存在を気にすることなく、実行することが可能 です。

つまり、どちらの方式にも一長一短があるということです。


6. 運用上のノウハウ

Linux を運用していく上で、注意すべきこと、頭に留めておいてほしいことに ついて、簡単に説明します。


6.1. あるはずのファイルがない時

Linux では、突然電源を切ったり、リセットをかけてはいけません。なぜなら、 すでにディスクに書き込んだようにみえているファイルでも、実はまだメモリ上 に存在していて、ちゃんと書き込まれていないことがあるからです [22]。 これをきちんとディスクに反映する sync というコマンド があります。また、Linux を 終了する場合は、正規のシャットダウン手順を守りましょう。

なぜ、こんな仕組みになっているのか、 普通に MS-DOS を使っていた人には分 かり難いかもしれませんが、単に性能を上げるためだと思ってください。


7. Linux で何をするのか

ここでは、補足として、より実践的ないくつかの問題について触れます。


7.3. プログラムを書いてみたい

プログラミングをこれから始めよう、という人の中には、MS-DOS が一番プ ログラミングが簡単だと思い込んでいる人もいるかもしれません。MS-DOS は 単純な構造の OS ですが、プログラミングまで単純という訳ではありません。 MS-DOS 上のコンパイラで開発を行なう人は、ほとんど例外なくハングアップ という現象に見舞われたことがあるはずです。大抵こうなると、ユーザは、 リセットをする他はなく、やむなく再起動する画面を眺める羽目になります。 しかし、Linux は強力なメモリ保護を提供しており、 ユーザがおかしなプロ グラムを作って実行させても、 システム全体がダウンしてしまうようなこと は、まずありえないのです。

また、MS-DOS が提供可能なメモリは少なく、大規模なプログラムを動かす ためには、プログラマに知識と技術力が要求されます。しかし、 Linux は広 大なメモリ空間と、仮想記憶 [24] も提供しています。ユーザは、開発中、 自分 のプログラムがどのくらいメモリを消費するのか、意識しなくても、 とりあ えず動作するものが作れます。また、MS-DOS のコンパイラに存在する、メモ リモデルといった、面倒な制約もありません。

このように、様々な制限が緩い分だけ、MS-DOS よりLinux の方が初心者向 けと言える面も多いのです。

その環境も充実しています。Linux は、標準の開発環境として、 gcc を用 います。gcc をインストールすれば、 各種ユーティリティをインストールし たり、Linux カーネルの再構築も可能となります。デバッカとしては ソース レベルのデバッグが可能な、gdb が使用できます。X-Window System 上でも、 Tck/Tk や、InterViews などの 多種多様なツールキットを使用することができ ます。

言語は C/C++ 以外に、Basic, Lisp, SmallTalk といったものが使用できま すし、FORTRAN, Pascal などは、f2c 及びp2c というユーティリティで、Cの プログラムに変換することができます。 そして特筆すべきは、Linux のパッ ケージには、これら豊富なユーティリティ群が既に含まれており、 簡単にイ ンストールできるということです。


8. おわりに

Linux の背景となっている UNIX は、広大で一種マニアックな空気がとり まく世界[参考文献 7]です。本稿で説明されている ことは非常に少なく、Linux を管理していく上では不十分です。自分にあった文献を 選び、一度通読することをお勧めします。

しかし、Linux の管理方法を習得することは単なる入口に過ぎません。こ れをひとつのステップとして、Linux の背景に広がる UNIX の世界を存分に 楽しまれることを希望します。


9. 参考文献

  1. Think GNU, ビレッジ・センター

  2. UNIX 基本操作から実践活用まで, 啓学出版

  3. たのしい UNIX, アスキ−出版局

  4. Unix プログラミング環境, アスキー出版局

  5. UNIX システム管理入門, SOFT BANK

  6. UNIX SYSTEM V ユーザ・リファレンス・マニュアル, 共立出版

  7. Life with UNIX, アスキ−出版局


10. appendix


10.2. 対象になる人

MS-DOS 以上 UNIX 未満の人

 「ファイルとは」というレベルから始めるのは、分量的にも無理を感じたの で、MS-DOS をある程度使って知っている人を対象にしています。これ読んで、 情報メモと、HOWTO 物を読めば、あまり設定で困ることはないでしょう。現に 私は困ってませんから( 説得力がないかも :-) )。

礼儀をわきまえない人

 なんだか市販品と勘違いしているのか、元からそういう性格なのかは分かり ませんが、最近富に、「調べもせずに質問して、解決したらほなさいなら」と いう人が多くなっていると感じます。

 ただあまり、その人達を責めることはできなくて、その背景には雑誌の影響 があると思います。パッケージを付録に付けて使い方は記事にするけど、扱い 方や義務・リスク等は(おもしろくないので)記事にしないという姿勢が、こう いう人達を増やす一因になっていると思います。しかもそのパッケージが酷い 不完全品だったりして手が付けられません ;-<

それで、とりあえず自分のできることとして、こういう文章を書いてみまし た。私みたいな初心者だってできることはあるんだゾ :=)という意味あいも含 んでいます。

礼儀をわきまえない人に困っている人

 会議室などで献身的なサポートをされている方々には、頭が下がる思いです。 私は多くの人に、こういう方々にうんざりされた瞬間に、終わりだということ を自覚してもらいたいのです。だから、サポートに疲れた時は「これ読め」と 本稿を指していただければ幸いです :-) 役にたたないかもしれませんが、現 状の私の実力では、これが精一杯なので許してください ;-<

Notes

[1]

パーティションとも呼ばれ、ひとつのハードディスクを複数の領域に区切った ものを指します。

[2]

IBM-PC の場合は fdisk, TOWNS の場合は TOWNS-MENU の区画設定で行います。

[3]

ブートフロッピーとも呼ばれます。

[4]

俗名、日本マイクロソフトのことです。

[5]

UNIX 本家の AT&T のコードを全く含まないため、ユーザは、面倒な制約 [参考文献 1 ]から逃れることができます。

[6]

Frequently Asked Question. 頻繁に出る質問と答えをまとめた物です。

[7]

Linux とその環境を盛り立てたいという精神が、ボランティア活動に結び付い ていると考えれば、これはあたりまえと言えるでしょう。

[8]

alias. 別名機能とも呼ばれます。

[9]

この操作のことをマウント(mount)と呼びます。

[10]

これは、UNIX には、大きく分けて2 系列存在し、それぞれ管理形態が異なる ことに起因します。

[11]

kernel. システムの中核を成すプログラムだと思ってください。

[12]

MS-DOS5.0 からは標準装備されています。

[13]

Linux 特有というより、UNIX の世界では、一般的で、基礎的な事項です。

[14]

一般に、ルート, システム管理者などとも呼ばれます。

[15]

単にユーザ、あるいは一般利用者とも呼ばれます。

[16]

旗が、立っているか、立っていないかというような、2 値情報を意味します。

[17]

裏で勝手に動いている状態を指します。

[18]

ユーザが対話的に操作している状態を指します。

[19]

古い版では、mkefs,efsck という名前で あることがあります。

[20]

MS-DOS をよく知っている人ならば、con, aux などを思い浮かべたことと 思います。

[21]

シェアードライブラリとも呼びます。

[22]

一般にキャッシュと呼ばれている機能です。MS-DOS では smartdrv というコマ ンドがこの役割を果たします。

[23]

TOWNS Linux のコンソールは、キーボードから漢字コードの切替えが可能です。 また、IBM-PC Linux では、 KON と呼ばれるソフトウェアをシステムに組み込む ことで、漢字表示が可能となります。

[24]

実際に積んでいるメモリよりも大きいプログラムを、動作させるための 仕掛けのことです。