Windows熟練者の為の随筆的Unix入門講座 


  Unix 目   次

  0.いんとろだくしょん

  1.~って何?

  2.グループって何?

  3.本物のマルチユーザOS

  4.パーテションの変

  5.mountの恐怖

  6.distribition、versionの怪

  目 次 (PC居候部屋に戻る)





0.いんとろだくしょん      Unix目次   目 次

 近頃、Unixの一変種であるLinuxがPC上で動くUnixとして非常な勢いで普及している(FreeBSDの勢いが無いのが寂しい気もする)。普通の本屋さんにも平積みされたLinux本が沢山ある。しかし、幾ら、インストールが簡単になったからといって、Windowsのユーザが何の予備知識も持たずにこれをインストールして使おうとしたら酷い目に合う。簡単になったというのは、昔のUnixに比べての事であって、Windowsに比べてのことではない。そして、昔のUnixは、ユーザインタフェースなどという概念はかけらもなかったということを念頭に置いておかなければならない。Unixとは、計算機が一部の専門家集団のものであった時代の遺物なのである。それが、PCの急激な普及につれて、計算機の中身に関して何の知識も無い一般のユーザの世界に出てきてしまった。これは喜ぶべきことか、どうか分からない。Unix側も、ユーザ側も準備不足のまま出会ってしまえば、手痛いしっぺい返しにあうかもしれない。それは両者にとって不幸なことである。

 Unixは本来、How−to本一冊読んで使えるようになるような代物ではない。大学のcomputer science学科にいても、そこを出てコンピュータを職業にしている技術者でも使えない方のほうが遥かに多いのである。Unixは一般ユーザにとって素直なOSではない。Unixには独特の文化がある。shell、kernel、lint、grep、wheel、rootなどの用語を見ても分かるように、素直な命名ではない。それが何であるかを直に表す名前ではなく、一捻りしてあるので、解説を聞かなくては、それがどんな役割をもつのか想像もつかない。shellと言われても貝殻がどうかしたのかって?、kernelといわれてもリンゴの芯がどうかしたのかッテいいたくなる。ここにUnixアーキテクチャの全ての精神が現れている;屈折、晦渋などなどの言葉が筆者の頭を過ぎる。

 一例を挙げよう;
 Unixでfloppyを使う法

 まず、フォーマット。これがムチャクチャ難しい。エエエッとWindowsのユーザなら思うだろう。formatが難しいなんて、理解できないに違いない。

Windowsでは、

  >format a:

で、済んでしまう。これで、まあ、言ってみたら、

  1.白紙の真っ更なFDに、罫線を書いているみたいな操作
  2.file systemを作る操作;目次蘭を作っているみたいな物

をやっている。 因みに、Windows9xで、floppyのアイコンを右clickしてformatすると、最後の段階で、ファイルシステムを作っています、というメッセージが見られる。

 何しろ、Unixでは、ドライブもファイルに擬しているので、慣れるまでは非常に分かり難い。a:、c:の方が余程直感的で分かり易い。Unixでは、a:とかc:とかせずに、全てfileとして扱う、この一様性、単純性が良い、と大抵のUnix本には書いてあるが、serverとして使うならともかく(サーバは普通、職業専門家が使うから。難しかろうが、煩雑だろうが、飯の種だから)、personal useでは、これは誤りであると断言できる。法則が単純な事と、仕組みが理解し易い事とは直接には関係はない。そんな事をいえば、電気工学は、すべてMaxwellの数個の方程式から全て計算を起こさなければならない。

で、format。

  fdformat /dev/rfd0

とする。実は、1.44MBでformatする為には、もう少し何か書く必要があるらしいが、筆者は面倒なので、これで、済ましている。そうすると、1.44MBでformatするのかネ、とかいうことを聞いてくるので、そうだよと答えてやればいい。

これは、上記、Windowsの場合の1.を終えただけ。このままの状態で、

  mount /dev/fd0 /mnt
(mountは、後述)

としても、叱られるだけ。file systemができていないのに、どうやつてmountできるか、と。

 このmountがWindowsユーザには、また分からないのだ。(実は、Windowsでも、ドライブスペースを使えばマウントという言葉は出てくるのだが、Unixの使い方とは意味が違うし、マウントするというボタンを押せばすんでしまうので何が起こっているのかさえ理解できないだろう)

(註; 鋭い読者、formatの時は/dev/fd0 だったって気づいたことと思う。rはraw(生;なま)なのだが、PCが生鮮食料品のように腐り易いからという訳でもなさそうだ。多分、filesystemが構成されていない、素のと言うか、未調理で生のままということだろう。普通、ストレージは、mount しないと使えないが、ddというFDにimageを直接書き込むコマンドはmountせずに使う)

   disklabel −r −w fd0 fd1440
   newfs fd0

これで、やっと、 

 format a:

