如果你成功设定你的硬件和你 Linux 系统的其余部份, 命令
cdrecord - scanbus
会给你看到一个可写入装置的列表。 这个
章节的目的是要在设定你的 Linux 系统时导引你,因此最后你会看到
如下的信息:
shell> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 J?g Schilling
scsibus0:
0) 'Quantum ' 'XP34300 ' 'F76D' Disk
1) 'SEAGATE ' 'ST11200N ' '8334' Disk
2) *
3) 'TOSHIBA ' 'MK537FB/ ' '6258' Disk
4) 'WANGTEK ' '5150ES SCSI-36 ' 'ESB6' Removable Tape
5) 'EXABYTE ' 'EXB-8500-85QUE ' '0428' Removable Tape
6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
7) *
scsibus1:
100) 'Quantum ' 'XP31070W ' 'L912' Disk
101) *
102) *
103) 'TEAC ' 'CD-R55S ' '1.0H' Removable CD-ROM
104) 'MATSHITA' 'CD-R CW-7502 ' '4.02' Removable CD-ROM
105) *
106) 'YAMAHA ' 'CDR400t ' '1.0d' Removable CD-ROM
107) *
Listing 1: Detecting devices on your SCSI-bus
这个例子是由 J?g Schilling 偍供的,你现在会看到一共有四个可烧 录器。虽然你现在是不能分别那一个光驱是否为一个可写入光碟 机,不过你可以在产品的识别号中看出它是一个唯读、可写或是可 重写光驱。
一个 Linux 核心可以包含很多驱动程序和功能。你可以将哪些驱动程序 编译进核心影像中或者你可以将它们编译成模块,然后待有需要的时候 才将它们载入核心中。而建议的方法是将必不可少的驱动程序编译进核 心。举例,如果你有一个 IDE 的 Harddisk,那你一定将IDE Harddisk 的驱动程序编译进核心中 ( 不要编译成模块 )。
现存有三类的光碟烧录器:SCSI,IDE/ATAPI 和外置平行埠。表格四展示出 怎样设定 Linux 的核心来支持这几种光碟烧录器。表格的第一列是设定选单 ,你可以在这样找到有关的设定。表格的第二列是功能说明。表格的第三列是 模块名称。
Y 代表是和意味著你应该把这个怪兽放入核心。M 代表模块和意味著你应该把它 编译成模块。 Y/M 代表你可以在两者之间任择其一。空的设定就千万不要改动, 不改动它可以令你能成功编译核心的机会增加。
要检查哪些驱动程序在你的核心中 ( 不论是静态或动态载入的 ),你可以看这个 文档 /dev/devices 。要检查哪些模块已载入,你可以用 'lsmod'。要检查有哪些 模 可以 载入的话,键入'modprobe -l'。如果你需要的模块不在你的 系统的话,你就要重新编译核心及安装它。你可以参考 Kernel-HOWTO 来帮助你重 新编译核心。有关怎样处理核心模块的最新信息,可以参考 Module-HOWTO。
Sect. Description Module SCSI IDE PP
------------------------------------------------------------
BLOCK Enhanced IDE/MFM/RLL... Y
BLOCK IDE/ATAPI CDROM ide-cd M/N/Y
BLOCK SCSI hostadaptor emulation ide-scsi M
BLOCK Loopback device loop M M M
PARIDE Parallel port IDE device paride Y/M
PARIDE Parallel port ATAPI CD-ROMs M
PARIDE Parallel port generic ATAPI M
PARIDE (select a low-level driver) Y
SCSI SCSI support scsi_mod Y/M Y/M
SCSI SCSI CD-ROM support sr_mod Y/M Y/M
SCSI Enable vendor-specific Y Y
SCSI SCSI generic support sg Y/M Y/M
SCSI (select a low-level driver) Y
FS ISO 9660 CDROM filesystem iso9660 Y Y Y
FS Microsoft Joliet cdrom... joliet M M M
Table 4:
如困你成功建立或找到所需的模块之后,你可将它们的名称加入 /etc/modules或 由自动工具来载入它们 (kmod,kerneld)。如果你不肯定的话,请参考 Linux 套件 中的说明档。
"SCSI hostadaptor emulation" 这个功能在之前的版本是叫做 "SCSI emulation" ( 大概是 2.0.36 )。如困你打开这个选项,你就要将IDE/ATAPI 光碟的驱动程序 编译成模块。要不然你就要将它取消和使用 SCSI 的光碟驱动程序。因为 2.2 系列 的核心已不能同时使用 IDE 和 SCSI 的驱动程序在同一个硬件上 ( 如困你是使用 2.0.36 核心的话,请看以下的说明 )。
Loopback device 是一个选择性的功能,它能帮你在烧录影像之前测试一下你的 影像档。
如果你要读取光碟,那你就需要 ISO 9660 文档系统的支持。这个驱动程序已自 动包含RockRidge 延伸。如果你需要MS Joliet 光碟延伸,你便需要编译它为模 组然后载入它。
在任何的情况下你都需要一个低阶的驱动程序。低阶是指那个驱动程序会直接与硬 体沟通。至于 SCSI 和平行埠,有很多低阶的驱动程序可用,请看以下的说明。
在核心版本 2.2.1 中,不要同时打开CONFIG_SCSI_MULTI_LUN 和ide-scsi support 这两个选项,因为 ide-scsi 有虫而至不能这样做。无论如何,都建议大家都把核心 升级为 2.2.5 。
一些用户报告说已编译好的 cdrecord 和 2.2 核心有冲突。这是 Linux 核心的 问题。解决的方法如下:
在核心 2.0.31 以前是有很多虫引至不能读取光碟中最后一个文档。请升级到核 心 2.0.36。
对于 2.0.36 或以上的版本,你可以选择那种驱动程序(IDE or SCSI) 在那个
ATAPI-device上使用。更精确地说,你可以加入"SCSI emulation" 这个功能到
你的核心中和你可以在核心命令列中给特定的 device 启动模拟 ( 在系统启动
前或启动中 )。举例,如果你的光碟烧录器有这个 devicefile /dev/hdb,这样
加入以下的句子 hdb=ide-scsi
。
image=/boot/zImage-2.0.36
label=Linux
read-only
append="hdb=ide-scsi"
Listing 2: Example configuration for lilo (/etc/lilo.conf)
linux "Linux 2.0.36" {
image=/boot/zImage-2.0.36
cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
Listing 3: Example configuration for chos (/etc/chos.conf)
在你安装所有必须的驱动程序以后, 重新这个新核心。它应该有你在往后部份所需 要的所有功能。
[ 如果你是 devfs 的使用者,你就不需要理会以下手动设定 device files 的步 骤,因为 devfs 会为你办理一切的事情。]
进入 /dev
目录然后检查一下你有没有 loopback devices。
虽然这不是太大问题如果你没有这些 devices,但是有了它们就会方便一些 (请看
3.5 )· 如果你有它们的话你会看到 ls
指令显示loop0
-loop7
:
shell> cd /dev
shell> ls loop*
loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7
Listing: devicefiles for loopback
如果你没有这些 device-files 的话,你可以用/dev/MAKEDEV
-script
来建立它们:
shell> cd /dev/
shell> modprobe loop
shell> ./MAKEDEV loop
Listing: commands to create loopback devices
如果你有loop
模块编译进核心,最后的指令你才可以成功执行。你在这
里看到有关怎样处理 loop-devicefiles 的方法你同样可以应用在其他 devicefiles
中(sg*, pg*, hd*, ...) 不过在以后的章节就不会明确说明。
ATAPI 代表 "SCSI 的命令在 IDE-bus 上执行"。换句话说,你的IDE/ATAPI 光碟烧录器会说 SCSI 协定(不过带有一些限制),那即是它会模拟成好像一个 SCSI光碟烧录器一样。
在 Linux 底下只要你运用"SCSI (hostadaptor) emulation" 这个核心功能那你 就可以令你的 IDE 光碟烧录器出现如同 SCSI-devices 那样。如果你使 ide-scsi 核心模块活动起来的话,你就会好像拥有一个 SCSI 光碟烧录器那样。
请确定你的光碟烧录器能够被你电脑的基本输入/输出系统支持。事情就变得冇意思 如果你拥有硬件而电脑又不能支持它。
如困你想将你的 SCSI-drive 连接至你电脑的平行埠上的话,你需要特别的缆线 和特别的核心驱动程序。看这个网址 http://www.torque.net/parport/parscsi.html 以取得更多的资料。
/dev/sd* 和 /dev/sr* 这些 devicefiles 是用来存取 SCSI 硬盘和 SCSI 光碟 驱动器不过 SCSI 光碟驱动器的存取只限于 block-oriented 资料传送。这使 它们那么快速和适合于资料存储。不过驱动光碟烧录器的雷射是一件更加复杂的 事情,而不是block-oriented 资料传送那么简单。要使 sd* 和 sr* devices 保 持乾净和快速,一种新的装置 ─ generic SCSI-devices就衍生出来。 因为所有对 SCSI 硬件的操作都可以透过 generic devices 来达成而它们又没有 特定的目的所以它们就叫做 generic·
如果你要找这些 device,你可以到 /dev 的目录:
shell> cd /dev
shell> ls sg*
sg0 sg1 sg2 sg3 sg4 sg5 sg6 sg7
如果你没有这些 device-files ,你可以在用下列的 script 来建立它们the /dev/MAKEDEV
-script:
shell> cd /dev/
shell> ./MAKEDEV sg
真对不起,我没有这方面的解决方案。 请看 http://www.torque.net/parport/paride.html 或你本区的文档/usr/src/linux/Documentation/paride.txt.
你可以在这里找到一系列烧录光碟的软件 http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.The CD building project for UNIX
你需要以下程序包之中任择其一来产生光碟原型:
ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs)ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)
视你的光碟烧录器型号而定,你需要以下其中之一个程序来将光碟原型写入:
ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)
千万不要相信mkisofs
旧的说明档,它说你需要 cdwrite
版本 1.5
,你只需要 cdrecord 就好了。注意:cdrecord 所包括的 mkiosfs 有一些附加的功能·
Front-ends 在 Linux 中真的只是 front-ends。即是你仍然需要安装命令列工具, 不过你可以用一个较好的界面而已。
X-CD-Roast 是一个在 Linux 下容易烧录光碟的程序集。它结合了 cdrecord
和 mkisofs
在一个美丽的界面以中。
http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html
BurnIT 是一个 cdrecord, mksiofs and cdda2wav-0.95 的 JAVA front-end ,,这使它成为一个在 Unix 平台下完整的光碟烧录包装,你可以在这里取得:
http://sunsite.auc.dk/BurnIT/