自作初號機をサーバにまわし、弐號機をWindowsXP との デュアルブートにしようという計画である。
HDDは60GBだが、XPインストール時にあらかじめ分割しておいた。(XPのインストールの前に分割するかどうかの設定がある)
XPシステム用として15GB、データ用などの33GB、そして、FreeBSD用の12GBである。
しかし、初號機からのデータ移行がほぼ完了し、FreeBSDをインストールしようとして、再びつまづいたのであった。
FreeBSDのCDROMから起動してみると、システム用のNTFS領域はしっかり認識されているのだが、その後の33+12GBは合体して拡張MSDOS領域ということになっている。一番後の12GBは拡張DOS領域の中の論理ドライブということになっていて、これを解放してFreeBSD領域に転用できないのだ。
このままでは、データ用の33GBもろとも解放するしかない。これではダメなので、FDISKで領域確保のやり直しをすることにした。
当然ながら、33GB領域中のデータはシステム用の15GB領域にバックアップしなければならない。データ等は既に7GB程度溜まっており、このコピーに10分程度かかった。
次に起動フロッピを作成 (XPでは、簡単に作成できる)。これに FDISK.exe をコピーすればよい。で、XPシステムの中にFDISKが無いか探してみたのだが、これが無いのである。びっくり。
しかたないので、WinMeの起動ディスクを使うことにする。これにはFDISK.exeがちゃんと入っている。 (みなさん、WinMeや98の起動ディスクは何枚か作って保管しておいた方がいいですよ)
フロッピから起動して、FDISKを実行。ここでNTFS領域を残して拡張MSDOS領域を削除 (最初に拡張DOS領域中の論理ドライブを削除しなければならない)。
削除完了したら、次に 基本(プライマリ)DOS領域 を33GBで作成。次に拡張DOS領域として12GBを確保した。
これで、FreeBSDのインストールで拡張DOS領域を削除してFreeBSD領域に変更し、無事にFreeBSDがインストール完了とあいなった。
が、しかし、これでは終わらなかったのである。
どうなったかというと、Windowsが起動できなくなってしまったのであった。かわりに、FreeBSDが何事もなかったかのように起動してくる。
単純に二つのOSを入れればデュアルブートできると思っていた私がアホだった。(NEC PC98症候群である)
再びフロッピから起動し、FDISK。たしか、アクティヴ領域がどうのこうのというのがあった。
そうか、FDISKでアクティヴ領域を切り替えるワケね。
で、やってみたが、二つのOSを同時にアクティヴにはできないのである。
うーむ。ブートローダはたしかXPに入っているはず・・で、またまたNET検索。
見つけた。そうか、システムのプロパティ→詳細設定→起動と回復→設定→起動システム→編集・・・これだね。FreeBSDの起動用ファイルをコピーして C:\ に置けばよい・・と。
FreeBSDとのファイル交換のために1.2GB程度のFAT32領域を作っておけば楽になるということで、再度FDISKでパーティションを変更。
# Device Mountpoint FStype Options Dump Pass# /dev/ad1s1 /dos msdos rw 0 0 /dev/ad0s2 /ntfs ntfs ro 0 0
※ /dos/ や /ntfs/ をあらかじめ作成しておかないと、あとで泣きをみる・・・起動時にマウントできず、シングルユーザモードになってしまうのだ。(手動で mount して mkdir すればいいだけなんだけど、最初はパニクるわな)
結局、C:NTFS 15GB F:NTFS 31GB G:FAT32 1.2GB 残りがFreeBSD (この領域はWinXPからは見えない) の4分割ということで落ち着いた。
デュアルブートの方は、FreeBSDの /boot/boot1 ファイルを C:\にコピーし、無事、起動時に起動OSの選択画面が出現。ここで選択しなければ、10秒後にXPが起動するようにした。
FreeBSDは、Xがまともに動くか不安であった(GeForce2のドライバが無い)が、とりあえず1280×1024の16bitで動いた。
初號機には20GBと5GBのHDDが載っていたが、個人用インターネットサーバでは5GBあれば十分である。で、初號機から取り外して弐號機に付けたというわけ。 HDDはIDEである。プライマリマスタにXPをインストール。プライマリスレイヴ(こちらにはFAT32の/dosパーティションもある)にFreeBSD 4.5 RELEASEをインストールしたわけだ。
XPのローダを使ってFreeBSDを起動させようと、/boot/boot1 を/dos経由でプライマリマスタであるXP側のC:\にコピーし、XPの boot.ini を設定。
しかし、XPのローダからFreeBSDを選択すると、「Boot error」と、表示されるだけで、起動できないのよ。BIOSでプライマリマスタを殺せば、FreeBSDは起動可能なので、インストール自体は成功していると思われるのだが・・。
プライマリマスタのHDDのみにXPとFreeBSDを同居させていたときは、デュアルブートが可能だったわけだが・・・どこを見落としているのかまったく判らず、途方に暮れてしまったのであった。
さて、「Boot error」 というメッセージを出してるのは、XPのマネージャか、それとも boot1か・・というところから、boot1をバイナリエディタで覗いてみると、しっかり「Boot error」という記述があった。これで、このメッセージはboot1が出しているという推測が成り立つわけだ。
そこで、XPのブートマネージャは、boot1の起動に成功しているが、boot1自体が2台目のHDDから起動するようにはなっていない(と、いうか、最初のHDDを指定して起動するようになっている)、と推理した。
しかし、この設定を変える方法が判らないのである。
困ったときの検索エンジンというわけで、boot1を書き換えるということに着目してWebを漁った。
危うく見逃すところだったが、ついにその方法を記述したページを発見することができ、バイナリエディタで3バイト分書き換えて無事起動することができましたとさ。
とはいうものの、件のページの記述どおりにやっただけで、何をどうやっているのか判らないため、すっきりしないんだよねぇ。(苦笑)
ちなみに、その方法とは・・・
boot1をバイナリエディタで開いて、「80 FA 80」というのを「B2 81 90」に書き換えるのである。
(書き換え前) 00000050: C5 F3 A5 BE EE 7D 80 FA 80 72 2C B6 01 E8 67 00
(書き換え後) 00000050: C5 F3 A5 BE EE 7D B2 81 90 72 2C B6 01 E8 67 00
件のページには、4.4での対処方法として書かれていたのだが、4.5でもまったく同じ方法でOKだった。
ハナシ変わって、Apacheに mod_auth_digest と mod_dav を組み込んでみたのだけれど、WinXP の WebDAVクライアント(Microsoft-WebDAV-MiniRedir/5.1.2600)からダイジェスト(Digest)認証(暗号化パスワード のようなもの)を使ってWebフォルダにアクセスしようとすると、パスワードエラーになってしまうのであった。
ブラウザによる通常のアクセスでは、ダイジェスト認証は、正常に働いている。また、Webフォルダの方も認証の設定さえ外せばXPから正常にアクセスできる。
さらに、別マシンのWin95(Microsoft Data Access Internet Publishing Provider DAV)からは、ダイジェスト認証でWebフォルダに正常にアクセスできる。(その後、Win2Kからの正常アクセスも確認した)
しかし、XPからのダイジェスト認証では、パスワード入力要求がえんえんと続いてしまうのである。
そこで、試しに、ダイジェスト認証からベイシック(Basic)認証にしてみて XPが何を送信しているのかパケットキャプチャしてみたところ、ユーザ名として、servername\username を送っている。
そこで、htpasswdでユーザを servername\\username で登録することにより、ベイシック認証は成功するようになったのである。(なんだこりゃ)
しかし、セキュリティ上、どうしてもダイジェスト認証でやりたいわけだ。(ちなみに、ダイジェスト認証はNetscape4.*では使えない。7.* や Mozilla1.* ではOK)
ダイジェストに戻して、htdigest でのユーザ作成で、servername\username や servername\\username で登録してみたが、やはり認証に失敗してしまう。(Apacheのerror_logでは、password mismatch: ・・と出る) XPのWebDAVクライアントのこの振る舞いは、バグとしかいいようがない。(IISなんかは、これでも認証しちゃうんでしょうかね)
なんかうまい解決法はないものかなぁ。(ダイジェスト認証を捨てて、SSLでやればいい・・・のかなぁ・・でも、DAVまでSSL化できるのか?? うーーーん、うーーーん)
その後、フリーソフトの DAV Explorer (JAVAで動くやつ) を使えばダイジェスト認証でも正常にアクセスできることが判った。
やはり、XPのDAVクライアントはおかしい!!・・自社サーバのIISに特化しているのだ。そう結論づけざるを得ない。
Windowsクライアントからは、TTSSHを使ってアクセスしている。これでtelnetと同様にテキスト形式のパスワード認証を使うには、何もする必要がないわけだが、RSA認証を使おうとすると、RSA鍵を作らなくてはならない。(RSAじゃなくてもパスワードは暗号化されてネットワークを流れるから安心なのだが、RSAにするとパスワードさえ流れなくなる)
これをWindows側で作成する方法もあるが、ssh-keygenコマンドでFreeBSD側でも作成可能である。
ssh-keygenを実行すると、パスフレーズを訊いてくるので、適当なフレーズ(もちろん、長い方が安全)を入力。その結果、identity というのと identity.pub という2つのファイルができる。identityが、いわゆる「秘密鍵」。identity.pub が「公開鍵」である。
通常とは逆に、秘密鍵である identity の方を何らかの手段でWindows側にコピー。残った identity.pub を rename して authorized_keys とする。
あとは、TTSSHの設定で「RSA鍵(個人鍵)」を コピーした identity とする。
ftpに代わるsshを使ったファイル転送ツールに scp というのがあるが、このWindows版である WinSCP というものも使い始めた。
ところが、起動してみると「Error skipping startup message」などというエラーで接続できない。auth.logを見てみると、認証は成功しているようだ。と、なると shell か?・・・てなわけで、まさかとは思ったがFreeBSDに bash をインストールしてみたら、あっさりloginできた。
そうなんだ。cshぢゃダメなのね。作者もcsh系嫌いのようだし、やはり linux 優勢のようで・・・(^^;)
で、気になるのが転送速度なんだけれど、ftpと比較すると暗号化されている分、やはり遅いようだ。でも、これはこれでしょうがないんだろうなぁ・・・ blowfish と AESでは、なんぼかblowfishの方が速いけど、あまり差はない。