に対応した作業がすむ。 Wndowsはこれらをユーザに見せないで一挙にやってしまっているだけだが、こんな風に分けたところでプロにとっても大してメリットはない。開発時だけあればいいものが、一般ユーザにも生で見えてしまうところにUnixの生い立ちが透けて見えている。

 まあ、何もUnixでFDを使うことはない。networkを使えとか、UnixFileSystemなど使わないで、Dosでformatして、DosのFAT12で書けば良いとか。mtoolsがあるとか。いろいろな意見もある。尤もな事だ。Unixは dos形式のfileを読めるので、皆、それで、読み書きすれば良いとも言えるが、それは今の問題にとって本質的なことではない。

 そうはいえ、下記のようにできる;

まず、dos(Windows9x)で、

   format a:


勿論、Windows9xなら、GUIでやってよい。

で、いきなり mount。
 FreeBSD;
  mount  −t msdos /dev/fd0 /mnt
 Linuxではvfatが使える;
   mount −t vfat /dev/fd0 /mnt

これで、読み書き/保存できる。

  cp −r ~/document /mnt
  (cpはDosのcopy+xcopy。-rオプションでxcopy。r;recursively)

という具合。このfloppyは当然、Windows9xでも読める。もっと良い事に、LinuxとfreeBSDでも相互に読める。(Linuxの少し古いversionは、FreeBSDのUFSをsupportしていない)

 こんな所を頭において、Windowsと、Unixの概念の違いを、Unixに転向したいと思っているWindowsユーザ向けに解説してみたい。


1.~って何?      Unix目次   目 次

 本当はこんな項目から始めるとWindowsユーザには訳が分からない事が頻出するから良くないのだが、却ってUnix世界に足を踏み入れる覚悟もできようというものだ。

 この気持ち悪い記号、チルダ(tilde)っていうが、これがUnixの世界では、インストール本など読んでいると頻出する。ユーザのhome directoryを表す(最近は、インターネットを見ていると、www.dokoka.ne.jp/~dareka/というホームページを良く見る。これも同じ意味で使われている)。大抵のunix本に書かれている説明はこんな程度。ふーんと読み飛ばしてしまえば、幸せだが、home directoryって何? と気がついたとたん、不幸に見舞われる。気になって夜も寝られないという不幸に。ところで、DOSユーザには問題ないが、WindowsからPCに入った人、directoryは、フォルダのことです。

 さて、~はこんな風に使う。

  ls ~
  cd ~

註; ~のキー割り当てがまた変で、106、109キーボードに ~を見つけて
喜んでそれを叩いてもだめ。その一つおいて右の^をシフトして叩くのだ。
これはUnixの責任ではない。PCで、変な事にそうなっているのだ。


 これで、自分の(「自分」という概念が、Windowsにはないので分かり難いが。。。後述 。Unixにはwho am i とかwhoamiとかいうコマンドがある!)home directoryをls(dosのdir)できる。これは便利だ。例えば、自分のhome directoryが /usr/home/daresoreだとしても、こんな長い文字列を叩かなくて良い。こん所にもUnixのテキストベースの体質が現れているのだが、それはまあ、さておく。

 ところで、ふと考えてみると、Unixは何故、~が/usr/home/daresore(UnixはマルチユーザOS。ユーザ登録してある人数分だけ~があり、皆、絶対アドレスは異なる。~は、使っているユーザに応じて絶対アドレスを変えなければならない。)って知っているのだろう、と頭を掻き毟るはめになる。home directoryだからきっとhomeってdirectory探しているのだなんて、いくらUnixがいい加減OSとはいえ、そこまでいい加減ではない。

 これは、管理者にユーザ登録してもらった人にはまず分からない(Windows9xにはユーザ登録の概念は普通ない。Win98のファミリーログオンが似ている。しかし、Unixでは必ず、Unixに登録しておかないと使える状態にならない。Windowsで、デスクトップにロックが掛かっていて何もできない状態に似ている。画面には、Login;と出ているだけである。ここに正しいユーザ名を入れ、続いてパスワードをいれないとOSの門が開かない)。しかし自分で、adduserをした人にはすぐ分かる。adduserとコマンドを打つと、登録すべきuserに必要な情報,userIDとか、どのグループに属するのかとか、shellは何使うのか(shellって何?後述)とか、訳の分からないことを聞いてくる。その中の一つに、お前のhome directoryはどこにするのかね、というのがあるという寸法なのだ。


2.グループって何?      Unix目次   目 次

 上で、user登録する時、グループっていうのがあると書いたが、これが又、分からない。Windowsにもネットワークを組むとワークグループというものが出来るがあれとはまるで違う。adduserというコマンドでは、グループ名に何も入れなければ、自動的にuser名をグループ名にしてくれる。で、install本には、普通はUnixは、自分のアカウント(って何?銀行じゃないのだから、昔、利用料とってた頃の残滓はもうやめたら。エッ、今もとってる!)で使い、root(これも何と捻ったというか屈折した名前なんだろう)で使うのは止めた方が良い、と書いてある。で、喜び勇んで、daresoreで、login。さて、電源切るときどうしたらいいんだろう。Unixでは地球が滅んでもいきなり電源を切ってはいけない。これならWindows9xユーザもわかる。その後、起動した時にセーフモードに入ってしまった経験があるはず。

