Vypalování multisession CD
První otázkou je, zdali se dnes vůbec vyplatí multisession vyrábět. Podle mne při směšné ceně médií, kdy neznačkové se dá sehnat za 5 Kč/kus a značkové za 12 Kč/kus, již ne. I tak si o této technologii povíme, třeba už jen z historických důvodů a také proto, že nám pomůže pochopit víc do hloubky, jak vypalování funguje.
Multisession, jak název napovídá, bude vypalování více sekcí na jedno CD. To má tři zádrhele:
- Vypálenou hudbu vám tímto způsobem snad žádný stolní přehrávač nepřečte celou a uvidí vždy jen první session.
- Na CD se tímto způsobem vejde méně dat, než kdyby se vypalovalo najednou. Je to způsobeno vícenásobnou přítomností tzv. lead-in a lead-out míst. Tato místa jsou oblasti na disku, do kterých jsou při dokončení zápisu každé session uloženy informace o počtu stop, jejich začátku a o celkové velikosti datového úseku (TOC – Table Of Contents). U první session tyto informace zabírají 2,5 minuty, nebo, chcete-li jinak, 22,8 MB, nebo, chcete-li ještě jinak, 11250 sektorů. Lead-in zabírá 1 minutu a Lead-out 1,5 minuty. Druhá a každá další už vyžaduje na Lead-out jen 0,5 minuty. V neposlední řadě je ještě třeba připočíst nejméně 150 sektorů na mezeru oddělující stopy (je i na nemultisession cedéčkách), tzv. pre-gap, což činí přibližně tři vteřiny.
- Máte smůlu a dopředu si soubor představující další session prostě nepřipravíte. Jsou k tomu potřeba informace získané z CD, na které budete tuto sekci připalovat.
Aby cdrecord poznal, že budeme pálit multisession, musíme mu to říct. Ten kluk fakt není tak chytrý sám. Reaguje ovšem na přepínač -multi, takže mu ho rovnou předhodíme. Cdrecord poté sám nastaví druh stopy na potřebnou verzi CD-ROM XA2.
Vypálíme tedy první oddíl následujícím příkazem
cdrecord -v dev=0,0,0 speed=24 -eject -multi prvni.iso
Abychom poté mohli připálit další oddíl, musíme si nejprve zjistit, jak vypadá CD, na které chceme tuto session přidat. To provedeme následujícím příkazem, jehož výstupem budou dvě čísla. První číslo nám řekne, kde se nachází první sektor poslední relace na CD (v našem případě 0, jelikož původní session je pálena od počátku CD). Druhé odpovídá prvnímu volnému sektoru, na který lze zapisovat. Toto druhé číslo se rovná počtu zapsaných sektorů z prvního vypalování (viz výpis cdrecordu) plus 11400 (11250 lead-in a lead-out + 150 pre-gap).
cdrecord -msinfo dev=0,0,0
Následně musíme vyrobit image další session. K tomu nám právě tato čísla poslouží. Musíme totiž mkisofs říci, kde má začít další sekci. Je také dobré vědět, že u každé další sekce musíme použít přepínač -r, jelikož pouhé -J by nefungovalo. Co přepínače znamenají, viz předchozí díly seriálu. Parametry pro nás zajímavé zde budou -M a -C. M udává cestu k předchozí session a C ony dva parametry cdrecordu.
mkisofs -r -J -l -C hodnota,hodnota -M device -o druhe.iso adresar
Tento druhý image soubor nemůžete zkontrolovat namountováním jako loop – ta nevýhoda uvedená hned na začátku. Tuto sekci vypálíme poté stejně jako první.
cdrecord -v dev=0,0,0 speed=24 -eject -multi druhe.iso
Vypalování na RW média
Samozřejmě, že tuto vlastnost musí vypalovačka podporovat. V dnešní době již naprostá samozřejmost. Jiná mechanika by se snad ani neprodala :-) Vypalování na tato média je naprosto stejné jako na klasická CD-R, jen máme navíc příkaz blank
, který určuje, co smazat. Nejčastěji blank=all
nebo blank=session
. Blank má samozřejmě více voleb, které si zobrazíte příkazem
cdrecord blank=help
Packet writing
Tato technologie umožňuje s CD-RW médiem zacházet jako s větší ZIP mechanikou. S CD-R tedy také, ale vzhledem k nemožnosti mazání je použitelnost dost snížena :-) Vaše mechanika musí tuto technologii podporovat.
V Linuxu zatím oficiální podpora chybí a naleznete ji buď v -ac větvi jádra, nebo jako patch od výrobce Jense Axboe.
Po aplikování patche začneme konfigurací jádra:
Block devices
Packet writing on CD/DVD media Y/M
File systems
UDF file system support (read only) Y/M
UDF write support (DANGEROUS) Y
Přeložíme jádro, rebootujeme. Nyní musíme nainstalovat i balík udf-tools.
Nyní vložíme do jádra modul udf
a pktcdvd
a nebo ještě lépe si jej přidáme do /etc/modules.conf
jako
alias block-major-97 pktcdvd
a vytvoříme nový device v /dev
mknod /dev/pktcdvd0 b 97 0
a propojíme ho s naší vypalovačkou:
pktsetup /dev/pktcdvd0 device
Bohužel se tyto kroky musí při každém startu systému opakovat. Použitím skriptu se práce zjednoduší (jeden příklad za všechny).
Zkusme s médiem pracovat:
cdrwtool -d device -q
Disk vymaže, vytvoří na něm UDF filesystem. Zařízení nemusí byt ovšem emulováno SCSI, ale třeba přímo /dev/hdc
Připojíme disk příkazem
mount /dev/pktcdvd0 /cdrw -t udf -o rw,noatime
a užijte si pomalého disku na CD-RW :-)
Mount Rainier
je rozšířením předchozího Packet writing a nebudu se zde o něm rozepisovat, jelikož článek Mt. Rainier pod Linuxem již na ROOTovi publikoval kolega Stanislav Brabec.
CD-Plus/CD-Extra
Tyto dva názvy znamenají stejnou technologii. Holt každá firma musí nějak prodávat a marketingová strategie dnes hýbe trhem :-) Známe třeba superskalární architektury, supersuperskalární architektury (co tam přidají příště? Že by 3×superskalární???), no a potom známe i plno Extra věcí, mezi nimi i CD-Extra :-)
Pod tímto obchodním názvem je znám multisession disk s první session typu audio a druhou data. Původně se používala výhradně pro lisovaná CD pod názvem E-CD (Enhanced CD), nyní si je můžeme vyrobit doma. Mají tu výhodu, že je přehrajete i na stolních přehrávačích, jelikož datovou stopu už stolní přehrávač nevidí a nedojde tak při jejím čtení k přehrávání skřípotu. Uživatelé Linuxu jsou ovšem zvyklí. Kolikrát jste udělali
cat /usr/src/linux-2.4.20.tar.bz2 > /dev/dsp
když jste zkoušeli, jestli vám chodí zvukovka? Přiznejte se :)
Zkusme takové neskřípací CD vyrobit. Nejprve vytvoříme audio stopu s parametrem multi a následně datovou opět s parametrem multi. Audio stopu můžeme vypalovat jak metodou DAT, tak i TAO.
cdrecord .v dev=0,0,0 -eject -dao -multi -audio *.wav
cdrecord -msinfo dev=0,0,0
mkisofs -r -J -l -C 0,to_druhe_cislo -M device -o data.iso adresar
cdrecord .v dev=0,0,0 -eject -multi data.iso
A nakonec nějaké drobnosti z dotazů čtenářů:
- CD můžete pojmenovat pomocí parametru -V, který předáte mkisofs, dále můžete předat i -P (publisher ID), -p (preparer ID) a -A (application ID)
- zapisovat obrázky na plochu CD pomocí technologie DiskT@2 Linux zvládá, ale já sám jsem to nikdy nevyužil, protože moje mechanika to neumí. Tak jen telegraficky:
Cdrecord podporuje DiskT@2 od verze cdrtools-1.11a32 (umí snad každá distribuce, když ne, přeložte si jej). Používá se s parametremtattoofile=picture
, který je nutno použít spolu s přepínačem-checkdrive
. Soubor s obrázkem musí samozřejmě splňovat podmínky, více vizman cdrecord
.
A to je asi vše :-) Jádyjádydadááá. Cococococojeee tosem tosem přeci měl říci já. Tak to řekni. A to je vše, přátelé :-)