67.HDDのローレベルフォーマットは行ってはならない       目 次

直径12インチの円盤に2Bしか入らなかった時代のHDD(この頃のドライブは洗濯機ほどあった)と異なり、2000年のHDDは10BPSIもある。あっという間に100GBPSIになるだろう。GigaBit Per Square Inchとは1インチ=2.5cm角の正方形の中にGbit入るというHDDにおけるbitの面密度の単位である。因みに、1円玉の直径は2cmなので、10GBPSIとは、これ1枚の裏表両面の面積の中に10Gbit入るということである。

出来立ての円盤:Diskは、アルミやガラスの基盤に磁性膜を塗ったものである。まだ情報を書けない。コピー用紙のような真っ白な紙に1行40字、36行で文字を奇麗に揃えて手書きしていくのはなかなか難しい。レポート用紙のような罫線が欲しいし、字レベルで揃えようとしたら原稿用紙が欲しい。フォーマットは、良くこのことに喩えられる。罫線を引くことだと。これはなかなか良い比喩で分かりやすい。多分、preambleやsyncronization用の信号を書いているのだろう。preambleとは「助走」のことで、111111111111.......と書いてある。headはこれを見つけて読んだり書いたりする為の心の準備をする。技術的にいえば、セクターの入り口を見つけたということである。その内に、010101010のような同期信号が来て、いよいよセクターのデータ部に突入する。−−のだと思う。現実の最近のHDDの方式は知らないが、周辺装置の作り方の原理なんてものは大体こんなものである(まあ、間違っていても、本論に影響はない)。formatとは、preambleやsync.を書き込む=罫線を書き込む操作である(勿論、もっといろいろなことを行っている)。

