CD-RW, Packet Writing, Mt.Rainier
Kapitoly článků
CD-RW
Vypalování na přepisovatelná média musí mechanika podporovat. U naprosté většiny dnešních vypalovaček je to však samozřejmost. Pokud si přejete použít přepisovatelné CD stejným způsobem jako běžné CD-R, nic vám nebrání a jediná věc, kterou je nutno zmínit, je mazání médií. Aby bylo CD-RW připraveno pro další použití, použijte s cdrecordem příkaz blank. Zkusíte-li
cdrecord blank=help
vypíše cdrecord možné operace, které lze se zaplněným médiem provést. Nejčastěji asi využijete volby all nebo
session, jejichž funkce je zřejmá.
Packet Writing
Packet Writing je metoda záznamu na CD-R nebo CD-RW, která umožňuje používat vypalovačku jako harddisk (dost pomalý harddisk...;) nebo třeba Floppy či ZIP disketovou mechaniku. Tedy zapisovat data po mnoha částech místo jako jeden blok (DAO) nebo po částech určených stopami (TAO). Není však pravidlem, že každá
vypalovačka, která zvládá zapisovat na CD-RW, dokáže také Packet Writing. Avšak opět platí, že u relativně nové (98 a později) se nespálíte.
Vzhledem k tomu (nejen), že tento způsob je realizován pomocí souborového systému UDF (Universal Disk Format), pro který zatím Linux nemá uspokojivou podporu, bude třeba se kvůli jeho zprovoznění vydat trochu komplikovanější cestou. Přestože cdrecord i jeho bratříček dvdrecord umožňují vypalovat image soubory s tímto formátem (především kvůli DVD), aby bylo možné prostě namountovat CD a kopírovat na něj soubory jako na každý jiný disk, je nutno podporu dostat i do jádra. Podívejme se tedy jak na to.
Začneme zazáplatováním kernelu. Jens Axboe, který má na svědomí většinu pokroku ohledně IDE, ATAPI a podobných věcí ve vývoji jádra, dal dohromady patch pro jádra 2.4.19 a 2.4.20 (starší jsou k dispozici, ale nezdají se být moc updatovány), jež obsahuje jednak podporu pro packetové zapisování (zatím pouze pro přepisovatelná CD-RW média) a rovněž novou verzi ovladače pro UDF filesystém od Linux UDF projektu. Pokud tedy chcete experimentovat, doporučuji použít nejnovější verzi patche (2) a tudíž i jádro 2.4.20 (s pár změnami by pravděpodobně šel aplikovat i na 2.4.21-pre4, ale rovnou se nechytil a dál jsem to nezkoumal...).
Patch předpokládá, že adresář se zdroji kernelu se bude jmenovat linux-packet. Po té, co soubor s patchem umístíme do adresáře, kde je i adresář s kernelem, tedy provedeme:
ln -s linux-2.4.20 linux-packet
bzcat packet-2.4.20-2.patch.bz2 | patch -p0 > log
Prohlédneme soubor log a přesvědčíme se, jestli všechno proběhlo v pořádku. Pokud ano, můžeme se pustit do konfigurace (a kompilace) kernelu. Při
make config/menuconfig/xconfig nás budou zajímat především následující volby:
Konfigurace jádra - Packet Writing | |
Položka v jádře | Volba kompilace |
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 |
Po úspěšné kompilaci, instalaci a rebootu (což ovšem předpokládá, že to nebudete, jako já, dělat ve tři hodiny ráno, kdy jsem si omylem vypnul při konfiguraci podporu ELF binárek...;) ještě budeme potřebovat zkompilovat (a nainstalovat) balíček programů udftools, který nám poskytne později důležitý program cdrwtool. Pak už stačí jen provést několik jednoduchých kroků tak, jak jsou popsány na (asi opuštěné) stránkce projektu packet-cd. Ve zkratce:
Pokud jste kompilovali podporu UDF a Packet Writing jako moduly, použijte třeba příkaz insmod k jejich natažení (tj. např.:
insmod udf) - a nebo ještě lépe do souboru
modules.conf přidejte řádek
alias block-major-97 pktcdvd. Pak je třeba CD-RW disk naformátovat, což je vpravdě otravný proces. Manuálová stránka
man cdrwtool je sice ukázkou stručnosti, ale hned zpočátku nám řekne, co chceme vědět. Totiž že příkaz
cdrwtool -d zařízení -q
disk vymaže, zformátuje a vytvoří na něm UDF (přičemž zařízení je samozřejmě umístění vaší vypalovačky - např.:
/dev/scd0 -- ale vše funguje i při použití "ide-cd" ovladače, SCSI emulace není nutná). Dále vytvoříme packetové zařízení příkazem
mknod /dev/pktcdvd0 b 97 0
a přiřadíme jej k vypalovačce:
pktsetup /dev/pktcdvd0 zařízení
(po každém restartu je třeba provést znovu - Richard Downing připravil jednoduchý skriptík, který se, pokud jej strčíte do init.d, postará o právě popsané kroky při každém startu systému). A je to. Jestliže vše proběhlo hladce, měli byste mít možnost běžným příkazem
mount připojit prázdné přepisovatelné CD a kopírovat na něj data (např.:
mount /dev/pktcdvd0 /cdrw -t udf -o rw,noatime). Buďte však připraveni na občasná výrazná zpomalení systému (nejen) při zapisování (
noatime vše nespasí...), "umountování" může také zabrat nepřiměřeně dlouho; prostě ještě není všechno úplně bez chybiček...
CD-MRW
Zkratka MRW (Mount Rainier reWritable) označuje relativně nový standard zápisu na CD-RW, který je významným vylepšením Packet Writing. Ačkoliv Mt. Rainier také používá druh paketového zápisu, není zde nutnost zdlouhavého formátování (které jste si mohli na vlastní kůži vyzkoušet, pokud se vám podařilo zprovoznit pktcdvd v předchozím odstavci...). Respektive, formátování probíhá zároveň se zápisem na pozadí, takže téměř vůbec nezdržuje. Kromě toho lze použít jakýkoliv souborový systém, nejsme omezeni pouze na UDF. Špatná zpráva je, že MRW nepodporuje spousta vypalovaček. Bližší informace o MRW viz Mount Rainier FAQ.
Podporu pro Linux napsal pro změnu Jens Axboe. Nicméně, vzhledem k tomu, že moje mechanika patří k těm starším, tak nemá podporu Mt. Rainier. DVD vypalovačku, kterou jsem měl tu příležitost nějakou dobu používat (a která MRW podporu měla - tedy aspoň myslím...), už také bohužel nemám, takže nemohu z první ruky poreferovat o tom, jak si tento linuxový ovladač stojí. Připadá mi, že by bylo zbytečné a především trochu nefér, kdybych přepisoval cizí zkušenosti, a proto na tomto místě poskytnu pouze odkazy, jež by vám mohly
usnadnit práci, budete-li se chtít poprat s touto záležitostí.
- Jens oznamuje nový patch (určený pro 2.4.19-pre4, avšak mně se na 2.4.20 uchytil (a zkompiloval) více méně bez problému - offset max. +/- 4 řádky). E-mail obsahuje i poměrně podrobný návod (původní název utilitky "mtr" byl později změněn na "cdmrw" - Jens byl upozorněn, že se shoduje se jménem jiného programu).
- Článek na root.cz, ve kterém autor shrnuje poznatky z předchozího mailu zkombinované s ukázkami využití zmiňovaných udftools.
Jak jsem předeslal na začátku, příští díl seriálu už bude konečně trošku barevnější, protože se budu věnovat grafickým front-endům pro programy, které jsme popisovali v tomto a předchozím díle. Pokud se v Linuxu teprve rozkoukáváte, a tyto dva díly na vás tedy fungovaly jako spolehlivý repelent, počkejte se soudem na příští týden.
Pozn. Martin: Opět musím připomenout, že článek je starý rok a půl, některé informace mohou a jsou již tedy zastaralé. Prosím, máte-li zájem, informujte o změnách v diskuzi. Děkuji.