Čas od času se dostaneme do situace, kdy jsme si z internetu stáhli obraz CD, se kterým potřebujeme pracovat, aniž bychom jej vypálili na médium, popř. si pro testovací či jiné účely potřebujeme vytvořit virtuální disk. Vzhledem k tomu, že operační systém Linux je vybaven zařízením s názvem loopback, není to pro nás žádný problém. Ukážeme si, jak lze s využitím zařízení loopback vytvořit virtuální disk, aniž bychom si udělali nepořádek v systému a jak lze připojit obraz CD ve formátu BIN/CUE.
Pokud pracujeme s virtuálním filesystémem, nesmíme zapomenout nastavit správně práva pro přístup, jinak nemusíme být schopni na disk zapisovat apod.
Představme si, že potřebujeme pro testovací účely vytvořit diskový oddíl, který posléze budeme chtít přenést na jiný systém nebo chceme vytvořit obraz diskety pro pozdější distribuci elektronickou formou. Buď můžeme přerozdělit disk a připravit si místo pro vytvoření dočasného diskového oddílu (např. pomocí nástroje GParted), popř. pracovat přímo s disketou v mechanice (pokud ji v počítači máme) nebo se můžeme vydat cestou virtualizace a velmi pohodlně vyřešit zmíněný úkol s minimálními zásahy do systému.
V následující ukázce si vytvoříme virtuální disketu, jejíž obraz pak můžeme vystavit například na webové stránce ke stažení (postup pro vytvoření disku je totožný). Nejprve pomocí příkazu
dd if=/dev/zero of=disketa.img bs=512 count=2880
vytvoříme prázdný obraz 3,5“ diskety o velikosti 1,44 MB, po jehož úspěšném dokončení vytvořený soubor „zformátujeme“ na požadovaný souborový systém (pro disketu z důvodu přenositelnosti nejspíše systém msdos, pro klasické diskové oddíly dle libosti od vfat po ext3). Pro tento účel nám poslouží příkaz
mkfs -t msdos disketa.img
Před závěrečným krokem musíme ještě zjistit, zda máme k dispozici nějaké volné loopback zařízení a z výsledku příkazu losetup -f (jako root) zjistit, jaké je jeho číslo:
# losetup -f /dev/loop0
Nyní už máme k dispozici vše potřebné (tj. vytvořili jsme si soubor, který bude reprezentovat obraz virtuální diskety, zjistili jsme, zda máme k dispozici volné loopback zařízení a jaký je jeho přesný název, máme vybrán adresář, kam obraz diskety připojíme), a proto nezbývá než vytvořený obraz diskety připojit s příslušnými parametry do vybraného adresáře
# mount -o dmask=0000, fmask=0000, loop=/dev/loop/0 disketa.img /mnt/floppy
a začít s virtuální disketou pracovat úplně stejně, jako by to byla disketa reálná, tzn. vytvářet na ní soubory či adresáře, kopírovat data, pracovat s atributy apod. Po ukončení práce odpojíme virtuální disk a máme připravený obraz k další distribuci, popř. vzorový disk pro kopírování na cílové stanice apod.
V další ukázce se podíváme na možnosti práce s obrazy CD ve formátu BIN/CUE, aniž bychom je museli nejdříve vypálit na médium. Práce s ISO obrazy je velmi jednoduchá a od předchozího příkladu se liší jen v použití jiného souborového systému:
# mount -o loop=/dev/loop/1 -t iso9660 obraz_CD.iso /mnt/cdrom
stejná operace s BIN/CUE obrazy vyžaduje menší „vytunění“ systému. Uživatelé pohybující se ve světě Windows nám totiž, jak už to tak bývá, občas nachystají „klacík pod nohama“ v podobě některého z formátů, které v prostředí Linuxu nejsou právě nativní. Mezi tyto „klacíky“ patří mimo spousty jiných také obrazy CD ve formátu BIN/CUE. Transparentně pracovat s tímto formátem můžeme, máme naštěstí k dispozici služby jaderného modulu a příslušného front-endu s názvem CDemu.
Pro instalaci zmíněného modulu se bohužel nevyhneme instalaci ze zdrojových kódů, nicméně se nejedná se o žádné černé voodoo v příkazové řádce. Po stažení balíčku cdemu-X.X.tar.bz2 a jeho rozbalení do libovolného adresáře pomocí příkazů make a make install zkompilujete modul cdemu a pomocí příkazu modprobe cdemu jej zavedeme do jádra. Toť z čarování s kompilací vše. Práce s cdemu je velmi jednoduchá, pro připojení obrazu stačí následující dva příkazy
# cdemu 0 obraz_CD.cue # mount -t iso9660 /dev/cdemu0 /mnt/cdrom
K dispozici máme celkem osm virtuálních zařízení, ke kterým můžeme BIN/CUE obrazy připojit. Jejich využití si můžeme zobrazit příkazem
# cdemu -s Drive Loaded Comment 0: 1 obraz_CD.cue 1: 0 NO_CD_LOADED 2: ...
Pro odpojení virtuální CD mechaniky pak stačí zadat analogicky
# umount /dev/cdemu0 # cdemu -u 0