昔のHDDはbit密度が薄いから、罫線を書くのも楽なものである。A4レポート用紙に1cm幅の罫線を書くのに技術はいらない。ものさしと鉛筆でいい。しかし、1円切手に、1000本の罫線を引けと言われたら、これはなかなか大変である。しかし、本当に大変なのは、細かく引くことそのことではない。そのような制御は既にHDDに組み込まれているのだから、コマンド一つで済む。問題は、現在のような高密度な円盤になると、熱膨張が無視できなくなることにある。トラック間の距離と、温度1度の膨張の大きさとどちらが大きいか、何度聞いても忘れてしまうのでしらないが、とにかくそれが無視できないのである。(

何しろヘッドは、円盤表面上、0.05ミクロンとか、0.03ミクロン上を空力的に飛んでいるような超技術なのである。小さいと思われている細菌の大きさは1ミクロン程度である。鏡面に見えるピッカピカのdisk表面もヘッドから見たら、丘あり、谷あり、森ありで凸凹の相模平野のように見える。これでよく、PCに振動を与えても、ヘッドが円盤に接触、不時着しないものだと思うが、このレベルになると、空気は相当に固いので、100Gや200Gの振動には平気で耐える。さて、20GBをformatするには、それなりの時間がかかる。その間にPC内の温度は徐々にあがり、円盤も徐々に膨張する。膨張しつつある(現在進行形である)円盤に書いたformatがどんなものかは、風船を膨らませながら線を引いてみたら分かる。

メーカは、半日も一日もHDDを恒温室に入れて、温度制御してローレベルフォーマットしている、ということである。ATA100や66のカードにローレベルフォーマットのアプリが付いているからといって、カードのメーカは保証などしていないはずである。自己責任モードである。340MBの3.5インチHDDがPC−98だかMacだかのもので、PC/ATで使いたい、駄目元である、というのなら止めないが、2年前に買った10GBをローレベルフォーマットする事は、私ならしない。


ちょっと例によって暗算してみよう。
40GBなどというHDDでは20GB/プラッタである。プラッタというのは円盤のことである。

30000TPI位だとすると、(20000かも知れないし、40000かも知れないが。尚、TPI:Tracks Per Inch)
0.8ミクロン/トラック間

アルミの膨張率 0.232ミクロン/cm・度C

1度C温度が上がると、1cm当たり、0.232ミクロン延びることになる。
直径3.5インチ=8.8cm円盤では半径方向に
0.232x4.4=約1ミクロン延びることになる。
つまり、
温度が1度上がるだけで、トラックの1本分が増えたことになる。
尚、稼動中のHDDは、懐炉代わりになる位暖かい。いや熱いかな。
(2001.3)

再 論

ローレベル・フォーマット(low-level format)とは何のことでしょうか?

ここで、居候が、してはいけないと言っているローレベル・フォーマットは物理フォーマットのことです。それは上に示した工程で行われます。

実は、ローレベルフォーマットという言葉、いろいろな意味で使われています。まず、定義の例を見てみましょう。

定義の例

ローレベルフォーマット 【low level format】

読み方 : 「ローレベルフォーマット」
別名 : 低レベルフォーマット, 物理フォーマット

磁気ディスクのセクタ配置をすべてやり直す操作のこと。「低レベルフォーマット」「物理フォーマット」とも呼ばれる。ディスクの全領域に渡ってセクタ情報を書き直すため、通常のフォーマットとは比べ物にならないほど膨大な時間を要する。ディスクを使用するには最低1回ローレベルフォーマットを行う必要があるが、1回ローレベルフォーマットが行われたディスクであれば、異なるファイルシステムで使用する場合もローレベルフォーマットを行う必要はない。ローレベルフォーマットされたディスクの内容は完全に消去され、いかなる手段を用いても復旧できなくなる。市販されているハードディスクやMOなどの大容量記憶媒体は、既にローレベルフォーマット済みの状態で販売されているが、フロッピーディスクはローレベルフォーマットがされていない状態で販売されていることが多い。
   −− 
http://www.e-words.ne.jp/view.asp?ID=2415より


これは、基本的な定義で、上記工場で行われている本来のローレベルフォーマットです。

次に、SeagateのHPから

What does "low level formatting" mean?

Actually the term "low level" is a bit of a misnomer. The low level process first used years ago in MFM hard drives bears little resemblance to what we now call a "low level format" for today's ATA (IDE) drives. A better name for today's low level formatting utility is intermediate- or mid-level formatting. This is sometimes referred to as the "initialize" or "re-initialize" process. The basic purpose of a mid-level format is to erase everything currently on the drive.

   −−  http://www.seagate.com/support/kb/disc/low_level_ata.htmlより

ローレベルという用語は実際の所、すこしばかり誤っている。以前、MFMハードドライブで初めて用いられたローレベルプロセスは、現在ATA(IDE)ドライブで使われている「ローレベルフォーマット」とはほとんど似ていない。今、ローレベルフォーマットと呼ばれている語は中間レベルフォーマットと読んだ方が良い。これは、時には、「初期化」あるいは「再初期化」プロセスと呼ばれる。この中間レベルフォーマットの基本的目的はドライブの上から全てを消去することである。
  −− 居候訳


実際には、BBSなどでマニアが使う言葉は、このSeagateの中間レベルフォーマットの意味です。0−filling、IBMのwipe.comなどがこれにあたります。ドライブ全体に渡って、2進数の0を書き、全てを消し去ってしまうことです。本来のフォーマットとは似てもにつきません。QuantumだったかのHPには、これは、ローレベルフォーマットではない、と言っていますが、こちらは厳密な意味で使っているのでしょう。実際、Seagateもこれは中間レベルフォーマットと読んだ方が良いと言っているので、0−fillingは、ローレベルフォーマットと呼ばない方が良いでしょう。

しかし、相変わらず、間違って呼ぶ人も多いようです。

ディスクの上には数レベルにわたって、bitが書き込まれています。OS自身が書き込んでいる、あるいはもっと原初的なBIOSが書き込んでいるファイルシステムの外のデータはファイルシステム--ファイルシステムの中身をみせる道具がエクスプローラや、ミッドナイトコマンダGMCと呼ばれるファイルマネージャなのです--では表示できません。また、MBRやPBRと言われる場所もみえません。さらに、その外側にはファイルシステ自身を入れるための区画、セクター位置情報がかいてあります。このセクター位置情報が物理フォーマットなのです。

1111..1111というプリアンブル(助走)データがまずあり、これをヘッドが見つけると、ア、そろそろセクター本体がくるな、と読み取り回路は準備をするわけです。その後、1010101のような同期信号が来てその後、本物のファイルのデータビットがきます。このプリアンブルと同期信号が物理フォーマットと言われるものです。

さて、誤って使われているローレベルフォーマットの意味には、誤っているだけあって、いろいろあり、それを更に誤って解説したものがあるので、自身でディスクを扱ったことがないと、何が正しいのかさっぱり見当がつきません。上でも書いた0フィルといって、物理フォーマットは残して、セクタの中のデータをすべて0で上書きするものをローレベルフォーマットと呼ぶものもありますが、これは誤りです。まあ、それで、OSやRAIDシステムが書き込んだ、MBR、PBR情報まで全て消えてしまえば、その影響はなくなります。しかし、ひょっとしたら、Bad Sectorという使えないセクタの位置情報を書いたセクタまでまで消してしまうかもしれません。この場合、その影響は甚大です。読み取り/書き込みエラーが出るようになるからです。

色々なフリーソフト、あるいは、HDDメーカが提供しているローレベルフォーマットとは本当の所、何か、それを良く読んだ上で、危険承知で使うものでしょう。

ローレベルフォーマットが欲しいという人が面した最大の問題は、MSのfdiskが余りに弱体であることによります。Linuxをインストールすると、Windowsのfdiskでは必ず、fdiskできなくなります。これは困ったもので、Linuxデストリビュータにはもっと考えてもらわなければなりません。この理由は簡単です。最近のLinuxは必ず、拡張パーテションの中にLinuxのパーテション、swap、/、/usr..、を作ります。このLinuxのパーテションはWindowsのfdiskからは論理パーテションに見えます。しかし、Windowsの論理パーテションとは異なる構造をしていますので、いざ、fdiskが消そうとすると、消せないのです。これを消さないと、拡張パーテションは消せません。このLinuxの論理パーテションを消すには、Linuxのfdsikか、DR−DOSのfdsikに/xスイッチを付けて起動すれば消せます

結局の所、このSeagateの説明が現状を一番よく表わしています。

2001.9



68.真のAIは実現可能か?       目 次

これは難しい問題である。認識の説明をしていると、どうしても哲学のような話になってくる。 真理の攻略戦における哲学の役割は前線の濠で、科学は真理の占領地帯、その後方が安全地帯だそうである。工学はこの安全地帯で仕事をしているというのが古典的解釈であろうが、どうも現代には当てはまらない。

ガリレオや、ニュートンの時代の様に、眼に見えたり、感性で経験できるレベルの科学なら、哲学者も同じ条件で参加でき、自分なりの見解を持てたであろうが、今日のように、光速の99.999999%の速度とか、原子、電子のようなミクロのレベルの振る舞いを考える()となると、もう感性による経験はできるものではない。科学者のみがかろうじて間接的に経験しているに過ぎない。そうなると、哲学者は感性では感知できないので、理性による思索:形而上学だけに頼ることになる。しかし、カントが純粋理性批判で論じたように感性を超えた理性による思索はアンチノミー:二律背反に陥り、全然頼りにならず、従って、ウィトゲンシュタインに従い、語り得ぬことは沈黙しなければならなくなる。哲学はもはや無力なのであろうか。

哲学は一つの考え方に過ぎないので、カントもウィトゲンシュタインも別に真理を語っているわけではないが、私は与する。認識に関しても同じことがいえる。大脳の作用は直接には見ることはできない。ここでは哲学者はまたも無力であり、工学者の我々は安全地帯に安穏としているわけにいかず、前線で濠を掘っているのである。為に、哲学のような話し方になるのである。

情報工学だけではAIが今以上に飛躍的進歩を遂げるのは難しい。しかし、その情報工学の力で、ヒトゲノム計画が達成寸前である。人の遺伝子:設計図の全てが、形式的に読み取れるのである。次は、その意味を解読しなければならないが、それが出来たとき、スパイラル的にその分子生物学の成果は情報工学に帰還され、AIに飛躍を起こさせる原動力となるだろう。2001.3


光速に近いところでは、ニュートン力学は役にたたない。原子レベルのミクロの世界でもニュートン力学は役にたたない。前者では、1905年のアインシュタインの(特殊、及び一般)相対性理論が必要になり、後者では1900年のプランクから始まる量子力学が必要になる。結局、ニュートン力学は、これらの力学の、日常レベルのスケールにおける近似理論であったわけである。

相対論と量子力学、この現代力学においては、「観察」という行為が理論の基底を支えている。つまり、物理現象は観察から超然として意味を持つわけではないという立場である。我々は、たとえば、飛んでいる飛行機の速度は我々が観察する、しないに拘わらず決まっていると、そう思っている。あるいは、地球は我々が観測しようがしまいが決まった速度で公転していると思っている。量子力学はそれを否定する。ただ、そのような大きな対象においては観察の影響はあまりに小さいから感性に感知できないだけであると言う。より正確にいうなら、我々は、地球や飛行機の位置と速度を同時には正確に知ることはできない。飛行機の位置を決めると、その位置における速度は決められず、0から無限大までにひろがってしまう。これは、飛行機は決まった速度で飛んでいるが、我々が測定できないだけであるという意味ではない。飛行機は全ての速度に渡ってそれぞれの確率で飛んでいるのだそうである。ハイゼンベルグの不確定性原理である。

あらゆる物理的現象は、人類が存在しようがしまいが、厳然として決められた動きをしていると我々は、思っていたのだが、相対論、量子力学においては、それは無意義である。ニュートンによれば、人間の存在に関係なく、時間は宇宙のどこでも同じように流れているのだが、相対論はこれを否定するところから出発している。場所が違えば、同時性は定義できない。時間とは何であろうか?変化である。変化とは物か、事象の変化である、宇宙に何もなかったら、変化を計るすべはない。何も無いのだから何も変化しない。従って、そのような状態では時間は存在しない。時間という確固として存在していると思っていた事象さえ、存在の基盤は危ういものなのである。というのが現代物理学の結論である。

こんなことを、理性だけで考え出したとしたら、多分、狂人だろう。しかし、これらのことは、物理現象をより正確に説明する努力の中からえられた経験的な結論なのである。勿論、おそらく、相対論も、量子力学もまだ完成された理論ではなく、100年もしたら、ニュートン力学のような扱いになるだろう。その兆候はある。相対論においては双子のパラドックス、量子力学においては半死半生の猫のパラドックスである。特殊相対性理論によると、運動中の物体は時間が遅れる。αケンタウリ探検ロケットに人間が乗って打ち上げられたとする。その速度は、光速度の99.9%だとしよう。地球から望遠鏡でそのロケットを見ていると、時間がゆっくりと過ぎている。ここまではまあ、納得できる。異なる場所にいるそれぞれの時間の比較はできないからである。勿論、ロケットの乗組員にとっては、時間はゆっくりなど動いているという意識はない。何も変わっていない。さて、このロケットには一卵性双生児の一人が乗っている、もう一人は地球に残っているとする。ロケットから地球をみたら、相対性により地球の時間はゆっくり進んでいる(地球は自転、公転しているので、特殊相対論の対象である慣性系ではないし、正確な相対性は確保されていない、というのなら、同じロケットを2機作り、反対の方向に同時に飛び出せば良い)。10年後にロケットが戻ってきたら、一体どちらが年をとっているのだろうか?これが双子のパラドックスである。この問題は解決されていない。

半死半生の猫はもっと面白い。量子力学では、可能性のある状態とその確率を掛け合わせた量で事象を記述する。猫を箱の中にいれる。この箱の中には1時間で放射線(といっても陽子だったりする)を1個だす確率が0.5である放射性物質をいれる。その物質に面してガイガーカウンタのようなセンサーを置く。このセンサーは、放射線をキャッチしたら、やはり、箱の中にある毒ガスの蓋を開く装置につながっている。さて、箱の蓋を閉める。この場合、1時間後の箱の中の猫の状態は、

生きている状態X0.5+死んでいる状態X0.5


と記述される。つまり、半死半生である。息絶え絶えというのではない。半分の確率で死んでいるとともに半分の確率で生きているのである。しかし、我々は、常識的には猫が実際には死んでいるか、生きているかどちらかで、それを偶々知らないだけであると考えている。量子力学はそうではないというのである。文字通り、生きながらかつ死んでいるのだと。しかし、蓋を開けたとたん、猫は生きているか、死んでいるかのどちらかに一瞬で決まる(ガラスの箱ならどうするのだろう?と思ってはいけない。それは観察しているのだからパラドックスは起きないだけの事である)。開けるまでは半死半生で、開けた途端どちらかに決まるのはおかしい。これに対して、量子力学は満足行く説明を与えられない。


決定性と偶然性
ニュートン力学や相対性理論のような理論は、決定論的である。この宇宙の誕生時の初期条件から現在が全て決定論的に−−確率が入ることなく−−計算できる。我々人間も、素粒子で出来ている物質に過ぎないので、その生成の過程だけでなく、その将来も完全に計算できる。つまり、小学校でどんな成績をとり、どこの中学校に進学し、どこの大学に入り、いつ結婚し、何人の子供を持ち、何時どのような原因で死ぬかまで、全て、宇宙誕生時から決まっている、ということになる。今、私がこの時間に、急にこの一文を書こうと思い立ったことまで、200億年前、あるいは、必要ならば、無限の過去に予定されていた事である、ということになる。実際には、そんな計算は、最強のコンピュータをもってしてもできないことは、ゲームプレイングのところで書いたが、それは理論的に不可能ということではない。それができる物があるとして、ラプラスの悪魔と呼ばれる。この「悪魔」はデーモンであるが、別に「悪」さをするわけではない。日本語にデーモンに対する概念がないので、こう呼ばれるだけで、「魔」といった方が良いが、それにしても、まがまがしさは免れない。ついでながら、Unixの中にはデーモンが山の様に居る。HTTPd、FTPd,、SMTPd、INETd、...。このdはdaemonの省略である。Windowsには、Witch魔女ならぬWizard魔男−−ウィザード−−がいっぱい居る。

水道の蛇口をひねった時、水がしぶきをあげて、実に複雑なねじれたような流れとなって、出てくる。一度も同じ形になったことはないだろう。しかし、これも、初期条件が決まっており、水分子一つ一つの動きを完全に計算すれば、分子レベルで、しぶきも何も完全に動きは計算でき、偶然ズボンに引っかかった1滴の水も、偶然ではなく決定論的に計算される。これは、できそうな気がする。天気予報−−近頃は気象情報というが−−はこのような精密な計算の方向に進んでいる。20年位前は、実におおざっぱな気圧配置しか計算できなかった。余り細かくすると、明日の予報が計算できるのは、明々後日になってしまうからである。

水とか気圧配置のような意志のないものなら計算できることに心理的抵抗はない。しかし、私が、昨日、映画を見たのも、明日の夕飯に何を食べるかも既に計算されているという考え方は、どうにも承服できないのである。とはいえ、古典力学を認める限り決定論は必然である。量子力学はこの困難を救ってくれる理論である。現象の生起には確率過程が含まれる。

人工生命
ところで、複雑性という概念がある。個々の事象の生起は決定的であるが、その事象の数が十分に大量になると全体の振る舞いは、あらかじめ人間の予想も付かなかったような状態になることがある。これはラプラスの悪魔には、言うまでもなく、あらかじめ分かっている。この事が、人工生命という術語で話題になったことがある。それ以前には、ニューラルあるいは、ニューロシステムといわれて話題になった。あたかも人間の神経系、特に大脳のような働きを期待したらしい。しかし、ニューロの本性は、複雑性にあるにも拘わらず、たかだか、数百程度のニューロンに、数十程度のシナプスを付けた程度のものしか作らなかったので、まじめに組んだ普通のプログラムに比して、機能、性能ともに丸で歯が立たず研究はほとんど消滅してしまった。

「人工生命」も似たような運命を辿ったのではないかと思う。何しろ、このあざといというかケレンな名前である。まともな神経ではとても付けられまい。生命というには、その理論がないに等しい内容にである。このような分野の研究の困難な点は、計算機の知識のほかに、その対象となる分野に関する深い知識が必要であることである。囲碁の強いプログラムは、単なるプログラマには作れないのと同様である。ニューロも、人工生命も、なぜか、その認識を欠いていた。ただ、人工生命に関しては、私は期待がある。進化の過程は、余りに時間がかかるので、容易に実験できないのである。メンデルは、えんどう豆を何年も育て続けなければならなかった。簡単な遺伝実験なら、大腸菌を使えば、数十分で世代交代ができるが、複雑な生物では時間がかかる。

ところで、私の疑問は、花にそっくりの蟷螂が居たり、青い葉っぱそっくりの虫、枯れ葉そっくりの虫、ある種の蜂鳥の頭の構造と蜜を吸う行動様式を知っているような、花とおしべの構造を持っている植物などがいる事である。なぜ、擬態は可能か、なぜ、共生は可能か、という疑問である。神−−スピノザの神である−−が居るか、枯れ葉のような虫は、枯れ葉を見て、自分の形をそれに似せ、かつその獲得形質を遺伝子に組み込んだかと−−あの愚かなルイセンコのように−−考えざるをえなくなる。進化論が正しいとすれば、偶々、枯れ葉に似た突然変異種の虫が出現し、それが自然淘汰されたという説明しかない。なぜ、そんなに都合の良く突然変異がおきるのかという疑問が起きる。

いや、枯れ葉に似るといった都合の良い突然変異が起きたのではなく、あらゆる形態の変異が起き、わけの分からない格好をした虫で地球は溢れていて、それが偶々淘汰されただけだという説明がある。そうだとしたら、消え去って行った他のあらゆる形態の生物の化石はなぜ、残っていないのだろう。枯れ葉虫がなんの疑問もなく存在するほどには、生物の種は、化石も含めて多くないのである。

考えられる可能性の一つは、無限に近い形態の生物が生まれたが、化石に残るほどの数に繁殖する前に−−従って、極めて短期間で−−死に絶えてしまったという事である。これは実証できない。残っていない化石は見つからないのである。しかし、遺伝子のモデルから人工生命の手法でシミュレーションすることは可能である。その為には、単なる思い付きやハッカーのてすさびではだめで、きちんと生物学を学ぶか、生物学者たちと協力する必要がある。そういう地道な努力が必要である。





69.インターネットで国際電話やダイアルQ2(0990)を掛けさせられない為に       目 次


最近新聞などで、初心者がインターネットをしていて(変な表現だが)、知らない間に国際電話やダイアルQ2をかけてしまったりして膨大な国際電話料金、あるいは情報料を請求される事件が後を立たないと読んだ。インターネットは、非常に有用であるが、碌でもないサイトも溢れている。NYを歩くにはそれなりの知識がないと命が危ない(最近は実はかなり治安がいい)。パリだってモンマルトルあたりはあまり歩きたくはない。どこを歩くにしてもそれなりの知識が無ければ、危なくて仕方がないのは世界の常識である。

そういう危険なサイトのホームページのどこか−−大抵は、甘い誘惑文句になっている−−をクリックすると、貴方のPCは無防備な何でもしてくださいモードになる。インターネットでダウンロードできるのは、写真や、文字、音楽だけではない。プログラムだってダウンロードできる。それをクリックしなければまだ安全だが、甘い誘惑に誘われて(プログラムだとは絶対分からないような表現にしてあるに決まっている。まあ、これをクリックすると危険ですとは書いてないだろう)クリックすると、実は、そのプログラムが実行される仕組みになっている。これ程簡単なだましのテクニックはない。こういうサイトへは行かない事が、危険を避ける一番良い方法である。

が、不幸にして行ってしまったと思われる時には、まず、

  マイコンピュータ→ダイアルアップネットワーク

を見てみよう、見も知らぬダイアルアップアダプタが増えているだろう。これが上でクリックした時に勝手に作られたダイアルアップアダプタで、自分のISPの電話番号とは違う電話番号になっている。その接続先が米国だったりしたら、幾ら電話料金を請求されるかわかったものではない。直ちに削除する。念の為、全てのダイアルアップアダプタの電話番号を見ておこう。ダイアルアップアダプタを右クリック→プロパティ、で電話番号のタブが現れる。身に覚えの無い番号なら自分のプロバイダの番号に直しておこう。ついでにIEのアイコンを右クリックして、プロパティを選択し、接続タブの「ダイアルアップの設定」を自分のISPに戻しておく

初心者の方には、インターネットはただで海外のHPを見る事ができるのに、なぜ、国際電話料金がかかるのか?と疑問をもたれる方もいらっしゃるかも知れない。家庭から、インターネットへ入るには、まず、ISPに普通の電話をしなければならない。これは市内電話ですむようISPのアクセスポイントを選んでいるはずである。この分は、通常の電話代がかかる(フレッツISDN/ADSLとかCATVとか、従来なかった料金体系も増えてきたが)。ISPから先は、インターネットであるから国外も国内もない。料金はISPに払っている毎月の固定金額だけである。上記の勝手に作られたダイアルアップアダプターは、海外のISPの電話番号になっているので、例えば太平洋の向こうレッドモンドに普通の国際電話をかけ、そこからインターネットに入っていることになるのである。インターネットを安く使うには電話の部分を最短距離にすることが肝要である。

尚、始めて行くHPで、危ないかどうか分からない時には、インターネットエクスプローラのメニューで、ツール→インターネットオプション→セキュリティ→下の方にあるセキュリティ(安全性)レベルのスライドバーをにしておけば、このような事はほぼ起きない。ほぼ、とはバグもセキュリティホールも無いならばということである。両方とも保証できないからほぼ、である。ダイアルアップアダプタが勝手に作られるということは、そのようなプログラムが知らない間に動いたということであり、そんなことができるということは、他の何だってできるということでもある。例えば、全てのファイルを消すこともできただろう。すべて、ActiveXをダウンロードして実行することを許可するクリックを行った結果である。セキュリティレベルをにしておくと、クリックも必要がなく、そのHPへ行った途端、ActiveXがダウンロード、実行され、何をされても良い、という状態になるという話しもある。ディスクをフォーマットされてしまうかもしれない。やったことがないから分からない。ブラウザをそんな設計で作るとは良識ある技術者には考えられないが。。。とにかく、セキュリティレベルを高にすれば、ActiveXのダウンロードは許さなくなるのである。 但し、そうすると色々差し障りもでる。どう出るかは分からないが、IEが警告を出してくれるのでそれに従えば良い。例えば、フリーソフトをダウンロードしようとすると「今のセキュリティの設定ではダウンロードはできません」のような警告がそれである。vectorや窓の森のような信頼できるHPなら、セキュリティレベルはに変更すればよい。変更は直ちに有効になり、IEの再起動などは必要なく手軽なのでこの方法が最良だと思う。その他、

 http://www.vector.co.jp/vpack/filearea/win/net/dialup/index.html

には、PCが国際電話やダイアルQ2にかける動作をすると、警告を出してくれるフリーソフトが幾つか置いてある。2001年6月現在、最下段近くにある。刑放棄0.05、警戒君フリー版のようなものがそれである。また、そのような機能を持つモデムも売られている。

そもそもダイアルQ2など普通の家庭では必要ないのでNTTに電話して回線レベルで利用できないようにしておけばよい。国際電話はちょっとこの手はないかな。

セキュリティ(クラッカー対策など)も役にたつよ。




70.LinuxでWindowsをデフォールト起動のOSとする(LILO)       目 次

Linuxをインストールしたが、普段はWindowsを使うので、デフォールトではWindowsが起動して欲しいという場合、以下の様にLilo.confを書きなおし、Liloを実行します。

1.RootでLoginして、/etc/lilo.conf を開く。

2.Lilo.confを以下の様に書きかえる。但し、HDD構成は自分の物に合わせる。
  と言うより、そこは触ってはいけない(Windowsを先にインストールしてあれば、Linuxのインストーラが作ってくれているので)。imageの項がLinux起動の為の情報部分、otherがその他のOS、今の場合、Windowsの起動の為の情報部分である。
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=win
other=/dev/hda1
label=win
table=/dev/hda

image=/boot/vmlinuz
label=linux
root=/dev/hda2
initrd=/boot/initrd
read-only


3.最後にtermから liloコマンド を実行して、上記のconfigurationをMBRに書きこむ。再起動。

lilo.confの記述を間違えると、MBRが間違って設定されるので、HDDからは何も起動できなくなる可能性がある。従って、予めLinuxの起動FDを作って、FD起動が出来、/etc/lilo.confにアクセスでき、viなどで編集できることを確認の上、上記作業をしないと面倒なことになる。

尚、上記のLilo.confは、Fdiskから見た以下のHDD構成の為のものです。

  領域     状態   種類    Mバイト   システム
  C: 1     A   PRI DOS   xxx     FAT32
     2         Non-DOS          LinuxSWAP
     3         Non-DOS          Linux

また、私は、Linuxと打つのも面倒なので、

image=/boot/vmlinuz
label=linux

の所を、

image=/boot/vmlinuz
label=li

としている。

若干説明を加えると、

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt

ここまではお呪いだと思えばよく、触ることはない。

timeout=50

LILO boot:とPromptが出たあと、デフォールトのOSで起動するまでの待ち時間。winと打つか、liunxと打てば、即刻、起動する。

default=win

デフォールトOSを指定。下記のlabel=の文字列で指定する。文字列は何を指定しても良い。

other=/dev/hda1
label=win
table=/dev/hda

Linux以外のOSの在り処を示す。この3行は一まとまりである。

image=/boot/vmlinuz
label=linux
root=/dev/hda2
initrd=/boot/initrd
read-only

Linuxのカーネルイメージ=vmlinuzと、IPL=initrd(Initial RAM Disk?)の在り処を示す。
initrdは推測だが、vmlinzを主記憶にロードするInitialProgramLoaderで、Windows9x系ではio.sys、WindowsNT系では、NTLDRに相当。Windows系では、MBRの次は、PBR(ブートセクタとも呼ばれる。パーテションにあるMBRのような物)が実行されて、そこからio.sysやNTLDRが決め打ちで実行されるので、initrd=/boot/initrdのように、IPLの在り処を指定する必要がない(C:¥に決まっている)。 Linuxでは、その辺に自由度があるので、initrd指定が必要なのだろう。

同じ理由で、Linuxではカーネルをvmlinuzと明示的に指定しているが、Windows9xでは、other=/dev/hda1 のようにHDDのパーテションを指定しているだけである。io.sysはWindowsのカーネル名を決め打ちで知っているので、わざわざ指定する必要がないのだろう。

このような、Windowsの主記憶へのロード構造と、Linuxのロード構造の違いを反映して、imageとotherの構成(記述)が異なるのでlilo.confは気持ちが悪いが、もともとユーザにデフォールトOSを変更する便宜を供したものではなく、開発者のものであるので、仕方ない。





71.他のPCを別のPCからウィンドウで使う(telnet, telnetd, x window vnc)       目 次

警告
VNCserverはsetupすると、TCP/IPスタックを英語版で上書きすることがあるかもしれない。これが不具合を起こし、ネットワークコンピュータの設定でIPアドレスを書き込めなくなることがある。
直し方



他のPCを別のPCからウィンドウで使う
ネットワークコンピュータで、時々間違えるのが、これである。ネットワークコンピュータで他のPCのプログラム(xxx.exe)をダブルクリックすると起動するので、そのリモートPC上のプログラムを、リモートPC上で使えると錯覚する。しかし、そのプログラムは、リモートPCの上で動いているのではなく、こちらのローカルなPCで動いているのである。今、私はAというPCからネットワークコンピュータでBというPCのc:¥Program Files¥editor¥edit.exeを見ているとする。

                 LAN
      私 A−PC−−−−−−−−−−−−−−−B−PC

ここで、AからBのedit.exeをダブルクリックする。editが起動する。その時、edit.exeはA−PCのDRAM(主記憶)にロードされ稼動しているのである。なぜかといえば、ネットワークコンピュータはファイル共有の為のアプリであるから、Bのc:¥Program Files¥editor¥edit.exeは、Aからネットワークコンピュータを通して見た場合、Aのファイルなのである。 従って、それを実行すれば、当然、Aの上で実行される。

この時、幾つかの現象が起きる。本来B−PCの上にあるプログラムは、Bの上でsetupされた時、幾つかのxxx.dllをBのWindows¥systemにインストールしているかもしれない。この場合、Aから実行しても、Aの環境では、当然ローダはAのwindows¥systemを見に行くので、必要な.dllファイルが見つからず、起動できない。あるいは、レジストリを使っているプログラムでは、Aのレジストリには何も書かれていないので、起動したとしてもまともには動かない。オンラインソフトのように、dllも使わず、レジストリもつかわず、自分だけで閉じているものなら正常に動くだろうが、ほとんどの場合、あてにはできない。

さて、では、本当にAからBを使うにはどうしたら良いか。Aから、BにあるプログラムをBの上で動かすすにはどうしたら良いかという問題である。2台のPCがLANで結ばれていようが、インターネットで結ばれていようが、それは偶然といってもいい。貴方の家の電話は、ホワイトハウスのブッシュ大統領の電話と結ばれているが、それがどうしたということと同じ事である。そのPC同士が、袖触れ合うも他生の縁の状態になるためにはプロトコルという外交儀礼が要る。ネットワークコンピュータは、SessionMessageBlockファイル共有プロトコルというファイル共有しかできないプロトコルで稼動しているのであり、AのPCからBのPCのプログラムを起動して、その結果をAのモニターに表示するなどという機能は持っていない。AからBを動かすにはそれ相応の機能をもつプロトコルが必要である。それを行うのが、telnet、x、VNCなどのデーモン(サーバ、サービス)、とクライアントなどである。

Telnetd(テルネット・ディー)とTelnet
BにTelnetDaemon(サーバの事をUNIXの伝統ではデーモンという。Windowsソフトもこれに倣っている事が多い)であるTelnetをBの上で起動しておく。Telnetが動く前に、AからBのTelnetを動かすのは一般には無理があるので、これはBを起動した時に自動で動くようにしておく。

AからDOS窓を開いて、telnet 192.168.xxx.xxxのように打つ。login名とパスワードはTelnetで設定されたものを入れてBにloginである。cd、ls、pwd、help、shutdown、などTelnetのサポートするコマンドが使える。ウィンドウは使えない。従って、画像エディタで、jpg画像を編集などという事はできない。

  http://users.otenet.gr/~sveine/programs

に超低機能telnetがある。使い方はいたって簡単で、解凍後フォルダーごと、たとえばc:¥に置き、その中のtelnetd.com(exe)のショートカットを

  c:¥windows¥スタートメニュー¥プログラム¥スタートアップ
  (マルチユーザでは、windows¥profilesなどいろいろなところに変わっているので注意)
に入れておけば良い。login名はguest、passwordもguestの決め打ちである。従って、インターネットにつながっているPCに入れてはならない。世界中にHDDを公開しているようなものである。家庭内LANで用いる。

ただ、このtelnetdはls(dir)、cdくらいしか能がない。リモートのプログラムを起動できないのである。ただ、shutdownコマンドというものがあり、リモートのPCをシャットダウンできるのが面白い(Windowsなので、誰でもrootなんですね)。

http://www.vector.co.jp/vpack/browse/software/win95/net/sn049402.html

は、簡単なコマンドが使え、プログラムの起動もできる。
 c:\telnetd.bat を作り、

 set tdpass=xxxx
 d:\program\telnetd\tenetd.exe

 と書いて、環境関数tdpassでパスワードを設定して、起動するだけである。 が、このtelnetd、シャットダウンができない(と思う)。まさか、

   rundll32    Shell32.dll,SHExitWindowsEx 1

でシャットダウンしよというのではないと思うが。

ついでながら、コマンドラインで次のようにうてば、いろいろできる。

Windowsの再起動;  rundll  user.exe,ExitWindowsExec
PCの再起動;     rundll32  Shell32.dll,SHExitWindowsEx 2
ログオフ;        rundll32  Shell32.dll,SHExitWindowsEx 0
シャットダウン;    rundll32  Shell32.dll,SHExitWindowsEx 1

  デスクトップ上で右クリック→新規→ショートカットで、コマンドラインに上記(rundll user.exe,ExitWindowsExecなど)を入力してショートカットを作っておけば、再起動もシャットダウンも手早く行える。

VNC; GUIでtelnet
  http://www.uk.research.att.com/vnc/download.html

これは、BのデスクトップがそのままAのモニターにウィンドウとして現れるものである。言わばTelnetd/telnetのGUI版である。Xと言っても言い。Aから、たとえば、Aのモニタ画面に映っているBのデスクトップのウィンドウの上にあるエクスプローラをダブルクリックすると、Bのモニター上でそれが開く。つまりBを遠隔操作しているのである。A、B2台を並べているとこれが良く分かる。当然、Aのモニター上にあるBのデスクトップウィンドウの中のエクスプローラも開く。実に当然のことだが。

従って、Aのモニター上にあるBのデスクトップのウィンドウの中のネットワークコンピュータをクリックすれば、AとBがその中に見える。そのAをクリックすれば、Aのモニターの中のBのデスクトップウィンドウの中に、Aの共有フォルダーが開く(何が面白いかという疑問はともかく)という、Aのモニターも、こちらの頭の中もグチャグチャ状態が出現する。なかなかに面白い。これは実は、面白いのである。Aの前に私が居て、AからBにファイルを送ろうとしたとき、ネットワークコンピュータでは、(1)AからBのHDDに書きこむ(push)ことになる。ところで、上の機能を使えば、Aの前に居て、(2)BからAのファイルを引いている(pull)ことになる。いやまあ、何が面白いのか?BのHDDに書きこみ許可をしていない場合、(1)の方法は使えない。(2)ができるかどうかは、VNCの仕様次第である。まだやっていないので分からないができそうな。。。

telnetdでこんなファイル転送しようとしたら、別途、コマンドラインのftpを起動しなければならず、結構物憂い。

ダウンロードと使い方はいたって簡単で。

 1.上記サイトからダウンロードしたら、解凍。
   DLの注意事項は、UnixやMac用のファイルも一緒に置いてあるので、
   Windowsを選び、その後の画面で、ftpか、httpのどちらかを選び(どちらでも良い。高々1MB弱だから)
   zip形式をえらぶ。似たようなのにUnixのtar/zipやtgzがあるので間違えない事。
 2.winvncはサーバ。これはsetupする。vncviewerはクライアント。これはsetup不要。
   そのまま、c:¥program Files¥にでもフォルダーごと移動すればよい。
 3.サーバは起動してpasswordを設定する。
 4.クライアントは起動して、サーバのIPアドレスとpasswordをいれる。
   このあたりはtelnetd/telnetと同じ要領である。

ただ、10Mのイーサネットでは、動きがかなりぎこちない。あるいは、我が家の環境が、サーバ側がP−133MHz、クライアント側がP−200MHzのせいかもしれない。VNCのマニュアルには、軽いとかいてあるのだが。VNCviewer(クライアント)は、百数十KBだからフロッピに入る。これを持ち歩けば、どこかのインターネットにつながっているPCや、ダイアルアップで我が家のPCに入り、GUIで簡単に使える、と書いてある。

尚、日本語を通すには、ちょっとしたこつが要る。といっても、知ってしまえば当たり前であるが。ローマ字変換で、ローカルのPCは、直接入力(IMEの日本語入力オフである)、リモートのPCは日本語入力にしておけば良い。Alt−半角同時押しのコードがリモート側にキチント渡るかななどと心配する必要もない。因みにCtrl−cなどは通る。面白い事に、ローカルのPCのメモ帳で、文字列をCtrl−Cして、リモートのPCのメモ帳にCtrl−Vが効く。勿論アプリにもよるが、クリップボードがネットワーク越しに他のアプリの助けを借りずに行えるようになっている。

またCtrl+Alt+Del はネットワークを通過しない。ローカルのPCに働いてしまう。当然といえば当然だ。しかし、とおす方法はあって、VNCのウィンドウの左上端のアイコンをクリックすれば、メニューが出て、そこに「Send Ctrl-Alt-Del」という項目があるのでこれを選べば良い。

また、NTでは、VNCをサービスとして登録できるので、ログオンする前から起動している状態にできる。つまり、ログオンを上記の「Send Ctrl-Alt-Del」と組み合わせて、リモートから行える。

インストールしたあと、

  スタート→プログラム→VNC→Administrative Tools→Install VNC Service

を実行するだけで良い。再起動。

Windows2000、WindowsXPでも使える。(2005.1)

NTと同様、インストールしたあと、

  スタート→プログラム→VNC→Administrative Tools→Install VNC Service

を実行。だが、サービスが開始になっていないので、

 コントロールパネル→管理ツール→サービス

で、WinVNCを探し出す。「自動」にはなっているので、「開始」にする。


あるいは、VNCを「-install」オプションを付けてインストールすれば良い。

VNCサーバをリモートにして使っていて、再起動をかけると、NTの場合、ログオン画面で待ち状態になる。サービスで起動させていない場合、NTのPCの前まで出かけていって、ログオンしなければならない。これでは不便で仕方が無い。

サービスを使わないでこれを行う方法は、TweakUIを使って、自動ログオンさせてしまうことである。ログオンするユーザのwinnt\profilesフォルダの下の方にあるスタートアップフォルダーにVNCのショートカットを入れておけば、再起動した後、自動ログオンして、VNCが起動する。この場合、セキュリティもへったくれも無くなってしまうので、家庭で使う場合に限る。

おまけに、そのログオンしたユーザからログオフしても、Ctrl-Alt-Delを押す画面にいたらず、再度自動ログオンしてしまう。このユーザがadministrator権限を持たないと、TweakUIで、自動ログオンをオフにすることさえできない。これを解決するには、その入っているユーザのパスワードを変更するしかない。これは自分の権限だからできる。Ctrl-Alt-Delで。パスワードの変更を選び、変更する。その後、ログオフすれば、TweakUIで自動ログオン設定したパスワードとことなるので、ログオンする画面になる。そこで、Administratorなり、好きなユーザでログオンできる。ということで、この方法はお薦めではない。NT/2000では、Serviceとして登録するに限る。

パスワードの変更
ただ、serviceとして起動したVNCサーバは、普通の設定ではパスワードを変えることができない。タスクトレーにあるアイコンから起動する設定画面では、パスワードを変えても再起動すると、忘れ去られて元のままである。こんな時には、

VNCを「-settings」オプションを付けて起動させ、設定画面で直す。

尚、クライアントであるVNCviewerは、いちいちパスワードを入力しなければならず、面倒で仕方ない。これはセキュリティの為の仕様だそうだが、小さな親切余計なお世話である。 で、こんなバッチを作ってみた。ただし、VNCviewerは、パラメータが入れられないので、別途、マクロソフトを必要とする。

方法はここ





72.スイッチングハブとは何か?    目 次

一言で言えば、2層スイッチである。ついでながら、ダムハブは1層(これはさすがにスイッチングはしない)、ルータは3層スイッチである。ちょっと前までは、イーサネーットのセグメント(本当は違うけど、電線と思っておく)を繋ぐのに、リピータとブリッジがあった。ダムハブとはリピータの形を変えたものである。リピータは文字通り繰り返すだけのもの。何を? 信号をそのまま繰り返して次のセグメントに送るという意味である。

     PC1    PC2
      |     |      LAN A
   −−−−−−−−−−−−−−−−−−−−−−−−
                        |
                     Repeater
                        |
                   −−−−−−−−−−−−−−−−−−
                          LAN B     |
                                   PC3

LAN A上の信号は、リピータで整形増幅されてLAN B上にそのまま流される。PC1からPC2へのパケットはLAN Bに流す必要はないが、そこはリピータというなの通り、何も考えず、鸚鵡のように繰り返すだけであるからLAN Bへ流れて、LAN Bは迷惑する(不要に混み合う)。リピータは1層で信号を中継するわけである。

所で、イーサカードは、MAC(AppleのMacじゃない。ediaccessontrolという2層の機能)アドレスという48bitアドレスを持っている。え?イーサって、IPアドレスで通信するんではないの? 論理的にはそうであるが(NetBeuiやIPX/SPXはそんなものは使わない)、実際にハード的に電気信号を送るのはどうするのか? IPは口だけは達者だが手は全然動かない人間みたいなもの。物理的に電気信号を汗かいて送って通信するのは1層、2層なのである。MACアドレスは2層の通信を行うために用いられる。

このアドレス、イーサカードの一枚一枚全部違う。しかも使い捨て? IPアドレスのようにそのうち枯渇するんじゃないかと心配である。48bit=256x(10の12乗)=256兆個しかない。48bitがメーカbit部と、メーカの中での連番bit部に分かれるのだから、相当無駄があるはずで、秋葉原のジャンク屋で只で呉れるISAの10BaseのカードなんかMACアドレスだけでも回収したらどうかと要らぬ心配をしている。

とにかく、2層=データリンク層はこのMACアドレスを使って通信している。とすれば、PC1のFTPクライアントが、PC3のFTPサーバにデータ要求した場合、IPのパケットは、データリンク層のフレームの中に入れて送られる。フレームもパケットと同じ発想のものであるが、発想は同じでも細かなところが違うので、2層の場合、パケットとは呼ばず、このように呼ぶ。まあ、サイズ、構造が少しずつ違う。当然、宛先は、IPアドレスじゃなくMACアドレス。こういう違いがあるので、パケットとは呼ばない。パケットはTCP/IPの固有名詞であって、一般名詞ではないと思っておいた方が分かり易い。まあ、2層でもパケットといったりするので余計に混乱するのであるが。ついでながら、ATMでは、この転送単位はセルと呼んでいる。

余談ばかりだが、フレームの中には、宛先MACアドレスと送信元MACアドレスがある。上の図で、リピータをブリッジに換えるとブリッジは、そのアドレスを見て、宛先のPCがどちらのLANセグメントにいるか判断する。今の場合、PC3はLAN Bに居るので、LAN Bへ信号を中継する。しかし、もしPC1が、PC2にフレームを送った場合、PC2は直接にそのフレームを受け取るが、同時にブリッジも受け取る。そして、ブリッジは、PC2はPC1と同じセグメントにいることを知り、LAN Bにはこのフレームを流さない。それで、LAN Bは無駄なフレームで混み合うことがなくなる。

さて、ここから分かることは、こんな事をする為には、リピータのようにデータを電線直結で垂れ流す訳にはいかないということである。一旦、バッファー(メモリー)にため込んで中身を読まなくてはならない。そして、改めて送信しているのである。ならば、10Mbpsで受信して、改めて送信する時には100Mbpsで送る回路をつければ、10Mbps/100Mbpsの相互乗り入れができる。10Mbpsと100Mbpsを混在させるにはスイッチングハブが必要で、単純なリピータでは出来ないことが理解できる。

ブリッジは、では、どのようにしてPCnがLANxに居ることをしるのであろうか?人間が最初に設定する、というのはどう考えてもおかしい。PCは移動するものであるし、第一面倒でかなわない。最初は、ブリッジはbroadcastで各PCのセグメントを知るのだろう。それをメモリーにでも書いて表にしておけばよい。もし、あるPCの、ハブのポートを変えたら、表と食い違ってくる。その時は、フレームが送れない。宛先不明で帰ってくるだろう。そんな時は、もう一度broadcastすれば良い。

このブリッジの機構をハブに取り入れたものがスイッチングハブである。



ダム・ハブ:dumb hub;馬鹿ハブとも呼ばれる。上記のような接続になる
ハブの内部は、概念的には1本の線につながっているだけである。

スイッチング・ハブ;上記のような接続になる。
通信している2PC間の間だけをつなぐ回路が入っている。この図では、PC1とPC3間に赤、PC2とPC4間に青の2本の線が概念としては作られている。もちろん、全PCの組み合わせでこのような回路が張られる。で、スイッチングと呼ばれる。切り替えスイッチだね。

ルータはもともとスイッチ機構であるが、これがソフトでやっていた(今も、やっている)ので遅くてしかたない。なぜ遅いかといえば、パケットは自分では動けないので、2層の機構に乗って運んでもらう。イーサではイーサネット/802.3プロトコルのフレームという車に乗っていた。電話線では、PPPのフレームに乗っている。それで、2機のコンピュータ(ルータ)間を移動すると、一々車からおりて、ルータにパスポートを提示し自分の行き先を申告しなければならない。そうすると、お前の行き先はあっちだから今度はあっちの乗り場で車に乗れというように教えてくれる。また新しい車に乗り換えないといけないのである。空港で、トランスファーする手間を思い浮かべると、これがどんなに無駄な時間を食っている直ちに想像がつくだろう。そんなこともあって、数年前からハードでスイッチング=ルーティングするものが現れて高速化している。

ここも




73.費用をかけずにWindows95とWindowdNTをインストール済みのHDDにWindows98を追加インストール    目 次


Windowsの特徴として、版が改まる程、累積的に不安定でバグが多くなり、やたらとHDDとDRAMを食い、速度が遅くなるという現象がある。現在使用中の主OSは、Win95とNT4.0の組み合せで、Win98などに、まして、9x系のMeやNT系の2000などにかえる気はさらさらなかった。

ところが、スキャナが壊れてしまい、最近はやりの薄型、USB接続の型落ち品を買ってきた。AdobePhotoDeluxの家庭版(これが素人向けインタフェースだから手間がかかって仕方なく、使い難い。直ちにUleadに逆戻りした)が付いて4980円。5、6年前は、ハンディスキャナが4、5万していた。一定の速さで動かすのが難しく、また幅が足らないので2度に分けてスキャンして、ソフトで引っ付けていたものだが、これが神様でもうまく行かないだろうという難しさで苦労したものであった。。。。

この薄型スキャナ、光学解像度300x600dpiである。我が家では300dpiなんて使わない。Faxの細かな文字が200dpi。300dpiでA4をスキャンしたら、17インチモニタでは上下左右にスクロールしまくらなくてはならず、全体像がつかめない。A4といえば、長辺は30cm弱、約12インチであるから、300dpiでは、300x12=3600点である。1024x786で使っていても縦長で4.5倍の大きさである。逆算すれば、70dpi程度で十分であるが、切手大の画像をモニタの縦一杯にしたい場合、300dpiも使うが、そんなにアップしても大体ぼけてしまうので、結局は100〜200dpi程度が使いところ。

近頃、悟りが出来てきたのか、買う物がだんだんグレードダウンしている。が、薄型というのは、ちょっと前の厚さ5、6cm位あるスキャナとスキャン方式が違うので、少しでも紙が浮くとボケてしまう。同じ300dpiでもどうも粒子が浮いてしまい画像が粒粒して奇麗でない。粒状感を取る操作をすると当然ながらボケル。これまで使っていたのは、定価は殆どおなじ25000円位のものであったが、それは透明感のある奇麗な画像がとれた。放電管?もXeroxのコピアーの用に明るく、覆いを外すと眩しくて直視できなかったが、薄型方式は、何やらLEDか、蛍が光っているようで全然眩しくない。両方共に、台湾のこの道では有名なメーカであるのだが。

さて、このスキャナ、98でしか使えない。95と98ではドライバーモデルが全然違うので、ドライバが共用できないのである。3.1→95の時はこんなことは無かった。互換性が考えてあったのだが、98は酷いものである。それに、折角、95とNTとでデュアルブートにしてある。おまけに、BIOS対応しているHDDであるのに、このHDDそのもののインストールにも相当手を焼いた。何の理由もなくBIOSで認識せず、また何の理由も無くインストールできてしまった(再起動の十連発だけである)。あの意味の無い、理由の分からない苦労の繰り返しは、さすがにもう二度と嫌であるし、折角環境を整備した95を、98に入れ替え、不安定にするのもごめんである。

そこで、98をスキャナ用だけの用途に追加インストールすることにした。何しろ、HDD容量だけは有り余っているのでOS程度、いくつ入れても平気である。ただし、お金は掛けたくない。PCなどにお金を掛けた日には際限がない。何百万あっても足りない(今更、泣いても、悟っても、悔やんでも、もう手後れだが  (TT))。

当然、なんとかコマンダとか、パーテッションかんとかなどに1万円以上ものお金を払う気は、サラサラない。だいたい、この手のブートマネージャなら、フリーの優れものが沢山ある。これらでパーテションの隠し機能を使えば、95と98もマルチブートできるが、実は、今の場合、この手は使えない。95とNTが入っているということは、既にパーテションは切り終わっていて、更にもう一つ基本パーテションを入れる隙間などかけらもない。さすがにフリーでそこまで出来る物はない。fipsがあるか。しかし、fat16だけでなく、fat32やら、NTFS混在の時、キチント動くかなと思うと、ま、元気がでない。

他の手は、押し入れなどにころがっている2GB程度のHDDをスレーブに付けて新たに基本パーテションを作ってやることだが、セカンダリのHDDからのブートはどうにも不具合が多く、Linux、FreeBSDなどでしかやったことがない。だいたい、スレーブに基本パーテションを追加するとドライブレターの並びかたが変わってしまい(基本パーテションは論理パーテションに優先する)、ショートカットが無効になるものが出てくるなど、嬉しくない症状がでる。

WinuxというHDDを切り替えるハードが遊んでいるのだが、これが又、使いにくい。1台目と2台目(3台目もある)をスイッチして、C:を入れ替え、なおかつ両方のHDDを使えるのなら(2台目のHDDがD:以降になるのなら)、使い道もあるのだが、あくまで、1台目だけ、あるいは2台目だけ。。。しか使えない。Winuxに付けたHDDは、切り替えた1台だけが有効なのである(その点、モバイルラックと同じである)。ということは、1台目に95/NTを入れ、2台目に98を入れた場合、98でスキャンしたデータを95、NTに移すことができない。スレーブか、セカンダリに付けたHDD、SCSI−HDDやMO経由なら移せるが、何とも面倒である。1台のHDDが60GB、80GBの時代では、これも無駄が多く、使えない。

最終的に、NT、95、98を同じHDDに入れる事にした。当然、現在の環境を壊さないように、そっと、98を滑り込ませることになる。これは多少、技が要る。できればバイナリが分かる方が望ましい。

こんな方法である。

と、その前にここにこんなフリーソフトがあった。これから展開する超テクニカルな方法はWindowsのブートプロセスを理解するにはうってつけだが、なにしろ、バイナリーにパッチを当てるのだから、面倒である。居候はこれでやったのだがその後、こんなソフトがあることを知った。このwinbootは、使っていないので、ひょっとして期待した機能と違うかもしれないが、一応、場所は、下記。もともとMicrosoftが開発用につかっていたらしい。

Winboot

200KBくらいなので、すぐ落とすことができる。installもいらない。そのままc:\winbootというフォルダに入れておけばいい。起動すると、小さな窓が出る。「Setup」にチェックを入れて「OK」を押せば、「異なる言語バージョンのWindowsをインストールする為に、リアルモード(DOS)で再起動するがいいか」というようなメッセージが出るので、勿論「OK]とする。ところで、Windows9xのリアルモードには、CD−ROMのドライバーが入っていないので、これは、自分で予め準備しておく必要がある。

