Szerző: roberto

2002. január 2. 20:35

Gigabájtos CD-k Linuxon

Középhaladó linuxosoknak ajánlott cikkünkben a 2.4.14-es kernelben debütált zisofs használatát fogjuk bemutatni a kernel fordításánál szükséges opcióktól kezdve az akár 1,2 GB-nyi adatot hordozó CD-lemezek írásáig és olvasásáig.

Mielőtt megismerkednénk a kernel 2.4.14-es verziójában debütált zisofs rendszerű CD-k írásának fortélyaival, érdemes áttekinteni a linuxos CD-írás alapjait. Aki még soha nem próbálkozott CD-k írásával Linuxon, az ne ezzel az oldallal kezdje az ismerkedést, hiszen magyarul és persze angolul is elérhető a CD-Writing-HOWTO, amelynek feldolgozása után remélhetőleg világosabb lesz a Linux, a CD-formátumok és a CD-írók viszonya. Rövid áttekintésük csak az IDE-ATAPI írókkal foglalkozik és nem térünk ki sem az audió CD-k írására, sem az újraírásra, sőt a multisession CD-k készítésére sem.

Linuxon a CD-írás -- mint annyi más dolog is -- a kernel fordításával kezdődik. A kernel nem támogatja közvetlenül az IDE írókat, ezért ezeket az eszközöket egy kis kerülővel kell bekonfigurálnunk. A kerülő annyit jelent, hogy a CD-írókat, legyenek azok IDE vagy SCSI felületűek, a linuxos programok egyaránt SCSI eszközként kezelik, ezért a kernelben biztosítanunk kell a SCSI emulációt korongégető eszközünkhöz.

Ha saját kernelünk van, és eddig nem használtunk CD-írót, akkor valószínűleg kernelt kell fordítanunk, a gyári kernelekben általában minden szükséges lehetőség benne van. A tárgyalandó új lehetőség, a zisofs egyetlen disztribúció rendszermagjában sincs benne gyárilag, tehát előbb vagy utóbb mégiscsak kernelt kell fordítanunk. Az alábbi opciókat kell a kernelbe, vagy ha van rá lehetőség, akkor modulba fordítani:

  • Block Devices > Loopback device support -- nem kötelező, nélküle is működik a CD-írás, de roppant hasznos lehetőség, ugyanis így még a CD-írás előtt felmountolhatjuk és megvizsgálhatjuk a CD-re kíírandó ISO állomány tartalmát
  • ATA/IDE/MFM/RLL support > IDE, ATA and ATAPI block devices > Include IDE ATAPI CDROM support -- az IDE ATAPI felületű CD-író és olvasó eszközök használatához elengedhetetlen opció
  • ATA/IDE/MFM/RLL support > IDE, ATA and ATAPI block devices > SCSI emulation support -- ettől lesz az ATAPI eszközből emulált SCSI eszköz
  • SCSI support > SCSI support -- ezen opció engedélyezése után válnak elérhetővé a további SCSI lehetőségek, amelyek az IDE csatolós írók használatához is kellenek
  • SCSI support > SCSI CD-ROM support -- SCSI CD-k támogatása
  • SCSI support > Enable vendor-specific extensions (for SCSI CD-ROM) -- a legtöbb CD-íróhoz nem kell ez az opció, a kernelhez mellékelt segítség szerint csupán bizonyos HP írók megfelelő működéséhez szükséges
  • SCSI support > SCSI generic support -- általános SCSI támogatás
  • File Systems > ISO 9660 CD-ROM file system support -- a szabványos ISO 9660 és a RockRidge formátumú CD-k olvasásához szükséges támogatás
  • File Systems > Microsoft Joliet CD-ROM extensions -- a legtöbb Win32-es rendszeren írt CD ilyen szabványbővítést használ, ha szeretnénk látni a Windowson írt CD-k hosszú fájlneveit, kapcsoljuk be!
  • File Systems > Transparent decompression extension -- Ez a már említett újdonság, a zisofs, erről szól a cikk további része, szóval érdemes bekapcsolni!

File Systems -- zisofs
A 2.4.14-es kernel óta egy újabb, CD-kre vonatkozó
opcióval is találkozhatunk a konfigurálás alatt

