參考文件:
1.CD-Writing Mini HOWTO
[url]http://www.Linuxgazette.com/issue57/stoddard.Html[/url]
2.CD-Writing HOWTO
[url]http://wt.XPilot.org/publications/linux/howtos/cd-writing/html/[/url]
基本情況:
samsung sm-316b DVD/CDRW光驅為IDE接口,12x DVD,40x CD-ROM, 16x CD-R, 我把它安裝在hdd
下面所有操作必需是root
應該事先安裝好cdrecord 和 mkisofs(均在/usr/bin/)
首先,如果不使用刻盤功能,它的設置和普通的CD-ROM沒有什麼兩樣,即插即用,只要
#ln -sf /dev/dvd /dev/hdd
#mkdir /mnt/dvd
另外,在/etc/fstab中增加一行:
/dev/dvd /mnt/dvd iso9660 noauto,owner,ro 0 0
即可.
這裡集中在刻盤功能的實現(應該可以適用於其他的IDE接口刻錄機).
第一步:測試內核及系統中是否具有所需的各種模塊,
運行這個腳本文件,test.sh
#sh test.sh
一堆提示之後,如果最下幾行是:
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jorg Schilling
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
scsibus0:
0,0,0 0) 'SAMSUNG ' 'CDRW/DVD SM-316B' 'E304' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
說明所需的各個模塊內核裡面或系統裡面都有,已經找到了我的combo.
如果出現錯誤信息,說明需要安裝所需模塊或重新編譯內核 :-(
幸好我沒遇到這種情況.
第二步:修改配置文件,確保各模塊下次在啟動時自動裝載
1.修改/etc/lilo.conf(我用的是lilo,沒用過grub,用grub的兄弟可以參照這裡的道理修改)
在root=之前一行插入
append="hdd=ide-scsi" (如果不是安裝在hdd上,改成相應的盤符)
保存修改,運行lilo進行更新
#lilo
2.修改/etc/modules.conf
在最後加入下面幾行
alias scd0 srmod
alias scsi_hostadapter ide-scsi
options ide-cd ignore=hdd
3.修改盤符鏈接(針對我這種combo的修改,一般的刻錄機不用設置與dvd有關的項)
#ln -sf /dev/scd0 /dev/dvd
#ln -sf /dev/scd0 /dev/cdrom
#mkdir /mnt/cdrom
#mkdir /mnt/dvd
文件/etc/fstab中有關的行,如有必要也相應修改,例如改成:
/dev/dvd /mnt/dvd iso9660 noauto,owner,ro 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
第三步,重新啟動,啟動後輸入命令:
#cdrecord -scanbus
如果出現
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jorg Schilling
Linux sg driver version: 3.1.22
Using libscg version 'schily-0.5'
scsibus0:
0,0,0 0) 'SAMSUNG ' 'CDRW/DVD SM-316B' 'E304' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) *
說明設置成功. :-)
最後,快速測試:
#mkisofs -r -o image.iso /home/windrose/ (將用戶目錄下所有文件制成刻錄鏡像文件image.iso)
#cdrecord -v speed=16 dev=0,0,0 -data image.iso
test.sh
test `whoami` = 'root' echo "You must be root to execute the commands."
cdrecord -scanbus > /dev/null
if ! (pidof kerneld test -f "/proc/sys/kernel/modprobe"); then
echo "Neither kerneld nor kmod are running to automatically load modules".
fi
report_no_autoload() {
echo "Ensure the module $1 is loaded automatically next time."
}
if test ! -f "/proc/scsi/scsi"; then
report_no_autoload scsi_mod && insmod scsi_mod
fi
if ! grep "^........ sg_" /proc/ksyms > /dev/null; then
report_no_autoload sg && insmod sg
fi
if ! grep "^........ sr_" /proc/ksyms > /dev/null; then
report_no_autoload sr_mod && insmod sr_mod
fi
if ! grep "^........ loop_" /proc/ksyms > /dev/null; then
report_no_autoload loop && insmod loop
fi
if ! grep iso9660 /proc/filesystems > /dev/null; then
report_no_autoload iso9660 && insmod iso9660
fi
echo "The following is only needed for IDE/ATAPI CD-writers."
if ! grep ide-scsi /proc/ide/drivers > /dev/null; then
report_no_autoload ide-scsi && insmod ide-scsi
fi
cdrecord -scanbus
fi
echo "The following is only needed for IDE/ATAPI CD-writers."
if ! grep ide-scsi /proc/ide/drivers > /dev/null; then
report_no_autoload ide-scsi && insmod ide-scsi
fi
cdrecord -scanbus