DOSでCD−ROMを読めるようにするにはここを参照。勿論、対象はFDではなくC:¥であるから、Autoexec.bat,config.sysはC:¥にあるものを使う。mscdexやCDドライバなどは、c:¥に置いておけばいい。

注意;  Winbootのインストールを途中で止めると、Windowsが起動しなくなる。例の青空+窓画面が出てすぐに、DOSに落ちる。MSDOS.SYSが壊されているので、他の同じバージョンのPCのC:¥から起動FDにMSDOS.SYSをコピーしてきて、元へ戻してやる。この時、MSDOS.SYSはシステム、隠し属性が付いているので、FDにコピーする前にDOSプロンプトを立ち上げ、

  c:¥>attrib −s −h c:¥msdos.sys

として属性を解除してやらないと壊れたほうのPCにコピー出来ないことがある。
属性を元にもどすには、

  c:¥>attrib +s +h c:¥msdos.sys

結局、

動いているPCのWindowsのDOSプロンプトで、MSDOS.SYSを起動FDにリネームしてコピー;

  c:¥>copy c:¥msdos.sys  a:¥msdos.txt

  c:¥>attrib −s −h a:¥msdos.txt

   MSDOS.SYSが壊れた方のPCで、起動FDで起動して、

  a:¥>attrib −s −h c:¥msdos.sys

   a:¥>copy a:¥msdos.txt  c:¥msdos.sys

 上書きするか → する

  a:¥>attrib +s +h c:¥msdos.sys