Ha a friss kernel elkészült, már csak néhány program szükséges, amellyel CD-ket írhatunk. Itt a legalapvetőbb, parancssori CD-íráshoz szükséges eszközöket fogjuk csak áttekinteni. Előtte azonban az /etc/lilo.conf-ban a rendszerünk bootolását leíró szekció append opciójaként jegyezzük be a hdX=ide-scsi paramétert. Az X-et értelemszerűen a CD-író helyével töltsük fel, egy secondary master író esetén ez így alakul: append="hdc=ide-scsi". A frissen fordított kernellel elindított rendszerünkön már működni fog az emulált SCSI eszköz, ám (a példát folytatva) az eddigi /dev/hdc helyett valamelyik SCSI eszközfájlon, pl. a /dev/scd0-án keresztül érhető el.

A nem túl régi disztribúciók telepítőprogramjai felismerik a CD-írót számítógépünkben, így a legtöbb dolog, ami itt olvasható, érdektelen. Azonban, ahogy már említettem, a zisofs támogatása még nincs benne a gyári kernelekben.

[oldal:Írás]

A adatokat tartalmazó CD-k elkészítése alapvetően két lépésből áll Linuxon. Az első lépés egy CD-re írható fájlrendszer-állomány összeállítása (ISO fájl), a második pedig ennek az állománynak a CD-re égetése. Bár a fejlettebb linuxos CD-író frontendek látszólag képesek a CD-re helyezendő fájlokat közvetlenül is kiírni, a folyamat mindig két lépésből áll.

A feladat első részének elvégzésére szolgáló hagyományos eszköz az mkisofs nevű program. Ha összeszedtük a kiírandó anyagot egy könyvtárba, akkor az mkisofs -r -o isofájl könyvtárnév paranccsal készíthetünk az adott könyvárról egy ISO állományt. A második részfeladat az elkészített állomány kiírása a cdrecord nevű programmal: cdrecord -v speed=írási_sebesség dev=0,0,0 -data isofájl. A misztikusnak tűnő dev kapcsoló helyes paraméterezését a cdrecord -scanbus parancs kimenetéből olvashatjuk ki, ekkor ugyanis listát kapunk a rendszer SCSI eszközeiről, köztük az emulált IDE írónkkal.

Most, hogy áttekintettük az alapokat, ideje a zisofs-t is a helyére tenni. A zisofs egy RockRidge-kiterjesztés. A RockRidge pedig -- a Joliethez hasonlóan -- egy ISO 9660-kiterjesztés. Lehetővé teszi, hogy egy CD-n a UNIX-os konvencióknak megfelelő hosszú fájlneveket használjunk, sőt megőrzi a UNIX-os fájlattribútumokat is. A kernel fordításánál, a Joliettel ellentétben, nem kell külön engedélyezni RockRidge formátumot, ugyanis ez az alapértelmezés. Az iménti példa épp egy RockRidge formátumú ISO fájlt készít az mkisofs program -r kapcsolójának segítségével.

A zisofs tehát a RockRidge formátumhoz ad valamit. Ahogy azt már sejthetjük, ez a valami a tömörített fájlok könnyű, felhasználói közbeavatkozást nem igénylő kezelésének képessége. A dolog működéséhez három komponens szükséges, az első a már sokat emlegetett kernelszintű zisofs-támogatás, amely a zisofs rendszerű CD-k észrevétlen kitömörítéséért felelős. A második a kernel.org-ról letölthető zisofs csomag, benne az mkzftree programmal és a harmadik kellékkel, amely nem más, mint egy patch a cdrtools csomaghoz.

Az adatokat tartalmazó zisofs CD-k elkészítése nem két, hanem három lépésből áll. Még mielőtt az mkisofs elkészítené az adatainkat tartalmazó könyvtárból az ISO fájlt, a könyvtáron futtatnunk kell a zisofs csomagban lévő mkzftree programot: mkzftree könyvtárnév tömörített_könyvár_neve. Ez a parancs a "tömörített_könyvtár_neve" nevű könyvtárba leképezi a "könyvtárnév" nevű könyvtár tartalmát, a két struktúra mindenben azonos lesz, leszámítva azt az apróságot, hogy az új könyvtárban minden állomány egyedileg be lesz tömörítve.