Unixでは、shutdownとかいうコマンドを打ち込まないといけない。それも、お呪い付きで。というわけで、

  shutdown −h now  

  hはhalt。 −は、Dosでは /。optionを示す。

すると、「お前さんにはその権限は無い」と言われてしまう(Unixは何度もいうがマルチユーザOS。誰かが、LAN経由でログインして使っているかもしれないので、自分が使い終わったからといって、電源を切ってはいけないという構造になっている。電源を切れるのは管理者=rootだけである)。ここでまず一度目のpanic。Unixはいきなり、電源を切ることはご法度。なのに、shutdownしようとすると権限がないといって、実行してくれない。頭かかえて、install本をめくりまくる。(大体、Unix本は、役に立たないindexしかついていない。Unix本の著者は一度、Windows本を見てみないといけないね)

なんとか、それらしき箇所を見つけだした。もう、2:56AMだ、早くshutdownして寝ないと明日の仕事に差し支える。SU(臨時のroot?)になればいいのだね。

su 

    (ここで、SUって大文字を使うと又、叱られる)

やっと3:00AM前に寝られる。とおもったら、「君は、SuperUserになれるuser groupに入っていないよ」と、またも、拒否されてしまった。もう良い、壊れるなら、壊れろ、明日また、再installしよう。わがまま者には付き合っていられない。いきなり電源off。ということになる。

教訓; Groupって大事なんです。

 user groupの登録の時に、FreeBSDでは、wheelというgroupにしておかなくては駄目。大体、これも屈折した意識の命名だ。wheelってなんだ! adminなら、ああ、administratorかって推測もつくが、輪っぱでは、推測できない(そりゃ、舵には違いないが、わざと推測しにくい名前にしてあるんだな、これが)。この辺り、Linuxはまともな名前−−忘れたが、operatorとかなんとか−−が付いていた気がする。

 user groupにもまだ落とし穴があって、似たようなことを2箇所で入れる。最初は、userIDを入れた直後、確か、君のgroupは何にするかね、というような雰囲気の所。そのあと、2,3他の項目を埋めて、今度は、他のgroupに属すかね、というところがある。あちこちのgroup等に属したくなかったので、最初の「君のgroupは。。。」でwheelとし、2度目の所は空白にしておいた。これが、真っ青、また上と同じ事になった。ええぃ、hard shutdown−−電源スィッチオフということ。(実は、こんな事しなくても、exitでlogoutして、ユーザ名=rootで入り直せば良い。)


