ZipドライブをSolaris2.6マシン(SPARC Ultra1)につなげてみました。 ufs での使用 はできたので、 今度は MS-DOS 形式での扱いができる mtools に挑戦です。
$Id: solzipm.html,v 3.10 2000-05-29 04:11:37+09 kabe Exp $
ここで述べるのはつなぎ方の種類 のうち、
/vol/dev/aliases/rmscsi0
)、
mtools を setuid する必要がなく便利です。
mtoolsのインストールやメディアのフォーマットにも root 権限は不要です。
mtools は 本家本元から 持ってこなくても、 FreeBSD や Linux のアーカイブを漁れば大抵落ちています。
材料を揃えたら、とりあえず ハードウェアとvoldの設定を 済ませておきましょう。
mtools は ハードウェア寄りのツールの割には configure は簡単です。
./configure --enable-new-vold --prefix=/usr/local --disable-floppyd重要なのは --enable-new-vold でしょうかね。あとは趣味。
モジュール数が多い割には mtools のソースディレクトリは
全ファイルがベタに置いてあって、何を読んだらいいかわかりにくいです。
INSTALL や README には大したことは書いてありません。ここは
mtools.5
と mtools.1
を
まず読んでおきましょう。
今回は設定に手間取りました。 基本的に Linux + フロッピー という環境がデフォルトのようで、 他の環境で使うには自分で色々考えねばならんようです。
結論から言うと、
drive X: vold=1 file="rmscsi0" partition=4 scsi=1 priviledged=0 nodelay
mformat_only cylinders=2406 heads=2 sectors=40
と書く必要はないようです。
device a: file="floppy" vold=1
相当が組み込まれているので、
特に mtools.conf に書く必要はありません。(書いても害はない)
色々やった後わかりましたが、無理に media_findname(3x) を使おうとしなくても、 デバイスファイルの指定に関しては直接 file="/vol/dev/aliases/rmscsi0" で全然問題ないみたいです。
mpartition -v で見るとわかりますが、ZIP 100 の容量は 計196608 (0x30000) セクタ == 100663296 バイト あるようです。 format.datの設定では 2406x2x40= 98549760までですので、 ジオメトリを自動設定させた mtoolsの方が詰め込めます。 (format.dat書き換えれば ufs やデバイス直叩きでも100Mいくと思いますが)
zero 100401152 12-13-1999 7:30 zero
zero 98304000 12-13-1999 7:36 zero
直に /vol/dev/aliases/rmscsi0 にたたき込むと 100663296バイトまで 詰め込めます。format すると 98631680 までなんですよね(何が違うんだろう)
vold 経由なので、root権限は要りません。
DOS/V(!) のハードディスクをフォーマットするのと手順は ほとんど同じです。(めんどくさいとも言う)
これらの手順をすっとばすと、 「DOSのファイルシステムじゃない」「パーティションがない」 などのよくわからんエラーに悩まされます。基本を守ろう。
エジェクトする際、 mzip -e x: ではオフラインにはなるようですが、 なぜか「がこんっ」までいきません。 (それ以前にパッチ当てないと vold形式ファイル名を理解しない)
% volrmmount -e rmscsi0 % cat /kernel/genunix >/vol/dev/aliases/rmscsi0 % eject rmscsi0として、ufs の痕跡を消しておいたほうが良いようです。 再度挿入してマウントされなければ大丈夫。
clear_drive Jと書くと消せます。(J: のようにコロンをつけてはいけない、らしい)
/vol/dev/dsk/unlabeled
に
なるんですけどZIP は通常は FDISKパーティションを切って使うようになっているのですが、 MO みたいに SuperFloppy形式(て言うのかな?)でフォーマットすることも 一応可能だったりします。
drive v: file="/vol/dev/aliases/rmscsi0" scsi=1 privileged=0 nodelay \ mformat_only cylinders=2408 heads=2 sectors=40 drive w: file="/vol/dev/aliases/rmscsi0" scsi=1 privileged=0 nodelay \ mformat_only cylinders=3072 heads=2 sectors=32
要するに partition= がありません。 前者は format.dat に準じたパラメータ、 後者は 196608セクタいっぱいまで使うもの。
ただこの方法は他のOSと互換性はないと思うので、 ufsでの使用と同様、ローカルでの使用にとどまると思います。
これをそのまま突っ込んでやると vold が認識して pcfsでマウントしてくれる(!)ように見えますが、 FAT12でマウントされているのでよろこんではいけません。 書き込んだら最後 FAT ごと破壊されます。 (mdirすると腐っているのがわかる) 使う際にはいちいち volrmmount -e してから mtools でアクセスします。
FAT16でマウントするには、手動で
mount -F pcfs /vol/dev/dsk/c0t5d0/label:c /mntなどと、":c" をつけます。(SPARCでもできるらしい。) せっかく voldがあっても、このままでは root でしか使えません。
本来 ":c" は FDISK 形式の指定ですが、 mformat は partition=句が なくてもパーティションテーブルを偽造してくれるので FDISK 形式で マウントできたりします。 ので、Windowsでフォーマットしたハードディスクも この方法でマウントはできます。