これで修復できた。


ところで、Winbootのこの作りでは、起動時にOSを選ぶということはできない。一旦、デフォールトのOSが立ち上がってから、Winbootを起動して、目的のOSを選んで再起動ということになり、面倒である

さて本題、まず、ブートプロセスを復習すると、WinNT系が入っている場合、以下のようになる;

  BIOS→MBR→PBR中のNTのブートセレクタ →NTLDR (NT系
                                |
                                 →BOOTSECT.DOS→IO.SYS (9x系

PCの電源を入れると、NTのブートセレクタで、一旦停止して、どのOSを使うか聞いてくる。そこで、NTを選べば、NTLDRが、9xを選べばBOOTSECT.DOS→IO.SYSが起動してOSをロードする。ここで、BOOTSECT.DOSの内容は、9x系をインストールした時に、そのインストーラがPBR(PartitionBootRecord;各パーテションの先頭セクター。HDD全体の先頭セクタがMBR。そのパーテション版のようなもの)に書き込んだプログラムである。その後、NTをインストールすると、NTのインストーラは、先住者である9xのPBRの内容をBOOTSECT.DOSというファイルにして、PBRから追い出し、自分のPBRプログラムであるNTのブートセレクタをPBRに入れる(95では、先住者に代わりの家(BOOTSECT.DOS)を作るような面倒な事をせず、上書きして消してしまうので、NT→9x順にインストールするとNTが起動しなくなる。NTの方が多少礼儀を知っている)。

95と98はC:¥にあるブート関連ファイル(IO.SYS、MSDOS.SYS。そして、NTが居る場合、BOOTSECT.DOS)が同じ名前になっているので、95と98のデュアルブートは面倒なのである。IO.SYSはどちらをブートして良いのかわからなくなる(というか、自分のOSをブートする)。NTはIO.SYSではなく、NTLDRでOS本体をロードするので、こんな混乱は起きない。従って、以下の手順では、上記3ファイルを95と98でリネームして別ファイルにすることになる;

  BIOS→MBR→PBR中のNTのブートセレクタ →NTLDR (NT
                                |
                                 →BOOTSECT.W95→IO.W95 (95
                                |
                                 →BOOTSECT.DOS→IO.SYS (98

尚、MSDOS.SYSは、上記に出てこないが、IO.SYSが使っているから、これもMSDOS.W95にリネームする。

さて、手順である。

基本手順;BOOTSECT.DOS、IO.SYS、MSDOS.SYSのリネームと書き換え

(0)Win95ブート関連ファイルのリネーム; BOOTSECT.DOS  IO.SYS  MSDOS.SYS

NTと9xは簡単にデュアルブートにできるが、問題は95と98である。これらはDOS時代の遺物である、IO.SYS、MSDOS.SYSをブートプロセスに持つが、同じ名前になっているので、そのままでは、区別がつかない。それで、今、インストールされている95のものをリネームすることにする(安全のため、元ファイルはコピーしておく)。

  BOOTSECT.DOS  IO.SYS   MSDOS.SYS  の3ファイルをリネームする。
                             
  BOOTSECT.W95  IO.W95、  MSDOS.W95 


勝手にリネームしたのだから、その名前を使っていた親プログラムにそれぞれ通知しておかなければならない。親子関係は以下のとおりである。蛇足であるが、ブートプロセス用のファイルはC:¥にある。

         (1)                 (2)           (3)
親     BOOT.INI          BOOTSECT.W95   IO.W95
         ↓                 ↓              ↓
子     BOOTSECT.W95     IO.W95          MSDOS.W95

BOOT.INIは、NTのブートセレクタが使う設定ファイルである。それぞれブートプロセスの中の一つ前のプログラムが使っているのが分かる。

BOOT.INIは、たとえば以下ようになっている。これはデフォールトではWin9xが立ち上がる設定である。default=C:\ がそれを示している。C:\ だけでファイル名が書いてない時は、BOOTSECT.DOSが省略されているとみなす約束である。そんなファイルは、上記リネームで無くなってしまったので、ここに明記しなければならない。


(1)BOOT.INIの変更

元のBOOT.INI
[boot loader]
timeout=3
default=C:\
[operating systems]
C:\="Microsoft Windows"
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos

これを、以下のように書き直す;

[boot loader]
timeout=3
default=C:\BOOTSECT.W95
[operating systems]
C:\BOOTSECT.W95="Microsoft Windows95"
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos

尚、[operating systems]以下のOSの順は、好きに並べて良い。又、「=」の右辺の「"」で囲まれた部分(Windows NT Workstation Version 4.00 [VGA mode]"など)は、OS名/モードであり、好きな文字列を書いて良い。


(2)BOOTSECT.W95の変更
バイナリエディタで、BOOTSECT.W95を開き、1D8番地から始まる

 IO□□□□□□SYSMSDOS□□□SYS

 (−−49 4F 20 20 20 20 20 20
  53 59 53 4D 53 44 4F 53 20 20 20 53 59 53)

の22byteの赤字部分を

 IO□□□□□□W95MSDOS□□□W95

と書き換える。 小文字は許されない(W95であって、w95は不可)。
DOS、Winsowsでは小文字、大文字は区別しないが、ここはまだ、ブートプロセスであり、OSの支配下にはない。バイナリエディタを使えば、57(W)のような16進数ではなく、ASCIIで入力できるが、大文字で入力する。暇な人は小文字で試してみると良い。起動しない。繰り返すが、BOOTSECT.W95内で書きかえた(IO.)W95のWは57(大文字)であって、77(小文字)ではない。

尚、□はASCIIの空白で、コードは20である。DOSのファイル名は8文字+3文字=11文字の構造であることを忘れないよう。


(3)IO.W95の書き換え
  (2)と同様、MSDOS.SYSをMSDOS.W954箇所変更。

SYSは、下の4箇所の番地から始まる3byteである;
 A613番地、A62A番地、A637番地、11966番地

以上で、再起動して、95が起動することを確認。

これが済めば、後は、簡単である。


(4)Win98をインストール
Win98をWin95と同じC:にインストールしても良いが、Program Filesなどのフォルダが共用になり、よからぬ副作用を引き起こすかもしれないので、拡張パーテション/論理パーテションのE:に入れた。Windows98は、論理パーテションから起動できる。

以上で終了である。万が一、98がPBRを書き換え、NTが起動しない場合、NTの修復セットアップを行って、PBRを書きなおす。


98プレインストール機の場合

98プレインストール機で、98を消してしまっている場合(ここまで読みきったような人は、きっとそうしているでしょう)、再インストールになるが、CDからでは、C:¥にしか入らないので、一度、C:¥にインストールして、C:¥Windows¥options¥cabs以下を、D:¥cabsにコピーして、D:¥cabs¥msbatch.infの中の「C:¥」の4個所全て(良くわからないが、多分)を「E:¥」に書換え、起動FDから、D:¥cabsの中のsetup.exeを実行すれば、E:¥に入る(但し、E:は、プライマリ/マスタ=1台目のHDDでなければならない)。この場合でも、C:をフォーマットしなければ、「既に他のOSが居るからインストールできない」といってくる。結局、C:の95やNTも全てインストールし直しになる

ということで、プレインストール機では実に面倒で
 1.C:をフォーマット(95を消す)
 2.98をC:にインストールし、C:¥Windows¥options¥cabs以下を、D:¥cabsにコピーし、
   中にあるmsbatch.infの書換え;C:→E:(98をE:にインストールする為の準備)
 3.C:をフォーマット (98を消す)
 4.95を普通にC:にインストール
 5.NTをD:にインストール(C:でも不都合は起きていないが、念の為)
 6.95のBOOTSECT.DOS、IO.SYS、MSDOS.SYSのリネームと書換え
 7.NTと95の起動確認 (上記書き換えで起動するかの確認)
 8.NTで起動して、C:¥のルートにあるファイルと、95関連フォルダーを全て
   (面倒ならC:¥を丸ごと)どこか入る処(D:でも、E:でも、F:でも、as you like it)へコピー
   (NTをC:に入れた時は、NT関連フォルダとNTの仮想記憶用ファイルである
    pagefile.sysはコピー不要)
 9.C:をフォーマット (95を消す。この時、D:に入れたNTのC:\にある起動ファイル群も消えてしまう)
 10.FDで起動して、上記で準備したD:¥CABSの98をE:にインストール

 11.NTをD:(かC:)にインストール(8.で95から起動して、NT関連ファイル/フォルダをD:に
   でもコピーしておいて、ここで、98から起動して、C:に戻し、NT修復セットアップで
   PBRを修復すれば、再インストールしなくても、動きそうである
が、未確認なので、大人しくインストール)
 12.NTから起動して、8.でコピーしてあった95のBOOTSECT.W95、IO.W95、
   MSDOS.W95、Windows、My Dcuments、 Program FilesなどをC:¥に
   コピー (95の復活。98を入れたあと、セットアップでは95は入れられないので、こうする。)
   但し、C:¥ルートには、10.で98が起動関連ファイルをいろいろ入れているので、同じ名前のファイルは
   戻さない事。AUTOEXEC.BAT、CONFIG.SYSなどは共用になり混乱するので、使わない方が良い。
   中味はコメント化しておく(REM を先頭に付ける)。
 13.C:¥BOOT.INIに95項目を書き加え、下記のようにする;
   (98項目は11.でNTインストーラが書きこんでいる。尚、95がデフォールトで起動)

[boot loader]
timeout=3
default=C:\BOOTSECT.W95
[operating systems]
C:\="Microsoft Windows98"
C:\BOOTSECT.W95="Microsoft Windows95"
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Windows NT Workstation Version 4.00"
multi(0)disk(0)rdisk(1)partition(1)\WINNT="Windows NT Workstation Version 4.00 [VGA mode]" /basevideo /sos

 (C:に95、D:にNT、E:に98)

何とも、面倒な事である。

以上の9x共存方式は以下のHPを参照にさせていただいた;

http://www.tkcity.net/~nobusan/hardware/boot_hdd/multi_boot/urawaza.html
また、
http://www.linuxgazette.com/issue47/deblende.html

も確認用に参考にした。ここは英語は所々変だが、なかなかユーモアがあって面白かった。例えば、

If you're not sure HOWTO install DOS, I suggest you stop reading now and find yourself another hobby.
 (DOSのインストール方が良く分からなかったら、(このホームページを)読むのは今すぐ止めて、何か他の趣味を探す事をお勧めします)
BOOTSECT.DOS を再構築する方法@MS
また、今回は直接必要は無かったが、NTのインストーラや修復セットアップを使わずに、PBRのファイル(例えば、BOOTSECT.DOS)への書き出し方、復旧の仕方は、下記にある。
http://hp.vector.co.jp/authors/VA001240/article/ntldr.html

要点を引用させていただく;NTのPBRをNT40.PBRとして書き出し/書き戻している。

PBRを読み込んでイメージファイルを書き出す

C:\>DEBUG
-L 100 2 0 1      ドライブC:のPBRを0100H番地に読み込む
-N NT40.PBR      書き出すファイル名を指定
-R BX           書き出すサイズを指定
BX 0000
:0
-R CX
CX 0000
:200
-W            0100H番地以降を書き出す
Writing 0200 bytes
-Q

C:\>

イメージファイルを読み込んでPBRに書き戻す(注)
PBRへの書き戻し(注)はとくに注意してください。手順を誤るとOSがブートしなくなるおそれがあります。

C:\>DEBUG NT40.PBR    ファイルを0100H番地に読み込む
-W 100 2 0 1          ドライブC:のPBRに書き出す
-Q

C:\>

   注;原文は「書き出し」となっている。






74.コマンドラインでのWindows9xの再起動、PCの再起動、PCの電源断、ログアウト     目 次


Windows9xでハードやソフトをインストールした後、PCを再起動しなければならないが、PCの再起動は、BIOSから始まるので、SCSIや、旧式CDオートチェンジャなどを付けていると、結構な時間がかかる。こんなときは、Windowsだけをコマンドラインで再起動すれば良い、ついでにいろいろ;

 Windowsの再起動;  rundll  user.exe,ExitWindowsExec
 PCの再起動;     rundll32  Shell32.dll,SHExitWindowsEx 2
 ログオフ;        rundll32  Shell32.dll,SHExitWindowsEx 0
 シャットダウン;    rundll32  Shell32.dll,SHExitWindowsEx 1

  コマンドラインとはいえ、こんな複雑なものは、打ち間違えるので、デスクトップ上で右クリック→新規→ショートカットで、コマンドラインに上記(rundll user.exe,ExitWindowsExecなど)を入力してショートカットを作っておけば、再起動もシャットダウンもクリックだけで手早く行える。



参考;WinNTのデスクトップアイコンからの電源断




75.ネットワーク関連の英語版ソフトをインストールして、TCP/IPに不都合が起きた場合    目 次


ネットワーク関連の英語版ソフトをインストールすると、TCP/IPスタックを英語版で上書きする場合がある。これが不具合を起こし、IPアドレスを書き込めなくなることがある。
http://www.microsoft.com/JAPAN/support/kb/articles/J046/0/83.htm

mstcp.dll(あるいは、他にも幾つかが)英語版に変わっていた。

直し方
CD−ROMからTCP/IPを抜き出すのも面倒なので、以下から、MSDUN3.1をダウンロードしてsetupして日本語版に戻す。

   http://www.microsoft.com/japan/windows/dun1_3/
   http://www.microsoft.com/japan/windows/dun1_3/
この時、
    言語バージョンが異なるファイルがあるが、保存するか?

ときいてくるので、「いいえ」を選んで上書きしてしまう

    バージョンが新しいものがあるがそのままにするか?

にたいしては、「はい」を選ぶ。決して、上書きしてはならない。これは、今、入れた新しいファイルあるいは、IE4、5などで入れた新しいファイルである。

蛇足であるが、ネットワークコンピュータからTCP/IPを消して、再インストールするだけでは、windows¥systemの中のファイルが英語版に書き換えられているので、直らない。


なお、Windows9xのネットワーク周りには、バグがいるので、この際、3つともまとめてupdateした方が良い。;Winsock2、DialUpNetwork(MSDUN3.1)、TCP(236926)

Winsock2はMSDUN3.1の中に含まれているので、MSDUN3.1を入れれば、不要である。

次の順にインストール

1.Winsock 2 : Winows95のみ

WinSockの新バージョン(と言っても96年の話だが)。Win95はWinSock1.1.
下の2.MSDUN3.1を入れるだろうから、これは事実上不要

2.MSDUN3.1 : Winows95のみ

ダイアルアップアダプタの新バージョン。

3. Microsoft DUN 1.3 and Winsock2 Year 2000 Update : Windows95のみ

上記、1、2のアップデート。

4.Windows 95 and Windows 98 TCP/IP May Retransmit Packets Prematurely (Q236926) : Win95/98/98SE

Win95と98ではパッケージが違うのでダウンロードに注意。

Download 236926usa8.exe now ;Win98/98SE
Download 236926usa5.exe now ;Win95

TCPはコネクション型の通信だから、送ったデータには、相手から到着した旨の返信(ACK;acknowledge;アック)が来る。これがある一定時間経過しても来ない場合、相手に着かなかったとみなして、再送する。ところが、ネトワークが遅いと、データは途中で消失したのではなく、まだ配送中で、相手に届いていないだけの場合がある。よって、再送は実は不要なのに送ってしまったわけで、この再送データのアックも、一定時間後に来ないので、再再送する。ということが起きる。まあ、その内、最初のデータが届いてAckが来るので、何回目かの再送はやっと止めることができるだろうが。で、Win9xのTCPプログラムには数値計算部にバグが居て、このミスをひき起こし、非常に遅くなることがある。






このページの先頭    目 次