Następna strona Poprzednia strona Spis treści

3. Wypalanie płyt CD-R.

Imperator Nero na temat palenia swoich własnych klasycznych CD [AD64; on się na tym kompletnie nie zna] "Jeśli do ognia się obrócisz, zabawiać się nie przestanę póki się palisz."

[tłum.: Z góry przepraszam za tłumaczenie, ale poetą nie jestem.]

Zapis CD w Linuksie składa się z dwóch kroków:

Rozdział ten opisuje kroki tworzenia płyt z danymi i audio.

3.1 Zapis CD-ROM-ów (czyste dane).

Pamiętaj, że zebranie wszystkiego do płyty zabiera o wiele więcej niż się można spodziewać. Jednak pamiętaj też, że brakujących plików nie można dopisać do płyty jak jest już zapisana i zakończona.

Pamiętaj także, że pewna ilość miejsca na płycie jest używana do przechowywania informacji na temat systemu plików iso9660 (zwykle kilka MB). 620 MB danych zawsze się zmieści na 650MB płycie CD-R.

3.2 Tworzenie obrazu późniejszej płyty.

Zanim jakiś nośnik danych (dyskietka, dysk twardy czy kompakt) będzie mógł być użyty trzeba na nim założyć system plików (mówiąc po DOS-owemu: trzeba go sformatować). System plików jest odpowiedzialny za organizację i zapis plików na nośniku.

Zwykle, narzędzia do tworzenia systemu plików na partycji dyskowej, zapisuja na niej pusty system plików, który jest potem montowany i wypełniany plikami przez użytkownika. Zapisywalne płyty CD są zapisywalne tylko raz, więc jeśli zapisałbyś na nim pusty system plików, zostałoby sformatowane - ale pozostałoby puste na zawsze. Jest to także prawda dla nośników wielokrotnego zapisu, ponieważ nie można zmienić dowolnie zawartości sektorów, ale trzeba ją całą najpierw skasować.

Więc to czego potrzebujemy, to narzędzie, które tworzy system plików podczas nagrywania plików na płycie. Narzędzie to nazywa się mkisofs. Przykładowe użycie może być takie:

       mkisofs  -r -o obraz_cd   moja_kolekcja/
                   `---------'   `-------------'
                        |               |
                  dokąd zapisać   nagraj z tego katalogu

Opcja -r ustawia prawa dostępu wszystkich plików na odczyt dla wszystkich i włącza RockRidge Extensions. To jest zwykle to, co chcesz osiągnąć i użycie tej opcji jest zalecane, no chyba, że wiesz dokładnie co robisz. (wskazówka: bez -r pliki na kompakcie będą miały prawa jak moja_kolekcja!).

mkisofs spróbuje odwzorować wszystkie nazwy plików na format 8.3 używany przez DOS, aby zapewnić jak największą kompatybilność. W razie gdy pliki w formacie 8.3 nazywają się tak samo, używane są liczby, a informacja o takich plikach wysyłana jest do STDERR - zwykle ekran. Nie panikuj:
Pod Linuksem nigdy nie zobaczysz tych nazw w formacie 8.3, ponieważ Linux umie korzystać z RockRidge Extensions, które zawierają oryginalne atrybuty pliku (prawa dostępu, nazwy, itp.).

Teraz możesz się zastanawiać dlaczego rezultat nie jest wysyłany bezpośrednio do nagrywarki. Z dwóch powodów:

Metodę zapisu płyty w jednym kroku opiszę poniżej.

Możnaby stworzyć dodatkową partycję na dysku i tam zapisywać wynik działania mkisofs. Jednak ja jestem przeciwny takiemu rozwiązaniu ponieważ jedną literówką możnaby sobie zniszczyć całą partycję Linuksową (czytaj: co mi się przytrafiło...). Co więcej, to jest marnowanie miejsca na dysku, bo dane te są tylko czasowe i można je usunąć po zapisaniu na płytę. Jednak jeśli masz wystarczająco dużo miejsca na dysku, dodatkowa partycja może ci zaoszczędzić czasu na kasowanie obrazu.

Przetestuj obraz kompaktu.

Linux ma możliwość montowania plików tak jakby były one partycją. Cecha ta przydaje się do testowania obrazu płyty, czy prawa dostępu są takie jak chcesz. Pomimo, iż nośniki są teraz bardzo tanie, to zapis płyty zabiera trochę czasu i możesz chociaż zaoszczędzić swój czas sprawdzając obraz.