Ha ezzel megvagyunk, akkor az mkisofs -z -r -o isofájl tömörített_könyvár_neve paranccsal elkészíthetjük a tömörített fájlokat tartalmazó ISO állományt. A mkisofs "-z" kapcsolója a zisofs csomagban lévő cdrtools patch eredménye (az mkisofs a cdrtools csomag része).

Az utolsó, harmadik lépés megegyezik a ziso nélküli eljárás utolsó lépésével: cdrecord -v speed=írási_sebesség dev=0,0,0 -data isofájl.

Tehát: az ISO-ba helyezés előtt minden fájlt egyedileg betömörít az mkzftree, a sok tömörített fájlt a megpatchelt mkisofs egy RockRidge formátumú ISO-ba teszi, az ISO a cdrecord működése nyomán a lemezre kerül, onnan pedig a zisofs-támogatással rendelkező kernel fogja kitömöríteni igény esetén a fájlokat, így nem nekünk kell vesződnünk a kitömörítéssel, olyan, mintha egy hagyományos CD-ről olvasnánk adatokat.

[oldal:Készítsünk 1,2 GB-os CD-t!]

Hogy kedvezzek a zisofs-nek, összeszedtem minden itthon fellelhető elektronikus szöveget az egyetemi évek alatt összegyűlt szemináriumi vackoktól kezdve a tonnányi útmutatón, leíráson, listaarchívumon keresztül a Pallas Nagy Lexikonának html verziójáig. Txt, html, doc, sdw, pdf fájlokat, unixos kézikönyvoldalakat tereltem össze egyetlen könyvtárszerkezetbe, amely a végén már 1,2 GB-osra hízott. A pdf-ek és a grafikus állományok ellenére igen jól tömöríthető anyag állt össze és került CD-re, valahogy így:

mkzftree zisofs-teszt zisofs-teszt-tomor
mkisofs -z -r -o teszt.iso zisofs-teszt-tomor
cdrecord -v speed=4 dev=0,0,0 -data teszt.iso

A folyamat elvégzéséhez szükséges kellékek nemcsak forráskódban, hanem RPM csomagokban is letölthetőek a kernel.org-ról, így nem feltétlenül szükséges saját magunknak újrafordítani a cdrtools-t (mkisofs, cdrecord, cdda2wav) vagy lefordítani az mkzftree-t. A végeredmény egyszerűen tökéletes: 1,2 GB adat egyetlen lemezen, amely mindig rendelkezésre áll, és nem kell hozzá külön tömörítő.


Teljesen úgy kezelhető, mint a hagyományos CD-k

A kerneles támogatás nélkül ugyanez így fest:


Ugyanaz, mégis annyira más...

Ha a kernelből kimaradt a zisofs támogatása, akkor is olvasható marad a CD, legalábbis a könyvtárszerkezetet és fájlokat látjuk, ám amikor megnyitunk egy fájlt, csak zavaros karakterhalmazt találunk, a fájl tartalma tömörítve marad. Sajnos az ilyen fájlokat a hagyományos tömörítők (gzip, zip, bzip2) egyikével sem tudjuk kibontani. Ha valamiért mégis a kerneles támogatás nélkül szeretnénk megtekinteni a CD fájljait, akkor azt az mkzftree -u kapcsolójának segítségével oldhatjuk meg, így kitömöríthetjük egy-egy könyvtár fájljait a merevlemezre, bár sokkal kényelmesebb a kerneles támogatás használata.

A zisofs sok esetben segíthet, de egy mp3 CD vagy egy programokat tartalmazó CD esetén valószínűleg nem sok hasznát látjuk majd. Az itt említett 1,2 GB csak megfelelő típusú adatok esetén érhető el, ám ez még nem a plafon, és ezt a záró képernyőkép is tanúsítja, amely a CD-re került adatok helyfoglalását mutatja a CD-n illetve a merevlemezen.


Körülbelül 1,6 GB adat férne egy hagyományos
650 MB-os CD-re, az 1,2 GB-nyi szöveges adat
a CD-n mindössze 470 MB-ot foglal

Nagyon széles az a skála, amin az állásinterjú visszajelzések tartalmi minősége mozog: túl rövid, túl hosszú, semmitmondó, értelmetlen vagy semmi. A friss heti kraftie hírlevélben ezt jártuk körül. Ha tetszett a cikk, iratkozz fel, és minden héten elküldjük emailben a legfrissebbet!

a címlapról