LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> Linux v příkazech - vypalování CD/DVD

Vytvoření ISO obrazu, kontrola a následné vypálení na CD nebo DVD a to vše pouze za použití příkazové řádky. Tvorba multisession CD/DVD.

20.2.2006 06:00 | o.k. | czytane 37531×

RELATED ARTICLES KOMENTARZE   

Vypalování CD/DVD patří dlouhou dobu neodmyslitelně k úkonům, které v Linuxu potřebuje uživatel čas od času provádět. Většina uživatelů se uchyluje ke grafickým nadstavbám, kde si jednoduše a bezmyšlenkovitě přesune soubory z jednoho okna do druhého a stiskne tlačítko pro vypalování. Samozřejmě i takto lze vypalovat, ale tento uživatel se potom dostane do úzkých, když musí data vypálit na Linuxu bez grafického prostředí nebo na dálku provést zálohování dat na vzdáleném serveru jejich vypálením na CD/DVD.

Tento díl seriálu o Linuxu v příkazech by měl posloužit jako návod jak v příkazové řádce vypalovat.

Vytvoření ISO souboru pro vypalování

Než začneme samotné vypalování, tak si musíme připravit zdroj dat, která chceme vypálit a vytvořit z něj tzv. ISO image (ISO obraz chcete-li). Ano, v podobě ISO obrazů se na Internetu také distribuuje většina distribucí.

Pokud chceme zkopírovat CD (nebo DVD) na kterém již nějaká ta volně stažitelná distribuce je, tak to můžeme provést jednoduše tímto příkazem:

dd if=/dev/hdd of=distribuce.iso

První parametr příkazu dd, který slouží k blokovému kopírování dat udává blokové zařízení ze kterého budeme data kopírovat. Tedy zařízení mechaniky CD/DVD-ROM. Pro připomenutí uvádím, že hda je primární master, hdb primární slave, hdc sekundární master a hdd sekundární slave zařízení na IDE kanálu. Druhý parametr udává umístění našich kopírovaných dat. Pozor na správnost parametrů při používání příkazu dd. Při chybné specifikaci vstupů a výstupů dokáže být program dd více než destruktivní a během pár vteřin tak můžete přijít o svá data. Výše uvedeným příkazem jsme vytvořili ISO image CD, které již můžeme přímo vypálit, čímž dosáhneme identické kopie původního CD - tedy jeho klon.

Pro kopírování/klonování CD lze také s výhodou použít program readcd, který má navíc některé další užitečné funkce. Umožňuje například snížit rychlost čtení dat z CD (nebo DVD), což se dá využít v případě starého a poškrábaného CD (nebo DVD). Program readcd lze také využít pro vypalování, použijeme-li volbu -w.

readcd speed=2 dev=/dev/hdd f=distribuce.iso

Pro ty co nechtějí používat příkaz dd nebo readcd zde uvádím ještě další alternativu:

cat /dev/hdd > distribuce.iso

Pokud nechceme vytvářet identické kopie CD/DVD disků, ale pouze chceme vypálit nějaká data musíme sáhnout po programu mkisofs, který slouží k vytváření ISO obrazu souborového systému. Základní vysvětlení tohoto příkazu provedu na jednoduchém příkladu:

mkisofs -o backup.iso /var/log/

Tímto jsme vytvořili ISO obraz s názvem backup.iso, jehož obsahem jsou soubory a adresáře nacházející se v adresáři /var/log. Po vypálení bude toto CD čitelné úplně ve všech systémech (Linux/Unix, Windows, Mac), ale s tím omezením, že názvy souborů a adresářů budou ve starém DOSovém formátu 8+3. Abychom zachovali původní délky názvů (a případně další atributy), tak musíme ke klasickému formátu ISO 9660 přidat rozšíření. Pro Linux/Unix to bude RockRidge (parametr -R), pro Windows Joliet (parametr -J) a pro Mac HFS. Tato rozšíření se dají mixovat, protože neexistuje jediné univerzální rozšíření, které by zachovávalo ve všech těchto systémech délku souborů a případně další atributy. Takže ISO obraz pro systém Linux/Unix a Windows s plnou délkou souborů by se vytvořil následujícím způsobem:

mkisofs -R -J -o backup.iso /var/log