Aby zamontować w katalogu /cdrom taki plik stworzony wcześniej wpisz:


       mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom

Teraz możesz sprawdzić pliki w katalogu /cdrom - pojawią się tam dokładnie tak samo jak będą wyglądać na płycie. Aby odmontować ten plik po prostu napisz umount /cdrom. Uwaga: Jeśli masz jądro starsze niż 2.0.31, to ostatni plik na płycie może nie być czytany. Użyj nowszego jądra, jak np. 2.0.36. Opcja -pad w programie cdrecord odnosi się tylko do płyt audio, a dodatkowa opcja -pad programu mkisofs wymaga łaty, co jest taką samą pracą jak uaktualnienie do nowego jądra.

Uwaga:

Niektóre stare wersje mount nie umieją obsługiwać urządzeń loopback. Jeśli masz taką starą wersję mount, to jest to wskazówka, żeby uaktualnić swoją dystrybucję.
Kilku ludzi sugerowało już, żeby zamieścić tu informację skąd wziąć najnowsze narzędzia do montowania, ale ja zawsze odmawiam. Jeśli twoja dystrybucja dostarcza takiej starej wersji mount, to zgłoś to do nich jako błąd. Jeśli twoja dystrybucja nie jest łatwa do uaktualnienia, zgłoś to jako błąd.

Jeśli dołączyłbym tutaj wszystkie informacje potrzebne do poprawienia błędów w źle zaprojektowanej dystrybucji to HOWTO byłoby o wiele większe i trudniejsze do czytania.

3.3 Zapisz obraz CD na płytę.

Już nie ma dużo do zrobienia. Jeśli jeszcze nie próbowałeś, to jest dobra chwila na polecenie:

cdrecord -scanbus

Polecenie to pokaże ci do którego urządzenia SCSI dołączona jest twoja nagrywarka. Wszystkie inne metody zgadywania informacji wyświetlanych przez cdrecord zostały usunięte z tego HOWTO (szczególnie ten cokolwiek niebezbieczny schemat nazewnictwa ogólnych urządzeń SCSI).

Zanim pokażę ci ostatnie polecenie, pozwól się ostrzec, że nagrywarki "lubią być karmione" ciągłym strumieniem danych ponieważ mają tylko mały bufor danych. Tak więc proces zapisu obrazu CD na płytę nie może być przerwany, bo w wyniku otrzymamy źle nagraną płytę. Łatwo jest przerwać taki strumień danych np. przez skasowanie dużego pliku. Przykład: Jeśli skasujesz plik o rozmiarze 650 MB, to jądro musi uaktualnić informacje o 650.000 bloków na dysku (zakładając, że masz na swoim systemie plików bloki 1 kB). Zajmuje to trochę czasu i bardzo prawdopodobne, że zwolni działalność dysku na tyle, że strumień danych zostanie przerwany na kilka sekund. Jednak na szybkich maszynach czytanie poczty, surfowanie po sieci czy nawet kompilacja jądra nie mają wpływu na nagrywanie.

Zauważ proszę, że żadna nagrywarka nie potrafi ponownie ustawić lasera i nie może kontynuować od miejsca, w którym zostało przerwane nagrywanie. Przez to każda silniejsza wibracja a nawet wstrząs zniszczy płytę.

Jeśli jesteś już psychicznie przygotowany, ubierz się w czarną szatę, pomnóż numer SCSI-ID nagrywarki przez numer SCSI-revision i zapal tyleż samo świeczek, wymów dwa wiersze z "ASR-FAQ" (grupa dyskusyjna alt.sysadmin.recovery) i ostatecznie wpisz:

$ > SCSI_BUS=0   # wzięte z listingu "scsibus0:"
$ > SCSI_ID=6    # wzięte z listingu "TOSHIBA XM-3401"
$ > SCSI_LUN=0
$ > cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
                   -data  cd_image

# to samo co wyżej, ale krótsze
$ > cdrecord -v speed=2 dev=0,6,0  -data  cd_image

Dla zwiększenia czytelnośći, namiary na nagrywarkę zapisane są do trzech zmiennych o wymownych nazwach: SCSI_BUS, SCSI_ID, SCSI_LUN. Opcja -data nie jest konieczna, ale została tutaj podana, aby odróżnić tę linijkę o linijki służącej do nagrywania płyt audio.

