CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > (none)

> FreeBSD で MO(光磁気ディスク)を使う

FreeBSD で 3.5インチMO(光磁気ディスク)を使う

since 2000.10.15 / CORY

 
MS-DOS 時代より今まで、便利な上に信頼性も高い書換可能リムーバブルメディアとして活躍している MO を、FreeBSD で使う方法です。
ここでは、128MB, 230MB, 540MB, 640MB, 1.3GB(GIGAMO) に対応します。
 
なお、PC-9800 では SCSI I/F(BIOS付き)に MO ドライブを接続するだけで、MO から起動させることもできます(640MB以上のメディアでは OS が対応している必要がありますが、FreeBSD をはじめ一般的な OS では残念ながら対応していません)
 
注意!

以下で示すデバイス番号は、あくまで例です。ご利用の環境により異なりますので注意してください。
デバイス名が HDD などと同じのため、SCSI HDDと併用する場合などには番号のみの違いになります。USB 接続の HDD やフラッシュメモリドライブなどを併用される場合などは特に、他のドライブの間に MO が挟まれるといった状況にもなりがちですが、間違えないように注意してください。
万一間違えた場合、最悪、HDDの内容を破壊することが考えられます
 
なお、ここでは SCSI 接続の MO ドライブについて説明していますが、ATAPI や USB で接続したドライブの場合も、CAM と呼ばれる仕組みを使い、SCSI に見立てて操作をします。そのため SCSI 接続でなくとも一般に SCSI と同様の操作感になります(そのためデバイス番号は更に混乱しますから(^^; 気をつけてください)

 
<UFSで使う>
UFS(Unix File System:FreeBSD等で利用される論理形式)で初期化して使う方法です。
 
  1. /etc/disktab の書き換え
     
    MO などリムーバブルディスクのディスクラベル情報を保持しているファイルです。FreeBSDのバージョンによっては MO の設定が記述されていない場合がありますので、まずは確認します。
    % grep "^mo" /etc/disktab
    mo128|Generic 3.5in 128MB MO disk:\
    mo128sl1|Generic sliced 3.5' 128MB MO disk No.1:\
    mo128sl2|Generic sliced 3.5' 128MB MO disk No.2:\
    mo230|Generic 3.5in 230MB MO disk:\
    mo230sl1|Generic sliced 3.5' 230MB MO disk No.1:\
    mo230sl2|Generic sliced 3.5' 230MB MO disk No.2:\
    mo540|Generic 3.5in 540MB MO disk:\
    mo640|Generic 3.5in 640MB MO disk:\
    mo1300|Generic 3.5in 1300MB MO disk:\
    mo525_1k|5.25in 1KB sector MO disk:\
    

    上記のように全てのメディアタイプについて記述されていれば、以下の手順は必要ありません。
    記述のない項目については追加してやります。
     
    以下の設定は、MO全体を1パーティション(aパーティション)として確保する場合の例です。
     
    # for 3.5inch MO disks
    mo128|Generic 3.5in 128MB MO disk:\
    	:dt=SCSI:ty=removable:\
    	:se#512:nt#64:ns#32:nc#122:su#248826\
    	:pa#248826:oa#0:ba#8192:fa#1024:ta=4.2BSD:\
    	:pc#248826:oc#0:
    
    mo230|Generic 3.5in 230MB MO disk:\
    	:dt=SCSI:ty=removable:\
    	:se#512:nt#64:ns#32:nc#218:su#446325:\
    	:pa#446325:oa#0:ba#8192:fa#1024:ta=4.2BSD:\
    	:pc#446325:oc#0:
    
    mo540|Generic 3.5in 540MB MO disk:\
    	:dt=SCSI:ty=removable:\
    	:se#512:nt#64:ns#32:nc#509:su#1041500:\
    	:pa#1041500:oa#0:ba#8192:fa#1024:ta=4.2BSD:\
    	:pc#1041500:oc#0:
    
    mo640|Generic 3.5in 640MB MO disk:\
    	:dt=SCSI:ty=removable:\
    	:se#2048:nt#64:ns#32:nc#152:su#310352:\
    	:pa#310352:oa#0:ba#8192:fa#2048:ta=4.2BSD:\
    	:pc#310352:oc#0:
    
    mo1300|Generic 3.5in 1.3GB MO disk:\
    	:dt=SCSI:ty=removable:\
    	:se#2048:nt#64:ns#32:nc#296:su#605846:\
    	:pa#605846:oa#0:ba#8192:fa#2048:ta=4.2BSD:\
    	:pc#605846:oc#0:
    

     
  2. MBR領域の削除
    # dd if=/dev/zero of=/dev/rda2 bs=512 count=4 (128〜540MB)
    # dd if=/dev/zero of=/dev/rda2 bs=2048 count=4 (640MB, 1.3GB)
     
    Windows95/98でフォーマットすると、起動可能なMBRを書き込むため、 FreeBSDからうまくdisklabelできなくなるようです(PC-98はもちろん、 一般にMOブートできないAT互換機でも同様に書き込まれるそうです)、 そんなメディアを持っている場合は、上記の操作でMBR部分を消してやります。
     
  3. ディスク・ラベルの書き込み
    # disklabel -r -w -B /dev/rda2c [disktype] (128〜540MB)
    # disklabel -r -w /dev/rda2c [disktype] (640MB, 1.3GB)
    # disklabel -r -w -B /dev/rda2c auto (128〜540MB)
     
    デバイス名には RAWデバイス名(/dev/rda2c など)を指定しますが、 省略形(da2 など)で指定することもできます。
    /etc/disktab を書き換えた場合は、disktab に設定したdisktypeを指定します。
     
    disktabを書き換えなかった場合、[disktype] を autoにすると、自動判別してaパーティションのみのラベルを作ってくれます。
     
  4. ファイル・システムの構築
    # newfs -t 64 -u 32 /dev/rda2c
     
    これで、ファイルシステムが構築されます。詳しくは man newfs。
    デバイス名には RAWデバイス名(/dev/rda2c など)を指定します。
     
  5. マウント
    あとは、通常通りマウントしてやるだけです。
    例: # mount /dev/rda2a /mnt
     
    メディアを取り出す前には umountを忘れずに。
    例: # umount /mnt

 
例:230MB MOの場合
yakko# disklabel -r -w -B da2 auto
disklabel: No space left on device	(MBRが書き込まれていてdisklabelを書き込めません)
yakko# dd if=/dev/zero of=/dev/rda2 bs=512 count=4
4+0 records in
4+0 records out
2048 bytes transferred in 0.0025838 secs (1443262 bytes/sec)
yakko# disklabel -r -w -B da2 auto
yakko# newfs -t 64 -u 32 /dev/rda2c
Warning: 140 sector(s) in last cylinder unallocated
/dev/rda2c:     446324 sectors in 218 cylinders of 64 tracks, 32 sectors
        217.9MB in 14 cyl groups (16 c/g, 16.00MB/g, 3904 i/g)
super-block backups (for fsck -b #) at:
 32, 32832, 65632, 98432, 131232, 164032, 196832, 229632, 262432, 295232,
 328032, 360832, 393632, 426432

例:1.3GB MOの場合
yakko# dd if=/dev/zero of=/dev/rda2 bs=2048 count=4
4+0 records in
4+0 records out
8192 bytes transferred in 0.008427 secs (972124 bytes/sec)
yakko# disklabel -r -w -B da2 mo1300
disklabel: /boot/boot2 too large	(2KB/sectorのディスクにはbootを書き込めません)
yakko# disklabel -r -w da2 mo1300
yakko# newfs -t 0 -u 0 -m 1 /dev/rda2a
Warning: changing optimization to space because minfree is less than 8%
Warning: 1448 sector(s) in last cylinder unallocated
/dev/rda2a:     2423384 sectors in 296 cylinders of 64 tracks, 128 sectors
        1183.3MB in 19 cyl groups (16 c/g, 64.00MB/g, 7872 i/g)
super-block backups (for fsck -b #) at:
 32, 131232, 262432, 393632, 524832, 656032, 787232, 918432, 1049632, 1180832,
 1312032, 1443232, 1574432, 1705632, 1836832, 1968032, 2099232, 2230432,
 2361632


こうして書き込まれたdisklabelは次の通りです(1.3GB)。
yakko# disklabel da2
# /dev/rda2c:
type: SCSI
disk: mo1300
label:
flags: removeable
bytes/sector: 2048
sectors/track: 32
tracks/cylinder: 64
sectors/cylinder: 2048
cylinders: 295
sectors/unit: 605846
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # milliseconds
track-to-track seek: 0  # milliseconds
drivedata: 0

3 partitions:
#        size   offset    fstype   [fsize bsize bps/cpg]
  a:   605846        0    4.2BSD     2048  8192    16   # (Cyl.    0 - 295*)
  c:   605846        0    unused        0     0         # (Cyl.    0 - 295*)

 
USB 接続ドライブについて

ドライブといえば SCSI という時代でもなくなり、近頃は内蔵ドライブといえば ATAPI、外付けでは USB 接続のものが主流になりつつあります。このご時世、SCSI 接続のドライブはもはや入手困難、入手できても割高という状況になっています。
いっぽう、USB 接続のドライブについては近頃は安価かつ小型で場所を取らず、しかもバスパワーで動作するものも普及し、かなり便利になりつつあります。実際、MO を使い続けたい人にとっては、そんな手軽に持ち運んで使える小型ドライブに惹かれている方も多いのではないでしょうか。
そこで、近頃入手しやすい USB 接続の MO ドライブについても動作を試してみたところ、次のように、いわゆる CAM 化されて疑似 SCSI 装置として認識され、特に問題なく動作しているようです。
 
<動作環境>
% dmesg
...
ohci0: <NEC uPD 9210 USB controller> mem 0x20411000-0x20411fff irq 10 at device 15.0 on pci0
usb0: OHCI version 1.0
usb0: <NEC uPD 9210 USB controller> on ohci0
usb0: USB revision 1.0
uhub0: NEC OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 3 ports with 3 removable, self powered
umass0: FUJITSU USB Magneto-Optical Device, rev 2.00/0.01, addr 2
...
GEOM: create disk da0 dp=0xc1ad8c50
da0 at umass-sim0 bus 0 target 0 lun 0
da0: <FUJITSU MCS3130UB-S 0010> Removable Direct Access SCSI-4 device 
da0: 1.000MB/s transfers
da0: Attempt to query device size failed: NOT READY, Medium not present
(da0:umass-sim0:0:0:0): READ CAPACITY. CDB: 25 0 0 0 0 0 0 0 0 0 
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition
(da0:umass-sim0:0:0:0): NOT READY asc:3a,0
(da0:umass-sim0:0:0:0): Medium not present
(da0:umass-sim0:0:0:0): Unretryable error
Opened disk da0 -> 6
(da0:umass-sim0:0:0:0): READ CAPACITY. CDB: 25 0 0 0 0 0 0 0 0 0 
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition
(da0:umass-sim0:0:0:0): NOT READY asc:3a,0
(da0:umass-sim0:0:0:0): Medium not present
(da0:umass-sim0:0:0:0): Unretryable error
Opened disk da0 -> 6

※ちなみにメディアを入れておかなかったためにエラーになっていますが、本文の手順で一般的な SCSI 接続のドライブと同様に利用可能です。
※ここでの掲載はあくまで筆者の環境における動作例であり、実際の動作を保証するものではありません。

 
<2.3GB MO について>
現状、ドライブを持っていないので未確認です。また今のところ対応予定もありません(^^;。
 
<PC/AT互換機について>
PC/AT互換機でも本文とほぼ同様の使い勝手になります。
ただし、本文の記述にある「MO からの起動」は原則できない(一部対応している BIOS がありますが)等の違いがありますが、本文の主旨外なので詳しいことは割愛します。
 
<下位互換性について>
本文は原則として FreeBSD 4系統・5系統での利用方法になります。
 
FreeBSD 2 系列など旧バージョンでは、MO や PD など専用に od ドライバが用意され(または別途インストールし)、これを使っていましたが、この場合には使い勝手が異なります。現在は使われないので詳しい説明は割愛しますが、もし MO ドライブが od と認識されている場合には、本文の方法は使えませんので、ご注意ください。
過去の経緯について詳しい情報が必要な場合は FreeBSD QandA 22 などを当たってください。
 
また、od ドライバでは一緒に support されていた DVD-RAM については、ここで紹介する方法では対応しませんので、詳しいことは別の機会に譲りたいと思います。
 
<参考文献>
以下のページを参考にさせていただきました。この場を借りて御礼申し上げます。
 
<改版履歴>
2005.05.15 2版
FreeBSD 5系列に対応、USB接続 MO ドライブについての記述を追加
2000.10.15 初版
原題:「FreeBSD(98) 4.0R で MO(光磁気ディスク)を使う」

更新日 : 2010年01月12日 (89)

CORY's twilight zone > 98備忘録 (tips)[an error occurred while processing this directive] > (none)

[an error occurred while processing this directive]
Copyright © 1996-2019 CORY / Kimagurenote, All rights reserved.