CD-R/WをDVD-RAMのようにランダムアクセス可能にするお話です。
○用意するもの
packet-cd writingのパッチ
http://sourceforge.net/projects/packet-cd/
なるべく最新のもの、preバージョンでもかまわない
上のパッチに対応したカーネルソース
http://www.kernel.org
UDFのソース
http://sourceforge.net/projects/linux-udf/
各種ツールを利用します
○手順
まずカーネルソースを展開して、packet-cdパッチを当てます。
# patch -p1 < ~/packet-x.x.x
カーネルの再構築を行います。
packet-cdを有効にするために、[block devices]→[Packet writing on CD/DVD media]をyかmに。
また、[File systems]→[UDF file system support]をyかmに、その下の[UDF write support]をyにしましょう。dangerousとなっていますが気にせずに。
[Packet writing on CD/DVD media]の項目の下にある、[Enable write caching]をyにした場合は、ライトキャッシュが有効になります。
yにすればいいとおもわれるかもしれませんが、「For now this option is dangerous unless the CD-RW media is known good,as we don't deferred write error handling yet.」らしいです。
カーネルのコンパイルが終わったら、再起動して、そのカーネルで立ち上げてください。立ち上がりましたか?
次はUDFのソースからツール類をコンパイルします。カーネルモジュールなどは、すでにカーネルに取り込まれているのでツールのみ利用します。
# cd udf-x.x.x
# make config
# cd ../tools ; make
# cp pktsetup mkudf cdrwtool /usr/sbin
デバイスファイルを作成します。major-numberは97です。
# mknod /dev/pktcdvd0 b 97 0
CD-R/Wをフォーマットして、udfファイルシステムを構築します。
# cdrwtool -d /dev/sr0 -q
的場氏の環境ではSCSI CD-RWですので、sr0となります。それぞれの環境は
#cat /proc/sys/dev/cdrom/infoなどで確認してください。フォーマットにはかなりの時間がかかります(的場氏の環境では30分程度)。気長に待ちましょう。
packet-cdをモジュールにした場合は、モジュールをロードします。
# modprobe pktcdvd
writerをセットアップします。
# pktsetup /dev/pktcdvd0 /dev/sr0
あとは、マウントするだけです。/mnt/cdromにマウントすると仮定します。
# mount /dev/pktcdvd0 /mnt/cdrom -t udf -o rw,noatime
これで、ランダムアクセス可能なCD-R/Wが/mnt/cdrom以下にマウントされました。
ためしに適当なファイルをコピーしてみてください。
一般ユーザーからも書き込み可能にしたい場合は、/mnt/cdromのパーミッションを777にしておくと良いでしょう。
また、動的にモジュールをロードしたい場合は、/etc/modules.confに以下を追加しましょう。
alias block-major-97 pktcdvd
未確認ですが、メディアはCD-R/Wでなくても、CD-Rでも可能らしいです。実用的かどうかはわかりませんが。
的場氏の環境では650MBのCD-R/WをUDF形式でフォーマットすると、容量は450M程度になったそうです。