3. 本物のマルチユーザOS      Unix目次   目 次

 さていよいよ佳境である。ここまで読んだUnix初心者はパニックを起こしたのではないだろうか。理解不能の概念が山と出てきたのだから。UnixがWindows9xと違うところは、、一杯あるが、まず、このマルチユーザOSであるという所。これが、シングルユーザOSしか必要としない向きには、実に悪の元凶なのだ。単に、複数の人が使うということではない。これが為にホームディレクトリとか権限とかという概念がでるので、ファイルが読めなかったり、読めたファイルに山のように訂正を施した挙げ句、書き込めなかったり、Windowsでいう。XX.exeが実行できなかったり、問題が山積することになる。

 Windows9xでも、一応、家族でデスクトップの飾りや模様を違えたりするために、loginという概念は、あるにはあり、チャンとパスワードも聞いてくるぞ、と、Windowsな読者は思うだろうが、あんな子供だましなものではない。Unixのマルチユーザは本物、筋金入りなのだ。筋金入りが良い事だとは限らない。パーソナルユースでは寧ろ煩雑で不便なばかりだ。もっとも、家族とは言えprivacyは欲しいという向きには便利だし、幼稚園や小学生の子供達が無茶をしてもまず壊すことはできない。でも、電源オフが危ないかな。

 Windowsでは、login(Windowsではログオンという;Dos/Windowsでは、例によってUnix模倣で、少しだけ用語をかえるのである)してしまえば、基本的には、皆、同じフォルダーやファイルを見る事ができる。Windowsフォルダーを消す事だって誰でも簡単にできる。そんな馬鹿な事したことないから保証はできないが。そういえば、Windowフォルダーの中のswapファイル、win386.swpを消そうとしたら簡単にはできなかった。

 とにかく、マルチユーザなのだから、電源を入れた後、必ず、loginという儀式があり、ユーザ名(アカウント名;この名前に使用時間だけの課金がされる。Unixは、生い立ちはともかく、今では完成した本格的企業OSなのである。Windowsにない概念があるのは当然なのである)とパスワードを入れなければならない。Windowsは、ユーザ名やパスワードを聞いては来るが、キャンセルボタンがあるって、これって、何のためのパスワード? それに、最初にパスワードを入れずにOKすれば、パスワードは登録されないから、次からは聞いて来ないし、大体、そんなものは、windowsフォルダーのdareka.pwl(darekaは、貴方のlogin名)を消してしまえば良い。networkに繋ぐとこの手は効かなくなるが、tweakUIを使えば、パスワードの自動入力なんてこともできてしまう。Unixはそんなことはできない(Unixな人達はなんでも出来てしまうから、Unix版tweakUIを作ってしまうかも知れないので保証はしないが)。この儀式が終われば、PCを使えるようになる。まあ、Dosのコマンドラインみたいな状態になるが(本当は逆。DosはUnixより10年以上も後に登場した)、その時、Unix内にある全てのファイルに触れるわけではない。Windowsでも隠しファイルというものがあるが、あの隠し属性は誰でも簡単にずすことができるし、付けたままで見えるようにする事だってできる。Unixでは、一般ユーザにはそんなことはできない。

 Unixでは、ユーザに各種権限を与える事ができるようになっていて、それをグループ名で区別している。まあ、部長会、課長会みたいなものだ。その権限を与える最高権力者、社長か、会長か日本では判然としないが、まあ社長だろう。このユーザをrootという。ユーザ名もrootである。だから、rootのパスワードを知るだけで貴方もrootになることができる。login;rootといれ、passwd;xxxxといれるだけである。このroot、世界共通だから、パスワードだけ分かれば良い(この理由で、ネットワーク経由login名はrootを許さない。計算機室で、あるいは貴方の席で見知らぬ人間がrootと打っていたらすぐ怪しいとわかるが、ネットワークではそれが難しい)。ともかく、このrootでのloginを不正にやる連中がクラッカー;crackerだ(これをハッカーというのは、計算機がPCによって素人化してきた頃、何もしらないマスコミの駆け出し記者たちが誤用したもの。否、そうではない、辞書によると、などとたわけた事を言う素人さんもいるが、言葉というものは、それが使われるコミュニティでどんな意味で使われてきたかが問題であって、汎用の辞書の意味ではない。釈迦に説法とはこのことである。計算機コミュニティでは、ハッカーとは、例えば若き日のBillJoyとかLinus氏みたいなバリバリのソフト書き屋のこと)。一般ユーザとは、自分のホームディレクトリにたいして以外は何の権限も持たないユーザの事だ。これが何の事かWindowsユーザには分からないところだが(Win98では、ファミリログインなどで多少経験できるが)、Unixでは一般ユーザは、原則、自分のホームディレクトリしか見えない。エクスプローラで全部見えてしまうWindowsとは違うのである。簡単に言えば、各一般ユーザは自分のMy Documentsフォルダしか見えないと思えば良い。

 root(計算機管理者。家では自分。一般ユーザとの一人二役)が、あなたをユーザとして登録したとき、あなたのホームディレクトリというものが出来て、あなたにはそこしか自由にできない。そこがあなたの領地なのである。Windowsのwindowsフォルダーに相当する所は、Unixの場合、一つにまとまっていないが、例えば基本プログラムは、/bin(Windowsの、c:¥windowsの一部。 Dosの¥は、Unixでは、/ 。これはDosがUnixの階層ファイルシステムを真似した結果なのだ。日本語Dosでは¥だが、英語Dosでは、何と\を使っている)にあるが、そんな所は、ユーザからは見る事はできても、触れない。触れないとは、例えば、

  rm  xx  (dosでは、del xx。rm=remove)

とやってみると、permission denied といわれる。君にそんな権限は無いよ、ということだ。

 マルチユーザという性質に関わってpermissionという概念が出てくる。許可ということだ。上で、permission deniedといわれたと言う事は、逆に見ると、permissionが出されていれば出来てしまうということを意味する。Unixでは、3つの許可の出し方がある;

 r;read    読み
 w;write    書き
 x;execute  実行

