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.
| Články autora
| přečteno 37696×
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
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|