Vypalování CD je problematika, která je stále pro mnoho uživatelů víceméně doménou operačního systému Windows a několika velice známých programů. Tato řešení jsou ovšem všechna za peníze. Niméně není důvodu k tomu, aby lidé zbytečně platili za něco, co mohou mít zdarma, a jak jsem se sám přesvědčil, často i o mnoho kvalitněji. Podívejme se tedy na problematiku vypalování pod Linuxem. Co k tomu budeme potřebovat? Klasické PC s procesorem vyšším než 486 a 32 MB RAM, vypalovací mechaniku, harddisk s dostatečnou kapacitou. Toto je minimální konfigurace postačující na vypalování malých objemů, ale nestačící vyšším nárokům.
Předem musím uvést svou konfiguraci, abych měl své argumenty podepřené hardwarem, na kterém jsem vše zkoušel. Mou konfigurací je obyčejné stolní PC:
Intel P3 733 MHz, 256 MB RAM, Sony DVD-ROM DDU1621, Sony CD-RW CRX175A1, HDD QUANTUM FIREBALLP AS30.0, motherboard Intel s podporou chipsetu i815.
Jak funguje vypalování CD pod Linuxem? Podstatné je, že (zatím) je vše prováděno přes SCSI zařízení. Proto je nutná takzvaná emulace SCSI CD-ROM nad ATAPI CD-ROMy. To je způsobeno problematičtější podporou IDE subsystému oproti systému SCSI – proto bylo snazší naprogramovat emulaci pro SCSI zařízení, než celou část jádra vyvíjet znovu. A jak to vlastně všechno funguje? Nezřídka je nutno přeložit vlastní jádro s podporou této speciality. Tento krok je však závislý na distribuci. Jestliže ta vaše přímo obsahuje moduly jádra sg, ide-scsi, ide-cd, cdrom, scsi_mod, budete moci následující krok vynechat, pokud ne, kompilaci jádra se nevyhnete. Já se rozhodl z důvodu odlehčení mému procesoru emulovat jako SCSI CD-ROM jen svou vypalovací mechaniku a DVD-ROM mechaniku jsem ponechal přímo na standardu ATAPI. Postupoval jsem takto:
- přeložení jádra – zvolil jsem poslední stabilní kernel z řady 2.4, konkrétně jádro 2.4.19
- vhodně nastavit modules.conf, aby moduly emulovaly jako SCSI CD-ROM jen mou CD-RW mechaniku
- začít vypalovat :-)
Musím ještě říci, jak mám kterou mechaniku připojenu. Má základní deska umožňuje připojit až čtyři zařízení standardu IDE, a to rychlostí Ultra-ATA100. Abych eliminoval pomalost CD mechanik oproti pevnému disku, připojil jsem harddisk na IDE1 řadič a CD mechniky na IDE řadič 2. Výsledná konfigurace vypadala takto:
hda: QUANTUM FIREBALLP AS30.0, ATA DISK drive
hdc: DVD-ROM DDU1621, ATAPI CD/DVD-ROM drive
hdd: SONY CD-RW CRX175A1, ATAPI CD/DVD-ROM drive
Přistupme nyní k bodu 1) našeho rozvrhu:
cd /usr/src/linux;make menuconfig <*> ATA/IDE/MFM/RLL support IDE, ATA and ATAPI Block devices <M> Include IDE/ATAPI CDROM support <M> SCSI emulation support ---- <M> SCSI support <M> SCSI CD-ROM support [*] Enable vendor-specific extensions (for SCSI CDROM) <M> SCSI generic support [*] Enable extra checks in new queueing code [*] Probe all LUNs on each SCSI device [*] Verbose SCSI error reporting (kernel size +=12K) make dep && make bzImage && make modules && make modules_install && make install;lilo
Nyní by náš počítač měl být bootovatelný, provedeme tedy reboot.
Po restartu přistoupíme k bodu 2) našeho rozvrhu. Do souboru /etc/modules.conf přidáme tyto řádky:
#CDROM options ide-cd ignore=hdd # tell the ide-cd module to ignore hdd alias scd0 sr_mod # load sr_mod upon access of scd0 pre-install sg modprobe ide-scsi # load ide-scsi before sg pre-install sr_mod modprobe ide-scsi # load ide-scsi before sr_mod pre-install ide-scsi modprobe ide-cd # load ide-cd before ide-scsi
a měli bychom mít vyhráno. Nyní použijeme program cdrecord a můžeme vypalovat :-)
Nejprve zjistíme, zdali se nám povedlo systém nastavit tak, aby byla jako jediná nakonfigurována CD-RW mechanika:
tata:/usr/src/linux# cdrecord --scanbus Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling Linux sg driver version: 3.1.24 Using libscg version 'schily-0.5' scsibus0: 0,0,0 0) 'SONY ' 'CD-RW CRX175A1 ' '5YS2' 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) *
Jak vidíme, máme jedinou SCSI mechaniku v systému. Kdyby bylo něco špatně, tento výpis buď nedostaneme vůbec, nebo v něm budou mechaniky obě. Po provedení tohoto příkazu bychom měli mít nainstalovány tyto moduly (lze ověřit pomocí povelu lsmod):
sg 26116 0 (autoclean) ide-scsi 7776 0 ide-cd 27232 0 cdrom 28128 0 [ide-cd] scsi_mod 82912 2 (autoclean) [sg ide-scsi]
Nyní by mělo být vše již připravené. Zkusíme tedy vložit do vypalovačky vypalovací médium a do DVD mechaniky klasické CD. Nejprve zkusíme „vypalovat“ bez zapnutí laseru, abychom mohli vyzkoušet, zdali náš počítač zvládne námi zvolenou rychlost vypalování:
cdrecord -dummy -v dev=0,0,0 speed=24 -isosize /dev/hdc
Jestli se nám zdá vše v pořádku, smažeme parametr dummy a vypálíme médium na ostro
cdrecord -eject -v dev=0,0,0 speed=24 -driveropts=burnproof -isosize /dev/hdc
Poté nezbývá, než médium zkontrolovat a zkusit jej přimountovat a načíst.
A nyní perlička nakonec. Zkoušel jsem vypalovat obraz 1:1 na stejném stroji pod Windows2000 a software Nero verze 5.5. S touto konfigurací šlo vypalovat maximálně osmirychlostně, aniž by se využila technologie BurnProof. Pod Linuxem, jak můžete vidět výše, vše fungovalo i 24rychlostně a BurnProof nebyl ani jednou třeba.
Pokud jste se dostali až sem, jste hotovi. Příště si probereme vypalování audio CD, vypalování multi-session CD a výrobu ISO image souborů a jejich vypalování.