blank
FreeBSD で CD-R を焼く方法

[概要]

FreeBSD 2.2.8-RELEASE 上で CD-R を焼く手順を示します。おおまかな 手順として、CD-R のイメージファイルの作成、次にイメージを CD-R に書き込むというながれになります。

[作業環境]
  • ハードウェア環境
    • CD-R ドライブ付き PC
      (仕様)
      Pentium II 333MHz, Memory 128MB, HDD IDE-6.5GB, SCSI-board AHA2940U, CD-R drive TEAC CD-R55SK (read x12, write x4)
  • ソフトウエア環境
    • FreeBSD2.2.8-RELEASE
      psuedo device vn を追加したカーネル
    • mkisofs-1.11.3 (ISO9660 イメージ作成用)
    • cdrecord-1.6.1 (CD-R への書き込み用)
[下準備]
  • カーネルの再構築
    カーネル用設定ファイル(/usr/src/sys/i386/conf 以下にある)に pseudo device vn を追加し再構築します。
           # cd /usr/src/sys/i386/conf
           # vi <your-config-filename>
                 (pseudo device vn を追加)
           # config <your-config-filename>
           # cd ../../compile/<your-config-filename>
           # make depend all install
           # sync;sync;reboot
    
  • パッケージのインストール
    mkisofs, cdrecord のパッケージをインストールします。
           # pkg_add mkisofs-1.11.3.tgz
           # pkg_add cdrecord-1.6.1.tgz
    
  • cdrecord 用設定
    cdrecord は /dev/scgx を参照しますが、 FreeBSD2.2.8R では /dev/scgx/dev/rworm0.ctl を指すシンボリックリンクになってい ます。CD-R ドライブは本構成では cd0 として認識され ているので/dev/scgx/dev/rcd0.ctl を指 すように変更します。

    (*) cd0, /dev/rcd0.ctl は構成によって変わる可能性 がありますので、構成に併せて適宜読み変えて下さい。

    具体的には次のようにします。

           # mv /dev/scgx{,.orig}
           # ln -s /dev/rcd0.ctl /dev/scgx 
    
[ISO9660イメージ作成]

nonbootable な CD-R 用イメージの作成は以下の通りです。

	# mkisofs -a -d -D -N -R -T -V "Volume" \
		-o /full/path/cdimage.iso /full/path/srcdir
bootable な CD-R の場合は以下の通りです。nonbootable との違いは -b でブートイメージのファイルを指定します。

(*) FreeBSD のインストール用 CD-R を作成する場合には boot.flp を 指定することになります(カスタマイズした boot.flp を作りたい場合 には{FreeBSD2.2.8-RELEASE(+PAO)の boot.flp を作る}を参照して下さい)。

	% mkisofs -a -d -D -N -R -T -V "Volume" \
		-b /relative/path/boot.img \
		-o /full/path/cdimage.iso /full/path/srcdir

[イメージのテスト]

FreeBSDではvnode deviceをカーネルに組み込むことで、イメージをマ ウントして確認できる。

	# vnconfig /dev/vn0 /full/path/cdimage.iso
	# mount -t cd9660 /dev/vn0 /cdrom
	
	% find /cdrom -type f -exec cat {} > /dev/null \; -print

	# umount /cdrom
	# vnconfig -u /dev/vn0

[CD-Rメディアへの書き込み]
cdrecord を使用して、CD-R にデータを書き込みます。CD-R の場合は メディアの中身を消去します。
	# cdrecord blank=all dev=0,0 
まず、うまく行くかテストします。
	# cdrecord -dummy -speed=2 -packet dev=0,0 /full/path/cdimage.iso
エラーが発生しなければいよいよ本当に書き込みます。
(ここでは安全のため書き込みスピードを x2 にしています。)
	# cdrecord -speed=2 -packet dev=0,0 /full/path/cdimage.iso