Smažíme v Linuxu (3)

19. 5. 2003
Doba čtení: 5 minut

Sdílet

Po delší době vás znovu vítám u pokračovaní seriálu o vypalování pod Linuxem. Co se dnes dozvíte? Něco o multisession vypalování, něco o vypalování na RW média, řeč bude i o Packet writing, v neposlední řadě i o Mount Rainier a také o CD Plus technologii.

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ár­ní???), 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.

bitcoin_skoleni

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 parametrem tattoofile=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 viz  man 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é :-)

Autor článku