Pokud budeme chtít nastavit automaticky všechna práva na souborech a adresářích tak, aby tyto byly čitelné pro normální uživatele tak přidáme ještě parametr -r. Volba -r je prakticky stejná jako -R s tím rozdílem, že při použití volby -r se nastaví UID a GID všech souborů a adresářů na 0 a všechny bity (pro vlastníka, skupinu a ostatní) u souborů a adresářů jsou nastaveny pro čtení. Pokud mají soubory nastaven nějaký bit pro spuštění, tak se pro spuštění nastaví i ostatní bity (pro vlastníka, skupinu a ostatní). To stejné platí i pro adresáře. Všechny bity pro zápis (a další speciální bity) jsou smazány, protože na CD/DVD nemají smysl.

Příkaz mkisofs má spoustu dalších voleb, jejichž popis by vydal na samostatný článek. Já zde uvedu pouze pár příkladů konfiguračních voleb s jednoduchým komentářem, které se v praxi často používají. Další možnosti programu mkisofs naleznete v nápovědě k příkazu, manuálové stránce nebo se můžete zeptat v diskuzi.

mkisofs -J -R -f -V "backup_etc050425" -o backup_etc.iso /etc

Vytvoření ISO obrazu (s rozšířením Rock Ridge a Joliet) adresáře /etc včetně symbolických linků (jejich obsahem bude soubor/adresář na který odkazují). CD bude mít název backup_etc050425 a výsledný ISO soubor se bude jmenovat backup_etc.iso.

Občas se vám stane, že potřebujete do výsledného ISO souboru vložit více adresářů, které jsou rozmístěné různě po souborovém systému. Jednou z možností, která každého jistě ihned napadne je vytvoření symbolických linků a použití volby -f. Další a systémovější variantou je použití volby -graft-points příkazu mkisofs. Ukážeme si na příkladu kdy budeme chtít zazálohovat adresář /etc, /var a /home.

mkisofs -J -R -o backup_etc_var_home050425.iso \ 
-graft-points etc=/etc var=/var home=/home

Poznámka: pokud byste nepoužili volbu -graft-points, tak budete mít všechny soubory a podadresáře z daných adresářů přímo v kořenovém adresáři na CD.

Uložení Linuxového filesystému na CD

Vytvoření souborového systému na CD je snadné, nezapomeňte však na to, že toto CD bude čitelné pouze v Linuxu, ostatní operační systémy s ním nebudou umět pracovat (pokud nebudou mít podporu daného souborového systému). Nejprve si vytvoříme soubor o příslušné velikosti a potom do něj nakopírujeme zvolená data. K vytvoření souboru nám poslouží již dříve zmiňovaný program dd.

dd if=/dev/zero of=filesystem.iso bs=1024k count=700

Teď již můžeme v tomto souboru vytvořit libovolný filesystém a to následovně:

mkfs.ext2 -b 2048 filesystem.iso

Varování o tom, že daný soubor není speciální blokové zařízení můžeme ignorovat. Takto vyvořený soubor s filesystémem následně připojíme do systému příkazem mount (pokud to nemáme povoleno v /etc/fstab - což asi nemáme, tak to musíme připojit jako root).

mount filesystem.iso /mnt -o loop

Do takto připojeného souborového systému už můžeme nakopírovat cokoliv, jsme limitováni pouze velikostí, která je v našem případě ~700MB. Posledním krokem je samotné vypálení takto vytvořeného systému a to si ukážeme níže.

Vytvoření bootovacího CD

Vytvoření bootovacího CD/DVD je jednoduché - stačí programu mkisofs předhodit zaváděcí program - v našem případě to je soubor isolinux.bin. Následující příklad demonstruje jak se vytváří bootovací ISO image pro distribuci Slackware current.

mkisofs -hide-rr-moved \
        -v -d -no-emul-boot -boot-load-size 4 -boot-info-table \
        -sort isolinux/iso.sort \
        -b isolinux/isolinux.bin \
        -c isolinux/isolinux.boot \
        -A "Slackware Current DVD" \
        -publisher "www.linuxsoft.cz" -o slackware.iso ./

Jednotlivé parametry výše uvedené ukázky pro vytvoření bootovacího ISO obrazu zde uvádět nebudu, protože jsou velice dobře popsané v manuálových stránkách.

Kontrola ISO souboru

Ještě před samotným vypalováním je dobré si ISO soubor zkontrolovat. V Linuxu to lze jednoduše tak, že jej připojíme přes zpětnovazební smyčku (loopback) a to následujícím způsobem.

mount backup.iso /mnt/hd -o loop

