Solaris/Linux/FreeBSDでCD-Rを焼こう

YAMAMORI Takenori ●yamamori

§研究編 [ISO9660/RockRidge/Jolietの詳細]

●普通にマウントして見られるのは,CD-ROMの一面に過ぎない

いまここに,RockRidge/Jolietの両方に対応して焼かれたCD-ROMがあるとします. このCD-ROMの見え方は,(1)RockRidgeでマウント,(2)Jolietでマウント, (3)素のISO9660でマウントの少なくとも3通りあります. さらに,素のISO9660でマウントする場合, 通常はOSがファイル名の後ろの“;1”や, 拡張子のないファイル名の後ろの“.”を取ったり, さらに,ファイル名を小文字に変換したりしますが, これらの処理をやめさせてマウントすることもできます. これを(4)として含めると,1枚のCD-ROMに,4種類のマウント方法があるといえます.

これら4種類のマウント方法を以下にまとめます.Linux/FreeBSD/Solarisで, mountコマンドのオプションが微妙に違うのが興味深いところです.

●Linux/FreeBSD/Solarisでの,CD-ROMの4通りのマウント方法
(1)RockRidge優先
Linux:   mount -t iso9660 -r /dev/scd0 /mnt/cdrom
FreeBSD: mount -t cd9660  -r /dev/cd0c /cdrom
Solaris: mount -F hsfs    -r /dev/dsk/c1t4d0p0 /mnt

(2)Joliet優先(RockRidge不可)
Linux:   mount -t iso9660 -r -o norock /dev/scd0 /mnt/cdrom
FreeBSD: mount -t cd9660  -r -o norrip /dev/cd0c /cdrom
Solaris: (Jolietには対応していません)

(3)ISO9660(RockRidge不可・Joliet不可・ファイル名変換あり)
Linux:   mount -t iso9660 -r -o norock,nojoliet /dev/scd0 /mnt/cdrom
FreeBSD: mount -t cd9660  -r -o norrip,nojoliet /dev/cd0c /cdrom
Solaris: mount -F hsfs    -r -o nrr,notraildot  /dev/dsk/c1t4d0p0 /mnt

(4)ISO9660 raw(RockRidge不可・Joliet不可・ファイル名変換なし)
Linux:   mount -t iso9660 -r -o norock,nojoliet,map=off /dev/scd0 /mnt/cdrom
FreeBSD: mount -t cd9660  -r -o norrip,nojoliet,gens    /dev/cd0c /cdrom
Solaris: mount -F hsfs    -r -o nrr,traildot,nomaplcase /dev/dsk/c1t4d0p0 /mnt
(Solarisでは,ファイル名に付いた“;1”などのバージョン番号を表示した状態で
  マウントできない模様)
(なお,ここでのデバイスファイル名は, SCSI CD-Rドライブが,SCSI ID=4として1台存在し, それをCD-ROMドライブとしてマウントするものとして書いています)

○便利な/etc/fstab(vfstab)の書き方

これらの4種類のマウント方法で,いつでもマウントできるようにしておくと, CD-ROMをチェックするのに便利です. ここでは,Linuxの慣習にしたがって, 以下のように/mntの下に4種類のマウントポイントを作ります.

# cd /mnt
# mkdir cdrom joliet iso isoraw

そして,以下のような行を/etc/fstab(Solarisでは /etc/vfstab)に追加すると, あとは“# mount /mnt/cdrom”とか“# mount /mnt/isoraw”とかで, マウント方法別に一発でマウントできるようになります.

ただし,同じCD-ROMを,たとえば/mnt/cdrom/mnt/jolietとに, 同時にマウントするようなことはできません.

Linuxでは,userオプションを付けているので, 一般ユーザのままでも直接マウントできます.

※注
なお,Solarisでこの方法を用いる場合は, vold(CD-ROMなどを自動的にマウントしてくれるデーモン)を 止める必要があります. /etc/vold.confをリネームするか, /etc/rc2.d/S92volmgtX-S92volmgt などにリネームするかした上で,voldkillして下さい.

●4種類のマウントが試せる/etc/fstabの例 (Solarisは/etc/vfstabで3種類)
Linuxの/etc/fstab:
/dev/scd0 /mnt/cdrom  iso9660 ro,noauto,user,exec                    0 0
/dev/scd0 /mnt/joliet iso9660 ro,noauto,user,norock                  0 0
/dev/scd0 /mnt/iso    iso9660 ro,noauto,user,norock,nojoliet         0 0
/dev/scd0 /mnt/isoraw iso9660 ro,noauto,user,norock,nojoliet,map=off 0 0

FreeBSDの/etc/fstab:
/dev/cd0c /mnt/cdrom  cd9660 ro,noauto                      0 0
/dev/cd0c /mnt/joliet cd9660 ro,noauto,norrip               0 0
/dev/cd0c /mnt/iso    cd9660 ro,noauto,norrip,nojoliet      0 0
/dev/cd0c /mnt/isoraw cd9660 ro,noauto,norrip,nojoliet,gens 0 0

Solarisの/etc/vfstab:
/dev/dsk/c1t4d0p0 - /mnt/cdrom  hsfs - no ro
/dev/dsk/c1t4d0p0 - /mnt/iso    hsfs - no ro,nrr,notraildot
/dev/dsk/c1t4d0p0 - /mnt/isoraw hsfs - no ro,nrr,traildot,nomaplcase

以上の応用として,RockRidgeとJolietのどちらでマウントするかによって 見えるファイルが異なるという,手品のようなCD-ROMを作ることもできます. (コラム「マジックミラーCD-ROMの作り方」参照)


To 『Solaris/Linux/FreeBSDでCD-Rを焼こう』index


このページは、技術評論社 SoftwareDesign 2000年6月号、『CD-R/CD-ROM完全ガイド』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 Home
yamamori