である。/binのファイルといえども、r許可は一般ユーザにも出ていて読む事はできる。xも出ている。でないと、基本的なコマンドが実行できない。しかし、w許可はでていない。

 これらの理解がないと、WindowsからUnixに移った時、なかなか面倒な事になる。例えrootであっても、例えば、インストールした何かのソフトの起動optionを書いたファイル、Windowsでは、XX.iniって奴だが、このサンプルファイルをそのソフトのフォルダから自分のホームディレクトリにコピーして、(これもWindowsと異なって、全ユーザ(ここがマルチユーザなのですね)共通のoptionの場合、あらかじめ決められたディレクトリに置くが、個々のユーザ独自のoptionは各自のホームディレクトリーに .で始まる名前のファイルを置く。これがあると共通optionよりも、当然だが、それが優先される。notepad.iniのようなものは、Unixでは、 .notepad のようになるだろう。イニファイルならず、ドットファイルと呼ばれる。)カスタマイズしようとして、散々書き換えた後、上書きで書き戻そうとしても、read−only属性だから書けないと言われることがある。rootにさえ、wを許可していないのだ。勿論、rootだから、w許可を自分で出す事ができるので、permission-deniedではなく、read−onlyなのだろう。

 しかし、vi(という、edlinよりは多少ましなeditorで、上記の状態になると、初心者は立ち往生になる。書けないのなら、中止して、vi を終わろうと。 :q (q=quit)という終了コマンドをだすと、お前さんは書き換えたのだから、それを書き戻さないで終わることはできないといわれる。それではと、:w とか、ZZとかやると、このファイルはread−only属性が付いているから書けないよと、前門の虎、後門の狼状態になる。この辺りで、Unixの設計者はアホか(もっとも、viはUCBのB.Joy作で、オリジナルUnixの設計者ではないが)とののしりの言葉がでる(因みに私は、56789回これを吐いた。まあ、本当のところは、主記憶が8KBとか16KBとかの計算機のころのOSなのだから、素人向けにメモリーを食う懇切丁寧ではあるが無駄な処理などしたくなかったのだ。HDDなんて目の玉が飛び出る程高かったから付いていないのが普通だったし。だから創業者はアホではない。しかし、90年代になってもまだそんなコンセプトにしがみ付いて改良を怠った三流技術者は同語反復になるがアホだね)。ついでにこんな事への対処が直ぐに出て来ないハウツー本書いた奴はアホだ、馬鹿だ、金返せとののしり捲らないと気が晴れない。まあ、Unix側は、なんと言われようと、Unixには(良き)user Interfaceなんてしゃれた概念はない。知らぬお前さんが悪いのさ、アホメって態度だ。「たこ」を大切にすると言われ、それを自負しているLinuxコミュニティでさえ、看板に部分的(親切な人々も居る)偽りがあり、MLで下手に質問すると、過去ログをみよ、とか、もっと下調べしろとか言う怪しからん連中もいる。なかなか辛い世界だ。ああ、忘れない内に、こんな時は、

  :q

と!を付ければ、強制終了できる。X−window(これも、X−window systemといわにゃいかんと、うるさい人もいる)で、動いているときは、他のxterm(Dos窓)からshutdownしてしまうという手もあるが(viだけをkillすれば良い?そんな腕があればこんな状態にならないゼ)、コンソールから動いている時は(純粋Dosモード)本当に困るだろうね(Fnで切り替えなんて知ってるわけないから)。まあ、電源offだ。それで、ファイルが壊れたら、fsck(WinのScanDisk)しても良いけど、何事も練習、もう一度installしよう。10回もやれば少しは慣れる。

 マルチユーザだけど、キーボードとモニタは、PC/AT互換機では1台しか付かないのだから一度には一人しか使えないとWindowsユーザは思ってしまうがこれが又、間違っている。ネットワークが付いていたりすると、そこから誰かがXやtelnet(リモートdos窓。Winのネットワークコンピュータより当然ずっと強力だ)でもしている可能性がある。これなら、ユーザ登録してあり、イーサネットなどがついていれば、何人でもloginできてしまう。ということは、勝手にshutdownしてはいけないのだ。でも、家庭で一人で使っている分にはこんな事は気にしなくていい。

 さて、ユーザの中でも、rootは万能者だが、インストール中は万能者でなくては困る。一般ユーザには、例えば、ハードの設定などは許されていない。ハード設定では、OSがそのハードの素性を調べにいったまま、返り討ちに会いカーネルを巻き込んで固まってしまう事だってあるから。つまり、電源断か、ハードリセットしか手が無いという状態になることもある。こんなことを一般ユーザに許すわけには行かない。インストール中には、OSはどんなデバイスが付いているか調べて、ユーザに確認してくる。それで、とにかく最初は、root状態だ。しかし、インストールが終わったあとは、OSを壊すこともできるrootではloginすべきではないというのがUnixの考え方で、installerは最後の段階で、一人だけユーザ登録させるようになっている(別に一人でなくても良いけど、インストール中に100人も登録したいという人はいないでしょ)。


4.パーテションの変      Unix目次   目 次

 Windowsユーザでも、パーテションの概念を知っている人は、今や誰でもパソコン状態の最近でさえ、圧倒的に少数派だろう。PC−Unixをやろうなんて思っている人にはさすがにそんな人はいないだろう。もし、いたら、止めときなさい。Windowsをもう少し勉強してからにした方が、Unixの為にもあなたの為にもいいと思う。

 PC−Unixのパーテションの概念は多少面倒だ(Linuxは簡単)。というのは、PC/ATでは、そもそも4つのパーテションしか作れない。MasterBootRecord(MBR)と呼ばれる、0cylinder、0head、1sectorの512byteには、BIOSから起動されるOSのinitial(というか、sub-initialというか) program loaderと、パーテションを管理する表が入っているが、この表には4つのエントリしかないからだ。Dos(当然、Windowsも)では、その為に、基本パーテションと、拡張パーテションの2つのパーテションしか作らせない。その他のパーテションは論理パーテションと呼び、拡張パーテションの中に作らせる。fdiskをした事がある人は、パーテションを作る作業が面倒なことに気がついたはずだ。8個のパーテションを作るのなら、一度に同じレベルで8個作らせれば良いではないかと思った事はないだろうか。実際には、基本パーテションを作り、次に拡張パーテションを作り、更にその拡張パーテションの中に論理パーテションを作るという煩雑な手続きがいる。とにかく、これで、C〜Zのドライブを作る事ができるようになっている。

 Unixだって、元々は8つものパーテションを使っていた。こんなものはMBRでは扱えない。だから、Dosの論理パーテションといい、Unixのパーテションといい、皆OSが自分で面倒みることになる。BIOSは与り存ぜぬ形だ。とはいえ、一つは、MBRの表の中にそのOSへの入り口を登録してもらわない事には、initial program loaderであるBIOSからの入り口がない。それで、一つだけそこにパーテションを取る。このBIOSが認識できるパーテションの中にUnixとしてのパーテションを幾つか切る。Dosの論理パーテションみたいなものだ。FreeBSDは、この論理パーテションを普通の意味でのパーテションと呼び、本当の、というか、MBRに登録してあるパーテションは、スライス(slice)と呼ぶ。これが、また、FreeBSDからinstall中に出てくるメッセージや、manualと統一がとれていないから混乱する(Linuxではこのあたりは凄く簡単。sliceなんて概念もなく、Windows使いにも分からない事はない)。

 Windowsでは、一つのパーテションの中にOSをinstallする。そんな事当然だろと思っているWindowsな貴方、UnixはこのWindows常識を裏切るのだ。Windowsでは、また、大抵は、一つのパーテションしか必要がないため、Windowsの一般ユーザはパーテションなどという概念は知らなくてすむ。そもそも、Windowsは、基本パーテションにしかinstallできないし(Linuxは何と拡張パーテションにinstallできてしまう)、swap領域も、ファイルとして、Windowsフォルダの中にできる:win386.swp!!

 所が、Unixでは、普通は、こんなことはしない。Windows常識は、Unixの非常識、それもトンデモナイ非常識なのだ。swapなんていう、ショッチュウ読み書きしているものが何かのはずみでOSの心臓部−−kernel−−を壊すかもしれないではないか。ユーザ領域だって危ない。まあ、言ってみれば、体育館のような大きな部屋(パーテション)で、台風が窓ガラスを割ったら、部屋全体が荒れてしまうが、間仕切りがしてあれば、窓が壊れた部屋だけに被害が限定できる。隔壁の無いタンカーや、戦艦大和を考えても良い。これは恐い。それで、unixでは、/、/usr、/var、などのディレクトリやswap領域を別(論理)パーテションとする。これが理解できないと、install時に、fdiskとかいう、Windowsのインストールでは出てこない訳の分からんことをなぜしないといけないのか、これまた訳がわからない。因みに昔のLinuxでは、swap以外は、全部/に入れてパーテションを切らないdistributionもあったとの事。2000年、再びそうなっている。筆者は今でも、そうしているし、平気でrootで使っているというUnix反逆人間だ。パーソナルユースなのだから別にそれで不都合はない。Unixがファイルを壊すより、HDDがハード的に壊れる方が恐い。


5.mountの恐怖      
Unix目次   目 次

 さて、fdiskにおまけして、マウントポイントを決めろというUnix初心者には理解できない理不尽な事をinstallerは要求してくる。installの簡単なはずのLinuxでさえ、そうだ。Windowsとマルチブート状態でinstallすると、「Windowsの区画(パーテションの翻訳語)をLinuxから使うことが出来ますが、そうしますか」というような事を聞いてくるので、それは便利だと感激して、はいはいと答えようものなら、その直後、このマウントポイントを聞いて来てWindowsユーザを途惑わせるのだ。

 さて、4. で、Unixでは、幾つかのディレクトリは、別パーテションに作られると書いた。パーテションって、Windowsでは、c:とか、d:とかいうドライブだ。

  c:¥windows 

これは分かる。ところが、例えば、windowsフォルダーの下にある、tempフォルダーが物理的にはc:にはなくって、d:ドライブにあるというのがUnix流なのだが、これってどうやって表現するのだろう????

 (*) c:¥windows¥d:¥temp  ??!?状態だ、これは。

 この辺りが、Windowsの概念ではまるで理解できない。

 それで、Unixにはmount(マウント)という概念が出来た。まあ、「くっ付ける」とでも理解しておけば良い。
(*) にかいた表現を許すためには、パーテションであるd:を、c:windowsにくっ付ける(と言うかエクスプローラでみると、windowsフォルダーの中にいれる)操作がいる。これを行うコマンドがUnixには作ってあって、mountという。

   mount  d: c:¥windows 

という概念だ。これで、c;¥windowsの下に、d:がくっ付いた事になる(Windows的には、Windowsフォルダの中に、d:フォルダが入っている状態)。これの表現は、Dosの場合を仮定して書いているので、実際のUnix表記ではないが、とにかく、概念はこうだ。こうすると、d:はWindowsフォルダーの中に入れられた(mountされた)ことになるので、(*)の書き方で、tempにアクセス可能になる。

 さて、正統Unix表記に戻ろう。Unixにはドライブの概念は無い。要らないのだ。何故って? そういう風に設計してあるのだ。パーテションを作る時に、installerはそのパーテションのマウントポイントを決めろと言ってくる。例えば、あるパーテション、例えば、wd0s1fのマウントポイントを 

 /usr

とすれば、そのパーテションは /usr ディレクトリということになる。

  註; wd0s1f=wd0−s1−fの様に区切って読む。
     wd0のHDDの1番目のsliceのf番めのパーテションの意
     wdはWinchesterDisk? 昔のHDDは、リムーバブルだった。
     固定HDDが出来たとき、変な物が出来た物だと思ったが、今では普通になって
     しまった。この固定HDDのことをウィンチェスタ・ディスクと読んだ。
     wdはその名残か?0は計算機は何でも0から始まるのだ。
     IDEは、0、1、2、3、と4台付けられる。

Unixでは、c:¥に当たるのが、   だ。 はルートディレクトリ(root directory)と呼ばれる。3. に出てきた管理者としてのrootとは何の関係もない。 / (デバイスとしては、wd0s1a)と、/usr(wd0s1f)は別のパーテションだから、/から/usrは直接アクセスできない。もう既に、/がusrの前にあるから出来るみたいに思えるが、それは記述的に「書いただけ」で、論理的にも、物理的に繋がってはいない。それで本来、繋ぐ=くっ付ける=mountするためには、次の操作が必要だ;

  mount  /dev/wd0s1f /usr 

 ただ、このような、OSにとっての基本ディレクトリ群はOSが起動時に自分でmountするので、ユーザがやる必要がない(自動でやらない起動モードもある)。

 ところが、FDDや、CD−ROMなどを使おうとすると、このmountという概念がもろに表面に出てくる。Unixにはドライブという概念がない。ドライブも全てファイルという形式で扱う。 例えば、IDEのprimary/masterのHDDは、FreeBSDでは、c:ではなく、wd0、Linuxでは、hdaなどと表現され/devの中のwd0、あるいは、hda(hdはHardDisk。は1台目。b、c,...と続く)というファイルとして扱われる。まあ、何と思ってもUnixの勝手で、Dosのc:だって「ドライブ」と呼んでいるだけで、c:という「ファイル」だと思ったっていいわけだ(う〜ん、チョット無理。フォルダーならまだ良いが。c:¥はフォルダーだし)。要は約束事にすぎない。で、wd0は、これまた約束で、/dev(deviceだね)ディレクトリにあるので、このHDDへのアクセスは、/dev/wd0にアクセスすることになる。(実際には、スライスやらパーテションがあって、
もう少し複雑 になる。/devを覗くと、wd0s1やら、wd1eやらがみつかるだろう)

 IDEのCD−ROMは、/dev/cd0 だし、FDDは、/dev/fd0 だ。ファイルと強弁しようがどうしようが、どう考えてもこれはドライブで物理的に別物だから、何とかして、/以下のどこかに繋げないとアクセスできない。

  cp −r /mydocument /dev/fd0  


として、FDに書けても良いと思うのだが、これは出来ない事になっている。

 これができれば、c:とか、d:とかという表現に馴染むのだが。

 で、どこかにmountしなければならない。直感的に分かり易くするために、/cdromのようなdirectoryを作って、そこにmountしよう。Windowsユーザなら、こう書きたくなる;

  mkdir  /cdrom
  mount  /dev/cd0c  /cdrom

 (註;cd0cの最後のcはUnixのパーテションで、CDのslice全体を表す。後述の予定)

なんとこれがUnixでは一般には許されない。
mountとは、物理的なドライブを付けることではない。
ファイルシステムを構成する論理的操作なのだ。

だから、CD−ROMの中がどんなファイルシステムになっているのかを陽に宣言しなければならないのだ。普通、ISO9660フォーマットだから、

 Linux;
  mount −t iso9660  /dev/cdrom  /cdrom

 FreeBSD;
  mount −t cd9660  /dev/cd0  /cdrom

とする。−tは、type というoptionを指定している。filesystemの、あるいは、formatといってもいいが、typeはISO9660だよということだ。同様に、DosでformatしたFDDは、FreeBSDでは、

  mkdir /fdd
  mount −t msdos  /dev/fd0  /fdd

とする。

 このFDがUnixFileSystemでformatされていれば、この−t msdos optionは勿論不要である。

 これからわかるように、FDDにフロッピーを入れずにmountしようとしてもできない!! Windowsのようにデバイスをエクスプローラから見えるようにする操作ではないからだ。Windowsでいえば、CD−ROMや、FDDのアイコンをダブルクリックして内容をみようとする操作まで含んでいる。ユーザがlsして、それを見ようがみまいがである!OSは見ているのだから。しかも使い終わったらキチンとアンマウントしないと、読んだだけならまだ良いが、FDのように書いたりしてあると、なかなか厄介な事になる。とにかくFDを取り出す前に、

  umount /fdd   (umountではない)

だ。

 なぜ、厄介かというと、Unixは、遅延書き込みをする、writebackのcacheだ。操作としては、書き込んでも、実はまだcache(=DRAM。主記憶)に書いただけで、FDには書き込んでなかったりする。umountせずにいきなり取り出したらout!だ。

 ところで、

  mount −t msdos /dev/fd0  /fdd

こうしてFDをmountして、

  cd /fdd

として、/fddのなかで、いろいろ仕事をして、そのまま、

 umount /fdd

とすると、fd0はbusyだからumountできないといわれて途方に暮れることがある。必ず、/fddから出てからアンマウントすること;どこでもいいから/fdd以外のところにcdする(これはNT/2000でも同じだ。エクスプローラの左欄で開いているフォルダを削除しようとしても共有違反になりできない)。

  cd /
  umount /fdd

このようにumountは、デバイスをmountしたmount pointを指定するだけで良い。幾らUnixでも、そのくらいは面倒見てくれる。


6.distribition、version、shellの怪      Unix目次   目 次

 これからPC−Unixを始めようとする人の為にはこの項から書き始めるべきだったかもしれない。このdistribution(版元?)、version、shellなどが手持ちのマニュアルと違うと、コマンド体系や、ディレクトリ体系が異なり、初心者は大いに無駄で、不毛な苦労をする。Unixを始めるのなら、良い本を探して、その本についているCD−ROMに入っている、distribution、versionの物を使うべきだ。shellも本の通りのものをinstallした方が良い。FreeBSDの場合、distirbutionとでも言うべきものは、

  ftp.freebsd.org

から一元管理の下、無償で配布されているので、distributionによる様々なコマンド の違いというものは無いが、Linuxは、Slackware系統、RedHat系統など、沢山あり皆、細部が、などという程度でなく大きく異なるので、マニュアルが唯一頼りの初心者は、あるはずのコマンドが無いなど途方に暮れることになる。筆者も、Slackware本で、TurboLinuxを使って閉口した。WindowsなどのGUIなら、コマンドがアイコンやメニューの形で見えるので、それらしい物を手当たり次第試すこともできるが、CUIのUnixでは何も見えない闇の中で、自分で何かコマンドを創造/想像して、入れなければならない。

 例えば、あるソフトをinstallしたいとき、どんなコマンドをどんな形式で入れたらいいのかさっぱり分からないのだ。適当に、install、setupなんて入れても駄目なのだよ。エッ、X−windowがあるじゃないかって、ありゃ、GUIではなく、graphicalにwindowが表示されるだけ。GはあってもUI(ユーザインタフェイスは無い(も同然))xtermや、ktermというDos窓みたいなものを開いて、コマンド叩く。最近は、GNOMEとか、KDEなどが、かなりGUIっぽくなってはきたが。。。実に奇麗な画面だ。こんなものがどうして只なんだろうと嬉しくも思ってしまう。でも、これって、超重くって、Pentium(P54C,P55C)程度では歯が立たない。P−IIかCeleronの300MHz以上は欲しい。メモリーは64MB以上積んでね。

 FreeBSDはdistributionに悩まされることは無いが、versionは時々、大胆にupされ、それまでのディレクトリ体系が根本から覆されることがある。重要な設定ファイルが名前が変わってしまっていたり、あるべきディレクトリが無くなっていたり。。。新月の夜の富士の青木が原樹海の中で、懐中電灯も、磁石も、地図も無くなってしまった心地になること請け合いだ。

 shellというのは、Dosのcommand.comのようなものだ。unixではこれを取り替えることができる。当然、コマンド体系も名前も違ったりする。Linuxでは、最新の物が最初から付けられている。例えば、TurboLinuxではbashがついているが、FreeBSDはclassicalなshが付いてくるので、自分で、bashやtcshのような現代的shellに取り替えないと、不便でしかたない。不便でとは、unixはあくまでCUI(CharacterUserInterface)なのだから、長〜い、optionを付けたコマンドの最後の1字で間違えたために最初から叩きなおしたり、

  vi /usr/X11R6/lib/X11/afterstep/system.steprc

なんてものを、全て自分の力だけで叩かなければならないということ。もっとも、GNOMEでは、midnight commanderとかいうexplorerみたいなカッコイイfile managerがあったりするが。でも、やっぱり使えない。



予定;

パーテション再び;wd0s1fって何?
 . で始まるfile
 x−window system
  shellってどんな貝殻?
 tar は何故 tar xvfz なの?
   ls aF ってやるといきなり、helpにもならないhelpが出てきて叱られるのに、tar は tar xvfz なのか?
役立たずman

Unix目次   目 次