Next Previous Contents

2. 设定你的 Linux 系统来烧录光碟

如果你成功设定你的硬体和你 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 □供的,你现在会看到一共有四个可烧 录器。虽然你现在是不能分别那一个光碟机是否为一个可写入光碟 机,不过你可以在产品的识别号中看出它是一个唯读、可写或是可 重写光碟机。

2.1 设定 Linux 核心

一个 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 系统的特别提示

在核心版本 2.2.1 中,不要同时打开CONFIG_SCSI_MULTI_LUN 和ide-scsi support 这两个选项,因为 ide-scsi 有□而至不能这样做。无论如何,都建议大家都把核心 升级为 2.2.5 。

一些用户报告说已编译好的 cdrecord 和 2.2 核心有冲突。这是 Linux 核心的 问题。解决的方法如下:

给 2.0 系列的特别提示

在核心 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)

2.2 硬体和 devicefiles

在你安装所有必需的驱动程式以後, 重新这个新核心。它应该有你在往後部份所需 要的所有功能。

[ 如果你是 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*, ...) 不过在以後的章节就不会明确说明。

IDE/ATAPI 光碟烧录器

ATAPI 代表 "SCSI 的命令在 IDE-bus 上执行"。换句话说,你的IDE/ATAPI 光碟烧录器会说 SCSI 协定(不过带有一些限制),那即是它会模拟成好像一个 SCSI光碟烧录器一样。

在 Linux 底下只要你运用"SCSI (hostadaptor) emulation" 这个核心功能那你 就可以令你的 IDE 光碟烧录器出现如同 SCSI-devices 那样。如果你使 ide-scsi 核心模组活动起来的话,你就会好像拥有一个 SCSI 光碟烧录器那样。

SCSI 光碟烧录器

请确定你的光碟烧录器能够被你电脑的基本输入/输出系统支援。事情就变得□意思 如果你拥有硬件而电脑又不能支援它。

如困你想将你的 SCSI-drive 连接至你电脑的平行埠上的话,你需要特别的缆线 和特别的核心驱动程式。看这个网址 http://www.torque.net/parport/parscsi.html 以取得更多的资料。

一般 SCSI devices

/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.

2.3 取得软体来烧录光碟

你可以在这□找到一系列烧录光碟的软件 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 有一些附加的功能.

Graphical user interfaces (optional)

Front-ends 在 Linux 中真的只是 front-ends。即是你仍然需要安装命令列工具, 不过你可以用一个较好的介面而已。

X-CD-Roast 是一个在 Linux 下容易烧录光碟的程式集。它结合了 cdrecordmkisofs 在一个美丽的介面以中。

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/


Next Previous Contents