Toto mountování můžete provádět pouze jako uživatel root. Můžete si to ale vhodně nastavit v souboru /etc/fstab a pak si ISO image přes loopback mountovat i jako obyčejný uživatel.

Po namountování už vám nic nebrání v tom udělat si zběžnou kontrolu adresářů a souborů nebo důkladnou kontrolu pomocí programu md5sum.

Další zběžnou kontrolu můžeme provést pomocí programu isoinfo.

isoinfo -d -i backup.iso

Vypalování CD

Detekce vypalovacího zařízení

Ještě před samotným vypalováním musíme provést detekci našeho vypalovacího zařízení přes které budeme následně vypalovat. Toto se provádí, stejně tak jako samotné vypalování, pomocí programu cdrecord.

cdrecord -scanbus

scsidev: 'ATA'
devname: 'ATA'
scsibus: -2 target: -2 lun: -2
Linux sg driver version: 3.5.27
Using libscg version 'schily-0.8'.

scsibus1:
        1,0,0   100) 'PLEXTOR ' 'DVDR   PX-740A  ' '1.01' Removable CD-ROM
        1,1,0   101) 'SONY    ' 'CD-RW  CRX300E  ' 'KYS2' Removable CD-ROM
        1,2,0   102) *
        1,3,0   103) *
        1,4,0   104) *
        1,5,0   105) *
        1,6,0   106) *
        1,7,0   107) *

Vypalování CD bude potom vypadat následovně:

cdrecord dev=ATA:1,0,0 -v -eject speed=24 driveropts=burnfree backup.iso

Pozor na to, že v některých distribucích Linuxu můžete některé parametry (například výše uvedený driveropts=burnfree) nastavit pouze pod rootem.

Vypálení CD bez ukládání ISO image na disk.

mkisofs -R /etc | cdrecord -v speed=4 dev=1,0,0 -

Pokud pouze chcete otestovat vypalovací proces s vypnutým laserem, tak použijte parametr -dummy.

cdrecord dev=ATA:1,0,0 -v -eject -gracetime=2 speed=24 driveropts=burnfree -dummy backup.iso

Pozor, i na tento test vypalování budete potřebovat prázdné médium v mechanice.

Klonování CD

Pokud máte dvě mechaniky, tak určitě zatoužíte po přímém kopírování CD bez nutnosti ukládání dat na disk. I toto samozřejmě lze - například následujícím způsobem:

cdrecord -v dev=ATA:1,0,0 speed=4 driveropts=burnfree -isosize /dev/hdc

Multisession CD

Vytváření "multisession" CD je stejné jako vytváření normálních CD akorát nesmíme zapomenout přidat při vypalování daných sekcí (pokud se nejedná již o poslední sekci) parametr -multi (a případně přidat parametr -tao), který programu cdrecord řekne, aby neuzavíral CD.

První sekci vytvoříme tedy tímto způsobem:

cdrecord dev=ATA:1,0,0 -v -eject -gracetime=2 speed=24 driveropts=burnfree -multi backup.iso

Pro vytvoření další sekce potřebujeme z CD získat informace o tom, kde první sekce začíná a kde končí a to provedeme následovně:

cdrecord dev=ATA:1,0,0 -msinfo
0,13066

Vytvoříme ISO obraz další sekce:

mkisofs -J -R -V "DruhaSekce" -o backup2.iso -C 0,13066 -M /dev/hdc /var

Pokud nepoužijete parametr -M /dev/hdc (či -M ATA:1,0,0) tak budou data rozdělena na více sekcí (používá se například pro uchování audio dat v první sekci a normálních dat v druhé). Takto vytvořený obraz opět vypálíme:

cdrecord dev=ATA:1,0,0 -v -eject -gracetime=2 speed=24 driveropts=burnfree -multi backup2.iso

Další postup se opakuje. Při vypalování poslední sekce vynecháme parametr -multi, aby došlo k uzavření CD.

Mazání přepisovatelných CD

Mazání přepisovatelných CD je jednoduché o čemž svědčí i následující příklad:

cdrecord blank=all

který provede úplné smazání CD. K dispozici je samozřejmě řada jiných způsobů mazání. Možnosti zjistíte následujícím způsobem:

cdrecord blank=help

Parametry pro cdrecord

Pokud vám připadá zdlouhavé psát pořád stejné parametry u příkazu cdrecord, tak si samozřejmě některé parametry můžete uložit do konfiguračního souboru, který se nachází (pokud ne, tak si jej vytvořte) v souboru /etc/cdrecord.conf (dříve byl v souboru /etc/default/cdrecord.conf).

