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

2000.10.15 / CORY

 
PC-9800では、SCSI I/F (BIOS付き)にMOドライブを接続するだけで、認識もしくは起動させることもできます(640MB以上は要OS対応)。便利で、また国内では書換可能リムーバブルメディアとして一番普及しているMOを、FreeBSDでも使用する方法を模索してみました。
ここでは、128MB, 230MB, 540MB, 640MB, 1.3GB(GIGAMO) に対応します。
 
注意!

ここではSCSI接続のMOドライブについて説明しています。
ATAPIやUSBで接続したドライブの場合は異なる場合があります。


以下で示すデバイス名は、あくまで例です。
お使いの環境により異なりますので注意してください。
デバイス名はHDDと似ているため(SCSI HDDと併用する場合などは
数値のみの違いになる)、間違えないように注意してください。
万一間違えた場合、最悪、HDDの内容を破壊することが考えられます

 
<UFSで使う>
UFS(Unix File System:FreeBSD等で利用されるフォーマット形式)でフォーマットして使用する方法です。
 
  1. /etc/disktab の書き換え
     
    MOなどのリムーバブルディスクのディスクラベル情報を保持しているファイルです。初期状態ではMOの設定が記述されていませんので、追加してやります。
    ただし、この作業は、128〜540MBのディスクのみを使用する場合には不要です。
     
    以下の設定は、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*)

 
<参考文献>
以下のページを参考にさせていただきました。この場を借りて御礼申し上げます。
CORY's Index | PC-98 Tips | FreeBSD(98) 4.0R で MO(光磁気ディスク)を使う

更新日 : 2001年06月08日 ()