Jeśli używasz programu cdrecord do nadpisania płyty CD-RW, musisz podać opcję blank=..., aby skasować poprzednią zawartość. Poczytaj stronę podręcznika man, aby dowiedzieć się więcej na temat różnych metod zerowania płyty CD-RW.

W czasach kiedy wszyscy oprócz mnie posiadają 400 MHz maszyny, ludzie nagrywają płyty w locie bez tworzenia obrazu. Czyli łączą wyjście programu mkisofs z wejściem programu cdrecord:

$ > IMG_SIZE=`mkisofs -R -q -print-size private_collection/`
$ > mkisofs -r  private_collection/  \
|cdrecord  speed=2  dev=0,6,0
            tsize=${IMG_SIZE}s  -data  -
#         nie zapomnij o s --^         ^-- czytaj dane z STDIN

Pierwsze polecenie jest pustym poleceniem służącym do określenia rozmiatu obrazu (potrzebujesz mkisofs z pakietu cdrecord, aby to działało). Może twoja nagrywarka nie musi znać rozmiaru obrazu, który będzie zapisany, wtedy możesz to opuścić. Wyświetlony rozmiar musi być przekazany jako parametr tsize do polecenia cdrecord (jest zapisany w zmiennej środowiskowej IMG_SIZE). Ostatnie polecenie to połączenie poleceń mkisofs i cdrecord przez potok.

3.4 Zapisywanie płyt audio.

Zapisanie takiej płyty jest bardzo podobne do wymienionych powyżej kroków/ Dwie główne różnice, to fakt, że płyty audio składają się ze ścieżek audio, które są zorganizowane w osobne obrazy. Więc jeśli chcesz mieć 10 ścieżek, to musisz mieć 10 obrazów. Drugą różnicą jest format tych obrazów. Już nie ISO 9660 (czy jaki tam system plików wolisz), ale 16-bitowe sample w kodowaniu PCM z częstotliwością próbkowania 44,1 kHz.

Jednym z narzędzi do zamiany twoich plików dźwiękowych do wymaganego formatu jest sox. Użycie jest bardzo proste:

$ > sox  killing-my-software.wav  killing-my-software.cdr

Polecenie to zamienia utwór killing-my-software z formatu WAV na format CDR. Poczytaj stronę podręcznika systemowego man programu sox na temat rozszerzeń i formatów plików rozpoznawanych przez niego. Z powodu sporej ilości dysku potrzbnej na konwersję, jest to wbudowana cecha programu cdrecord dla formatów WAV i AU. Tak więc dopóki twoje pliki muzyczne są w postaci plików .wav czy .au i są to 16-bitowe próbki z częstotliwością 44,1 kHz możesz ich używać bez ręcznej zamiany.

Cdrecord zapisuje obrazy jako ścieżki audio jeśli podamy opcję -audio. Inne opcje są identyczne z tymi do zapisywania danych (o ile nie masz jakichś bardzo specyficznych wymagań). Poniższe trzy przykłady robią to samo, ale czytają obrazy z innych plików:

$ > cdrecord -v speed=2 dev=0,6,0  -audio  track1.cdr track2.cdr...
$ > cdrecord -v speed=2 dev=0,6,0  -audio  track1.wav track2.wav...
$ > cdrecord -v speed=2 dev=0,6,0  -audio  track1.au track2.au...

Szczególnym przypadkiem są pliki MPEG3, które mogą być zamienione przy pomocy programu 'mpg123 -s track1.mp3 > track1.cdr'. W drugą stronę działa 8hz-mp3 dla plików WAV.

W takim układzie jak powyżej wypalisz płyty z 2-sekundową przerwą pomiędzy każdymi dwoma ścieżkami audio. Jeśli twoja nagrywarka umożliwia nagrywanie w trybie "disc at once" (DAO), możesz wypróbować najnowszej wersji cdrecord, aby się tych przerw pozbyć.

3.5 CD-ROM-y mieszane.

Niewiele do powiedzenia. Po prostu określ typ oklejnych obrazów opcjami -data lub -audio. Przykład:

cdrecord  -v dev=0,6,0  -data  cd_image  -audio  track*.cdr


Następna strona Poprzednia strona Spis treści