Vypalování DVD

Pro vypalování DVD se používá především program growisofs nebo cdrecord s nadstavbou pro DVD. Vypalování pomocí programu cdrecord zde již nebudu uvádět, protože je obdobné vypalování CD, které jsme si uvedli výše a pozorný čtenář si jistě dokáže upravit případné parametry, navíc vyžaduje přítomnost nadstavby pro vypalování DVD v programu cdrecord.

Program growisofs je velice jednoduchý a má pouze pár parametrů. Pojďme tedy vyrobit nějaké DVD. Nejprve vypálením již předpřipraveného obrazu, který můžeme vyrobit úplně stejným způsobem jako CD. Pokud chcete na DVD ukládat větší soubory (o velikosti 1GB a více), tak doporučuji použít nativní UDF filesystém, který toto podporuje.

growisofs -speed=4 -Z /dev/hda=backup.iso

Vypálení s vytvořením ISO filesystému "on-the-fly" bude vypadat následovně

growisofs -Z /dev/hda -J -R -graft-points etc=/etc var=/var home=/home

Je to triviální - pouze programu growisofs předhodíme parametry programu mkisofs, který se zavolá jako první a vygenerované ISO se předhodí pomocí interního programu dd programu growisofs.

Multisession DVD

Vypalování "multisession" DVD je jednodušší než vypalování CD, protože growisofs je prakticky frontend pro mkisofs. Stačí místo parametru -Z příkazu growisofs použít pro další sekce parametr -M, jak dokládá i následující příklad:

growisofs -speed=4 -Z /dev/hda -J -R -hide-rr-moved -graft-points etc=/etc
growisofs -speed=4 -M /dev/hda -J -R -hide-rr-moved -graft-points var=/var

Mazání přepisovatelných DVD

Program growisofs obvykle automaticky provede smazání. Program pro mazání je součástí balíku dvd+rw-tools, konkrétně se jedná o program dvd+rw-format.

Tipy na závěr

Určitě z vás občas někdo narazil na problém moderních mechanik, které se snaží číst média příliš rychle i v případě, kdy je to zbytečné - například při přehrávání hudebního CD. Popíšu zde způsoby jak je možné snížit rychlost čtení mechaniky.

eject -x 4 /dev/hdc
hdparm -E 4 /dev/hdc

Když už jsem nakousnul příkaz eject, tak bych měl zmínit i jeho opačnou funkci (tedy zasunutí mechaniky) a to pomocí:

eject -t

Zasunutí mechaniky se také provede automaticky při použití příkazů mount, dd a dalších.

Pokud zálohujete data a chcete se ve vašich zálohách vyznat i v budoucnu, tak si najděte čas i na kvalitní popisky samotných médií a také vytvoření čitelného obalu daného média. Skvělým pomocníkem na vytváření obalů je program cdlabelgen

I přes poměrně značnou délku článku se spousta věcí do tohoto dílu o Linuxu v příkazech již nevešla. Další parametry a možnosti výše zmíněných programů naleznete v manuálových stránkách jednotlivých programů. Protože jsem postihnul pouze vypalování dat a úplně jsem vynechal možnosti vypalování audio CD a video DVD, tak toto mohu v případě většího zájmu napravit v samostatném článku, který by se této problematice věnoval.

Další zdroje


KOMENTARZE
Vytvareni velkych souboru 20.2.2006 21:28 Aleš Hakl
L Re: Vytvareni velkych souboru 21.2.2006 09:11 o.k.
dalsi doplneni tematu 26.2.2006 10:48 Petr Bartel
mount loop non root 8.6.2006 01:52 Jakub Vysoky
  L Re: mount loop non root 8.6.2006 10:20 o.k.
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4850x
2. FreeBSD
Download: 9044x
3. PCLinuxOS-2010
Download: 8541x
4. alcolix
Download: 10915x
5. Onebase Linux
Download: 9631x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6219x

1. xinetd
Download: 2382x
2. RDGS
Download: 937x
3. spkg
Download: 4692x
4. LinPacker
Download: 9918x
5. VFU File Manager
Download: 3173x
6. LeftHand Mała Księgowość
Download: 7171x
7. MISU pyFotoResize
Download: 2775x
8. Lefthand CRM
Download: 3540x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3087x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz