Jak zapisać dane na CD pod Linux-em.

Autor: Winfried Trümper, winni@xpilot.org
v2.0, 10 Sierpnia 1997
Wersja polska: Bartosz Maruszewski B.Maruszewski@zsmeie.torun.pl
v1.0, 18 Września 1997


Dokument ten został napisany w standardzie ISO-8859-2. Oryginał tego dokumentu znajduje się pod adresem www.shop.de.

1. Wprowadzenie.

Moje pierwsze doświadczenia z zapisem płyt CD odbywały się na podstawie "Linux CD Writer mini-HOWTO" Matta Cutts ( cutts@ms.uky.edu). Dzięki Matt!

Pomimo, iż najpierw chciałem tylko uaktualnić jego mini-HOWTO, przepisałem go w całości po tym jak zdałem sobie sprawę ile się zmieniło od 1994 roku.

1.1 Zastrzezenie.

Ja (Winfried Truemper) zrzekam się wszelkich gwarancji odnośnie tego dokumentu, włącznie z wszystkimi włączonymi gwarancjami handlowymi. W żadnym wypadku nie jestem odpowiedzialny za jakiekolwiek bezpośrednie i pośrednie zniszczenia, w wyniku których nastąpiła utrata używalności, danych czy dochodów wynikające z używania tego dokumentu. Krótko: używaj na własną odpowiedzialność.

1.2 Proponowane dokumenty do przeczytania.

CD-R FAQ ( www.cd-info.com) jest dokumentem z ogólnymi pytaniami dotyczącymi nagrywalnych płyt CD.

"Linux CD-ROM HOWTO" wyjaśnia wszystko co powinno się wiedzieć na temat napędów CD-ROM pod Linux-em. Dodatkowo możesz też zerknąć do "SCSI HOWTO" i "Kernel HOWTO".

1.3 Terminologia ... lasery na max ... ognia!

CD-ROM to skrót od "Compact Disc Read Only Memory", nośnik danych wykorzystujący laser optyczny do wyczuwania mikroskopijnych zaglebien na srebrnym, błyszczącym dysku. (Błyszczenie pochodzi od aluminiowej warstwy, która jest nośnikiem.) Zaglebienia reprezentują bity informacji (w pewien sposób) i są takie malutkie, że jakieś kilka bilionów mieści się na płycie. Przez to CD jest nośnikiem dużych ilości danych.

Termin CD-R jest skrótem od "CD-ROM Recordable" i odnosi się do płyty CD, która nie ma tych mikrospijnych zaglebien na powierzchni.

Zamiast aluminiowej warstwy (srebro) ma specjalny "film" (kolorowy), w którym "mikroskopijne zaglebienia)" mogą być wypalone. Robi się to przez nadanie laserowi, który normalnie tylko wykrywa zaglebienia, trochę większej mocy, tak że zaglebienia są wypalane. Takie działanie może być podjęte tylko raz na CD-R.

Jednak można sobie zostawić miejsce na późniejsze nagrywanie, tworząc wielosesyjną płytę CD.

To mini-HOWTO objaśnia zadanie zapisu na CD-R. Witamy na pokładzie, kapitanie!

1.4 Obsługiwane zapisywarki.

Szzegółowa lista modeli, które zostały podane jako nie współpracujące jest dostępna pod adresem ( www.shop.de)
Lista ta będzie zawarta w przyszłych wersjach tego mini-HOWTO.

Jeśli twój sprzęt nie jest obsługiwany, to wciąż możesz użyć Linux-a do przygotowania materiału na CD, ale potem musisz użyć narzędzi DOS-owych, żeby zapisać dane na płytę. Możesz tak zrobić, bo większość oprogramowania DOS-owego nie radzi sobie z długimi nazwami plików dostępnymi w Linux-ie.

W tym przypadku możesz opuścić wszystkie sekcje związane ze sprzętem (te o urządzeniach SCSI i cdwrite).

1.5 Obsługiwane "zalety".

W tej chwili oprogramowanie do wypalania płyt CD pod Linux-em posiada następujące cechy:

       Cecha            cdwrite-2.0     cdrecord-1.5
       --------------------------------------------
       Wielosesyjność  tylko częściowo     tak

       RockRidge       tak (mkisofs)   tak (mkisofs)
       El Torito       tak (mkisofs)   tak (mkisofs)

RockRidge jest rozszerzeniem pozwalającym na dłuższe nazwy i głębszą strukturę katalogów. El Torito może być używane do tworzenia startowych (bootable) płyt CD. Przeczytaj dołączoną dokumentację na temat tych specjalnych cech.

Sekcja 2.8 pokazuje skąd można pobrać wspomniane oprogramowanie.

1.6 Listy dyskusyjne.

Jeśli chcesz się przyłączyć do grupy rozwojowej (w celu aktywnej pomocy), wyślij list na adres cdwrite-request@pixar.com i umieść słowo subscribe w treści listu.

1.7 Najnowsza wersja.

Najnowsza wersja tego dokumentu jest zawsze dostępna pod adresem www.shop.de.

2. Przygotuj swojego Linux-a do nagrywania płyt.

2.1 Ustaw sprzęt.

Zamknij system, wyłącz komputer i podłącz nagrywarkę do szyny SCSI.

Upewnij się, że szyna SCSI jest poprawnie zakończona i wybierz dla nagrywarki wolne SCSI-ID. Zajrzyj do "SCSI-HOWTO" jeśli nie jesteś pewien. Jeśli kompletnie nie masz pojęcia, to zapytaj jakiegoś eksperta.

Włącz zasilanie i sprawdź komunikaty wyświetlane przez BIOS kontrolera SCSI natychmiast po włączeniu zasilania. Jeśli twoja nagrywarka nie zostanie rozpoznana, to wróć do kroku (b). Powinieneś zobaczyć mniej więcej taki komunikat:

brakuje mi obrazka: ma ktoś może screenshot-a tego komunikatu?

2.2 Uwaga na temat zapisu CD pod Linux-em.

W przeciwieństwie do innych rzeczy, jądro nie potrzebuje żadnych łat, żeby móc zapisywać płyty CD. Chociaż plik w źródłach jądra drivers/scsi/scsi.c zawiera linie:

       case TYPE_WORM:
       case TYPE_ROM:
        SDpnt->writeable = 0;

Oznacza to tylko tyle, że CD i WORM nie są zapisywalne poprzez standardowe urządzenia /dev/sda - /de/sdh co jest w porządku.

Zamiast użyć tych urządzeń do zapisu płyt CD używa się do tego celu tzw. ogólnych (generic) urządzeń SCSI, przez które można zrobić prawie wszystko - nawet zapisywać na płytach CD.

2.3 Stwórz ogólne urządzenie SCSI.

W "SCSI-HOWTO" na temat ogólnych urządzeń SCSI czytamy:

"Sterownik ogólnego urządzenia SCSI dostarcza interfejs do wysyłania poleceń SCSI do wszystkich urządzeń SCSI - dysków, taśm, CDROM-ów, media changer robots, itp."

Mówiąc o ogólnych urządzeniach jako o interfejsach oznacza, że dostarczają one alternatywny sposób dostępu do urządzeń SCSI oprócz tego przez standardowe urządzenia.

Ten alternatywny sposób jest wymagany ponieważ standardowe urządzenia są stworzone do czytania bloków danych z dysku, taśmy czy CD-ROM-u. Sterowanie nagrywarką CD (czy skanerem) jest, w porównaniu z zapisem, trochę bardziej egzotyczne, np. muszą być przekazane polecenia ustawienia lasera. Aby mieć porządną (i przez to szybką) implementację standardowych urządzeń, wszystkie takie akcje muszą się odbywać przy pomocy ogólnych urządzeń SCSI.

Ponieważ poprzez ogólne urządzenia SCSI można zrobić wszystko ze sprzętem SCSI nie są one przeznaczone do jakiegoś konkretnego celu - stąd nazwa ogólne (generic).

Przejdź do katalogu /dev i sprawdź czy masz ogólne urządzenia SCSI; polecenie ls powinno pokazać sga - sgh:

       bash> cd /dev
       bash> ls -l sg*
       crw-------   1 root   sys     21,   0 Jan  1  1970 sga
       crw-------   1 root   sys     21,   1 Jan  1  1970 sgb
       crw-------   1 root   sys     21,   2 Jan  1  1970 sgc
       crw-------   1 root   sys     21,   3 Jan  1  1970 sgd
       crw-------   1 root   sys     21,   4 Jan  1  1970 sge
       crw-------   1 root   sys     21,   5 Jan  1  1970 sgf
       crw-------   1 root   sys     21,   6 Jan  1  1970 sgg
       crw-------   1 root   sys     21,   7 Jan  1  1970 sgh

Jeśli nie masz tych urządzeń, to stwórz je przy pomocy skryptu /dev/MAKEDEV:


       bash> cd /dev/
       bash> ./MAKEDEV sg

Teraz urządzenia powinny się pokazać.

2.4 Włącz korzystanie z ogólnych urządzeń SCSI i urządzenia loopback.

Jądro potrzebuje modułu, który umożliwia korzystanie z ogólnych urządzeń SCSI. Jeśli twoje aktualne jądro ma już tę usługę, to powinna się ona pojawić w pseudopliku /proc/devices:


       bash> cat /proc/devices
       Character devices:
        1 mem
        2 pty
        3 ttyp
        4 ttyp
        5 cua
        7 vcs
       21 sg          <----- skrót od "Scsi Generic device"

       30 socksys

       Block devices:
        2 fd
        7 loop        <----- możemy nawet używać urządzenia loopback
        8 sd
       11 sr          <----- skrót od "Scsi cd-Rom"

Może musisz wykonać polecenia insmod sg, insmod loop i insmod sr_mod, żeby załadować odpowiednie moduły do pamięci. Sprawdź jeszcze raz po tych poleceniach.

Jeśli jedno z nich się nie powiedzie, to musisz przekonfigurować jądro i ponownie je skompilować.


       bash> cd /usr/src/linux
       bash> make config

       [..]
       *
       * Additional Block Devices
       *
       Loopback device support (CONFIG_BLK_DEV_LOOP) [M/n/y/?] M

       [..]
       *
       * SCSI support
       *
       SCSI support (CONFIG_SCSI) [Y/m/n/?]
       *
       * SCSI support type (disk, tape, CD-ROM)
       *
       SCSI disk support (CONFIG_BLK_DEV_SD) [Y/m/n/?] Y
       SCSI tape support (CONFIG_CHR_DEV_ST) [M/n/y/?] M
       SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [M/n/y/?] M
       SCSI generic support (CONFIG_CHR_DEV_SG) [M/n/y/?] M

       [..]
       ISO9660 cdrom filesystem (CONFIG_ISO9660_FS) [Y/m/n/?] M

Zauważ, że pominąłem tutaj mniej ważne pytania.

2.5 Skompiluj i zainstaluj jądro.

Jeśli masz jakieś pytania co do tego, to przeczytaj "Kernel-HOWTO". Twoja dystrybucja powinna także dostarczyć jakąś dokumenację na ten temat.

Wskazówka: podczas kompilacji możesz zająć się punktami 2.7 - 2.9

2.6 Zrestartuj komputer, żeby zmiany zaczęły działać.

Nie panikuj jeśli jądro Linux-a będzie wypisywać komunikaty szybciej niż możesz je przeczytać, przynajmniej inicjalizacja urządzeń SCSI może być wyświetlona ponownie poleceniem dmesg:

  scsi0 : NCR53c{7,8}xx (rel 17)
  scsi : 1 host.
  scsi0 : target 0 accepting period 100ns offset 8 10.00MHz
  scsi0 : setting target 0 to period 100ns offset 8 10.00MHz

    Vendor: FUJITSU   Model: M1606S-512        Rev: 6226
    Type:   Direct-Access                      ANSI SCSI
  Detected scsi disk sda at scsi0, channel 0, id 0, lun 0

    Vendor: NEC       Model: CD-ROM DRIVE:84   Rev:  1.0a
    Type:   CD-ROM                             ANSI SCSI
  Detected scsi CD-ROM sr0 at scsi0, channel 0, id 4, lun 0

  scsi : detected 1 SCSI disk total.
  SCSI device sda: hdwr sector= 512 bytes. Sectors= 2131992

Powyżej jest pokazana tylko ta część komunikatów startowych dotycząca wykrycia fizycznie zainstalowanych urządzeń SCSI.

2.7 Stwórz urządzenie loopback.

Przejdź do katalogu /dev i sprawdź czy masz urządzenia loopback. Nie jest to konieczne, żebyś musiał je mieć ale wygodniejsze (zobacz punkt 3.5). Jeśli już je masz, to polecenie ls powinno pokazać loop0 - loop7:


       bash> cd /dev
       bash> ls -l loop*
       brw-rw----   1 root  disk    7,   0 Sep 23 17:15 loop0
       brw-rw----   1 root  disk    7,   1 Sep 23 17:15 loop1
       brw-rw----   1 root  disk    7,   2 Sep 23 17:15 loop2
       brw-rw----   1 root  disk    7,   3 Sep 23 17:15 loop3
       brw-rw----   1 root  disk    7,   4 Sep 23 17:15 loop4
       brw-rw----   1 root  disk    7,   5 Sep 23 17:15 loop5
       brw-rw----   1 root  disk    7,   6 Sep 23 17:15 loop6
       brw-rw----   1 root  disk    7,   7 Sep 23 17:15 loop7

Jeśli nie masz tych urządzeń, to stwórz je przy pomocy skryptu /dev/MAKEDEV:


       bash> cd /dev/
       bash> ./MAKEDEV loop

Powyższe polecenie powiedzie się tylko w przypadku kiedy masz skompilowany moduł loop.o (zobacz punkt 2.4 odnośnie modułów). Jeśli insmod loop nie pomaga, musisz poczekać aż nowe jądro będzie zainstalowane (zobacz punkt 2.5)

2.8 Zdobądź oprogramowanie do wypalania CD.

Narzędzia obsługiwane z linii poleceń.

Aby wygenerować prototyp CD-R potrzebne jest następujące narzędzie: mkisofs-1.11.tar.gz

W zależności od modelu twojej nagrywarki (zobacz 1.3) potrzebne jest jedno z poniższych narzędzi do zapisania danych na CD:

Upewnij się, że masz wersję 2.0 lub nowszą programu cdwrite. Starsze wersje, a już na pewno wersje beta nie będą działać poprawnie. Nie wierz podręcznikowi systemowemu od mkisofs, który stwierdza, że potrzebujesz wersji 1.5.

Na temat implementacji tego programu na systemy Irix i AIX zajrzyj pod adres lidar.ssec.wisc.edu.

Dystrybucja "Debian" dostarcza łatę dla wersji 1.05 mkisofs, która dodaje opcję -K (zobacz 3.4). Jest ona dostępna pod adresem ftp.icm.edu.pl i nazywa się mkisofs_1.05-3.diff.gz.

Łata ta jest potrzebna tylko jeśli chcesz zamontować obraz CD przez urządzenie loopback (zobacz 3.5).

Eric Youngdale napisał poprawkę do jądra, która czyni tę łatę zbyteczną. Ale poprawka ta będzie w jądrze dopiero w następnej wersji stabilnej.

Graficzny interface użytkownika (opcjonalnie).

X-CD-Roast jest w pełni graficznym narzędziem do zapisu dysków CD. Jest on następcą programu cdwtools-0.93. Można go pobrać z adresu www.fh-muenchen.de.

W tej chwili X-CD-Roast jest zbudowany na połatanej wersji cdwrite-2.0 i przez to posiada dokładnie te same cechy (zobacz 1.4). Przyszłe wersje mogą być zbudowane na podstawie alternatywnego proramu - cdrecord.

3. Imperator Nero...

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 pisarzem nie jestem.]

Zwykle zapis CD pod Linux-em robi się w dwóch krokach:

Możliwe też jest połączenie tych dwóch kroków w jeden przy pomocy potoku, ale nie polecam tego, bo nie jest to niezawodne. Zobacz poniżej.

3.1 Sprawdź, do którego ogólnego urządzenia SCSI podłączona jest nagrywarka.

Zauważ: aktualny schemat nazewnictwa urządzeń SCSI pod Linux-em jest niepotrzebnie skomplikowany i przez to niezbyt pewny. Fakt, iż opisałem go tutaj w szczegółach nie powinien być źle zrozumiany jako poparcie tego schematu.

Po przejściu przez wszystkie kroki rozdziału drugiego twój system powinien być w stanie obsłużyć zadanie zapisu płyty CD. Sekcja ta może służyć jako dowód, że wszystko działa poprawnie.

Wydaj polecenie dmesg. Powinny pojawić się komunikaty jądra Linux-a włącznie z tymi wyświetlanymi podczas startu systemu (ograniczenie: tylko ostatnie 200) i zawierać pewne informacje na temat nagrywarki CD podłączonej do szyny SCSI.

Na przykład:

         Vendor: YAMAHA  Model: CDR100       Rev: 1.11
         Type:   WORM                        ANSI SCSI revision: 02
       Detected scsi CD-ROM sr1 at scsi0, channel 0, id 3, lun 0

Ta maszyna ma podłączone 4 urządzenia SCSI (nie możesz tego zobaczyć więc ci mówię) z SCSI-ID od 0 do 3. Nagrywarka jest czwartym urządzeniem SCSI i dlatego podłączona jest do urządzenia /dev/sgd (czwarte ogólne urządzenie SCSI jeśli zaczniesz liczyć od litery a). W tym wypadku polecenie:


       cdwrite  --eject  --device /dev/sgd

otwiera stację i jest testem czy wszystko jest poprawnie ustawione. Bardziej skomplikowany przykład:

  scsi0 : AdvanSys SCSI 1.5: ISA (240 CDB)
  scsi1 : Adaptec 1542
  scsi : 2 hosts.

    Vendor: HP      Model: C4324/C4325  Rev: 1.20
    Type:   CD-ROM                      ANSI SCSI revision: 02
  Detected scsi CD-ROM sr0 at scsi0, channel 0, id 2, lun 0

    Vendor: IBM     Model: DPES-31080   Rev: S31Q
    Type:   Direct-Access               ANSI SCSI revision: 02
  Detected scsi disk sda at scsi1, channel 0, id 0, lun 0

  scsi : detected 1 SCSI cdrom 1 SCSI disk total.
  SCSI device sda: hdwr sector= 512 bytes.

W tym przykładzie dwa kontrolery SCSI obsługują po jednym urządzeniu każdy. Co za marnotrastwo (każdy z nich może obsłużyć do 7 urządzeń). To nie moje ustawienie więc nie pytajcie mnie czy mam za dużo pieniędzy... W każdym razie jak na przykład ten jest doskonały. :-)

W powyższym przykładzie nagrywarka CD ma numer SCSI-ID 2, ale jest przypisana do pierwszego ogólnego urządzenia SCSI - /dev/sga, ponieważ jest pierwszym fizycznym urządzeniem SCSI, które Linux wykrył. Mam nadzieję, że ten przykład pokazuje jasno, że numer SCSI-ID nie ma nic wspólnego z przypisanym urządzeniem ogólnym.

Pozostały dwa pytania: co stanie się jeśli użyjesz złego urządzenia? Jeśli nie podasz ani opcji "--<MANUFACTURER>" ani nie zapiszesz żadnych danych do tego urządzenia, to zwykle pojawia się ostrzeżenie i nie dzieje się nic złego:


       bash> cdwrite  --eject  --device /dev/sgb

       Unknown CD-Writer; if this model is compatible with any
       supported type, please use the appropriate command line
       flag.

       Manufacturer:  IBM
       Model:         DPES-31080
       Revision:      S31Q

W tym wypadku urządzenie /dev/sgb jest dyskiem SCSI (IBM).

Jeśli zapiszesz dane do złego urządzenia, to nadpisujesz oryginalną zawartość i niszczysz przypuszczalnie nieodwracalnie swój system. Ostrożnie, mi się to już przypadkowo stało.

3.2 Zbierz programy.

Zwykle to zabiera więcej czasu niż się spodziewasz. Pamiętaj, że plików, których zapomnisz nie można już dopisać. :-)

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).

3.3 Zapisywanie danych na płycie.

Termin iso9660 odnosi się do formatu w jakim zapisywane są dane na płycie. Dokładniej jest to system plików na płycie.

Oczywiście wygląd plików zapisanych w tym formacie jest ujednolicony przez jądro Linux-a, jak dla każdego innego systemu plików. Tak więc jeśli zamontujesz płytę CD do drzewa katalogów, nie możesz odróżnić jej plików od innych. (Mechanizm unifikowania wyglądu plików zwany jest wirtualnym systemem plików, lub krótko - VFS)

Cechy systemu plików iso9660 nie są takie bogate jak systemu plików EXT2 używanego przez Linux-a. Z drugiej strony, kompakt może być zapisany tylko raz, więc niektóre cechy nie miałyby sensu. Oto ograniczenia systemu plików iso9660:

3.4 Stwórz system plików iso9660.

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.

Cóż, zapisywalne płyty CD jest zapisywalne tylko raz, więc jeśli zapisałbyś na nim pusty system plików, zostałoby sformatowane - ale pozostałoby puste na zawsze. :-)

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 -K  -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 takie prawa jak moja_kolekcja!). Opcja -K naprawia błąd w jądrze i zapobiega "zniszczeniu" ostatniego pliku (dokładnie to Linux nie może go przeczytać). Opcja ta jest dostępna w mkisofs z założoną łatą. Opcja ta jest równoważna opcji -P z cdwrite. Więcej szczegółów jest na stronie podręcznika systemowego o mkisofs.
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 Linux-em 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:

Ponieważ skoordynowanie w czasie nagrywarki CD jest punktem krytycznym, nie wysyłamy danych bezpośrednio z mkisofs (pamiętaj, że linux nie jest systemem czasu rzeczywistego i zadania mogą być źle rozlozone w czasie). W zamian za to zaleca się zapisywanie wyniku w osobnym pliku na dysku twardym. Plik ten jest obrazem płyty CD w skali 1:1 i jest zapisywany w kolejnym kroku przy pomocy narzędzia cdwrite.

Obraz CD jest zapisany w wielkim pliku, więc potrzebujesz taką samą ilość miejsca na dysku jaka jest już zajęta przez te programy. To jest wada.

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ę Linux-ową. 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ę.

3.5 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. 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łądnie tak samo jak będą wyglądać na płycie. Aby odmontować ten plik po prostu napisz umount /cdrom. Uwaga: Jeśli nie użyłeś opcji -K przy poleceniu mkisofs, to ostatni plik w katalogu /cdrom może się nie dać odczytać w całości.

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 mini-HOWTO byłoby o wiele większe i trudniejsze do czytania.

3.6 Uwagi na temat kompaktów nagrywalnych marki "kompakt".

Niemiecki magazyn komputerowy "c't" ma listę wskazówek dotyczących kompaktów "noname" w wydaniu listopadowym 1996:

3.7 Zapisz obraz CD na płytę.

Już nie ma dużo do zrobienia. 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ę.

Aby się upewnić, że nic nie przerwie procesu zapisu, wyrzuć wszystkich użytkowników i odłącz kartę sieciową... Przeczytaj sobie podręcznik "Bastard operator from hell", żeby się dowiedzieć jak to zrobić ;-)

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" i ostatecznie wpisz:


       cdwrite  --device /dev/sgd  obraz_cd
       albo
       cdrecord -v speed=2 dev=4,0 obraz_cd

w zależności od programu, którego chcesz użyć. Oczywiście musisz zamienić podane tutaj urządzenie na to, do którego podłączona jest twoja nagrywarka.

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ę.

3.8 Jeśli coś pójdzie nie tak ...

4. Często zadawane pytania wraz z odpowiedziami.

4.1 Jak czuły jest proces wypalania?

Odpowiedź: To zależy od twojej nagrywarki. Nowsze powinny mieć bufor danych o pojemności ok. 1MB lub coś koło tego i może wytrzymać jakieś 1-2 sekund bez dopływu danych. Jeśli chcesz znać jakieś szczegóły, to zajrzyj do podręcznika albo zapytaj producenta.

Niezależnie od rozmiaru tego bufora musisz zagwarantować stały przepływ danych w granicach 300 kb/s - 600 kb/s.

Procesy intensywnie wykorzystujące dysk, jak np. uaktualnianie bazy "locate", obniżają maksymalny przepływ i na pewno zniszczą płytę; lepiej sprawdź czy takie procesy nie są uruchamiane przez cron-a, at lub anacron-a podczas gdy wypalasz płytę.

Z drugiej strony niektórzy kompilowali jądro podczas wypalania płyty i nic ich płytom się nie działo. Do takich eksperymentów potrzebujesz jednak szybkiej maszyny.

4.2 Czy fragmentacja ma zły wpływ na prędkość przepływu danych?

Fragmentacja jest zwykle taka mała, że jej wpływ jest niezauważalny.

Jeśli nie jesteś pewny, to spójrz na komunikaty wypisywane podczas startu, procent fragmentaji jest podawany podczas sprawdzania systemu plików. Możesz sprawdzić tę wartość bardzo niebezpiecznym poleceniem


       bash> e2fsck -n  /dev/sda5        # '-n' jest ważne!
       [różne komunikaty usunięte - zignoruj wszelkie błędy]
       /dev/sda5: 73/12288 files (12.3% non-contiguous)

W tym przykładzie fragmetacja jest bardzo wysoka - ale na tym systemie plików są tylko 73 małe pliki (użyte w /tmp) więc wartość ta nie jest alarmująca.

4.3 Czy możliwe jest zapisanie obrazu CD na systemie plików UMSDOS?

Tak. Jedyny system plików, któy jest nieodpowiedni do tego celu to NFS.

Ja używam UMSDOS, żeby dzielić mejsce na dysku pomiędzy Linux-em a DOS/Win na PC-cie (486/66) przeznaczonym do nagrywania płyt.

4.4 Czy nie ma jakiegoś sposobu, żeby obejść ograniczenia iso9660?

Tak. Na płycie możesz umieścić jakikolwiek system plików. Ale inne systemy operacyjne nie będą potrafiły obsłużyć takiej płyty.

Oto przepis:

Jeśli chcesz wstawić pozycję do /etc/fstab dla takich płyt, to wyłącz ich sprawdzanie, np.

       /dev/cdrom  /cdrom  ext2  defaults,ro  0 0

Pierwsze 0 oznacza "nie dołączaj tego systemu plików do kopii zapasowych", drugie (ważne) oznacza, "nie sprawdzaj błędów podczas startu" (polecenie fsck nie powiedzie się podczas sprawdzania błędów na płycie).

4.5 Jak czytać i zapisywać płyty z muzyką?

Zdobądź pakiety "cdda2wav" i "sox", dostępnych w Polsce pod adresem ftp.icm.edu.pl. Pierwszy w podkatalogu cdrom/ a drugi w convert/.

Pakiet cdda2wav umożliwia odczytanie podanego przedziału czasowego (albo całej ścieżki) z płyty muzycznej i zamianę odczytanych danych na format pliku WAV. sox natomiast zamienia format pliku WAV na format zapisu na płytach muzycznych, tak że dane te mogą zostać zapisane na płytę przy pomocy cdwrite.

4.6 Jak automatycznie wykrywać urządzenia SCSI po starcie?

Plik drivers/scsi/scsi.c zawiera taką informację:

   "Użycie: echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
   Zamień "0 1 2 3" na swoje numery "Host Channel Id Lun".
   Ta cecha jest BETĄ.
      UWAGA: Programu tego nie można używać do podłączania urządzeń SCSI
      podczas działania systemu ponieważ urządzenia te nie zostały
      przygotowane do tego i możesz sobie zniszczyć sprzęt!
   Ale może można włączyć już podłączone urządzenie. Jednak nie ma
   żadnej gwarancji, że urządzenie to nie zniszczy nadchodzących
   danych."

4.7 Czy możliwe jest zrobienie kopii 1:1 danych z płyty?

Tak. Ale powinieneś zdawać sobie sprawę z tego, iż wszelkie błędy podczas odczytu oryginału (z powodu kurzu czy rys) spowodują błędy także w kopii.

Pierwszy przypadek: masz nagrywarkę i oddzielny napęd CDROM. Wykonując polecenie:


       cdwrite -v -D /dev/sgc --pad -b  $(isosize  /dev/scd0) /dev/scd0
       lub
       cdrecord -v dev=3,0 speed=2 -isosize /dev/scd0

odczytujesz strumień danych z CD-ROM-u podłączonego jako /dev/scd0 i zapisujesz go bezpośrednio poprzez /dev/sgc/ na nagrywarkę.

Drugi przypadek: nie masz oddzielnego napędu CD-ROM. W tym przypadku musisz użyć nagrywarki, żeby odczytać dane:


       dd if=/dev/scd0 of=obraz_cd bs=1c count=`isosize  /dev/scd0`

Polecenie to jest równoważne mkisofs więc powinieneś postępować dalej tak, jak to opisano w rozdziale 3. Zauważ, że ta metoda nie zadziała w przypadku płyt muzycznych.

4.8 Czy Linux umie odczytać płyty Joliet?

Tak. Ale musisz załatać jądro i je ponownie skompilować. Więcej szczegółów znajdziesz pod adresem www-plateau.cs.berkeley.edu.

4.9 Jak się czyta/montuje CD-ROM-y przez nagrywarkę?

Tak jak to robisz ze zwykłymi napędami. Żadnych sztuczek. Zauważ, że musisz użyć urządzeń scd (SCSI CD-ROM), aby zamontować płytę do czytania. Przykładowa pozycja z /etc/fstab:

       /dev/scd0  /cdrom  iso9660  ro,user,noauto  0  0

5. Rozwiązywanie problemów.

5.1 Nie działa: pod Linux-em.

Sprawdź najpierw czy nagrywarka działa w innych systemach. A konkretnie:

Jeśli "to nie działa" nawet w innych systemach, to masz jakiś konflikt sprzętowy albo popsuty sprzęt.

5.2 Nie działa: pod DOS-em i przyjaciółmi.

Najprzypuszczlaniej błędy te są powodowane:

W różnych warunkach urządzenia SCSI odłączają się i podłączają ponownie samemu (elektronicznie) do szyny SCSI. Jeśli taka cecha nie jest dostępna (sprawdź parametry kontrolera i jądra) niektóre nagrywarki mają problemy podczas wypalania czy utrwalania danych na kompakcie.

Szczególnie sterownik NCR 53c7,8xx SCSI ma standardowo wyłączoną tę cechę, więc możesz najpierw to sprawdzić:

       NCR53c7,8xx SCSI support                  [N/y/m/?] y
          always negotiate synchronous transfers [N/y/?] (NEW) n
          allow FAST-SCSI [10MHz]                [N/y/?] (NEW) y
          allow DISCONNECT                       [N/y/?] (NEW) y

6. Podziękowania.

Andreas Erdmann <erdmann@zpr.uni-koeln.de> dostarczył przykłady z nagrywarką YAMAHA.

Art Stone <stone@math.ubc.ca> dostarczył pomysł na umieszczanie systemów plików innych niż iso9660 na płytach.

Bernhard Gubanka <beg@ipp-garching.mpg.de> zauważył potrzebę posiadania nowszych narzędzi mount do montowania przy pomocy urządzenia loopback.

Brian H. Toby wygładził słownictwo.

Bruce Perens <bruce@pixar.com> podał informację o liście dyskusyjnej na temat nagrywarek CD.

Dale Scheetz <dwarf@polaris.net> pomógł w ulepszeniu sekcji na temat tworzenia obrazu CD.

Edwin H. Kribbs zgłosił, że opcja <bf/-K/ wymaga łaty dla mkisofs.

Gerald C Snyder <gcsnyd@loop.com> sprawdził nagrywanie CD-ROM-u EXT2 (zobacz <ref id="4.4" name="4.4">)

Ingo Fischenisch <ingo@mi.uni-koeln.de> dostarczył przykład z dwoma kontrolerami obsługującymi 2 urządzenia.

Janne Himanka <shem@oyt.oulu.fi> - adres do łaty dla jądra potrzebnej do czytania płyt Joliet.

Joerg Schilling <schilling@fokus.gmd.de> - informacje na temat cdrecord.

Jos van Geffen <jos@tnj.phys.tue.nl> zauważył problem w 4.9

Markus Dickebohm <m.dickebohm@uni-koeln.de>

Pierre Pfister <pp@uplift.fr> pomógł przy tworzeniu przepisu jak zrobić kopię 1:1

Rick Cochran <rick@msc.cornell.edu> - wskazówka na temat domyślnego wyłączenia cechy rozłączania/ponownego podłączania w sterowniku ncr.

Stephan Noy <stnoy@mi.uni-koeln.de> informacje i doświadczenia na temat nagrywania płyt muzycznych.

Stephen Harris <sweh@mpn.com> dostarczył wskazówkę na temat zapisu płyt muzycznych.

The Sheepy One <kero@escape.com> zasugerował użycie popsutych płyt jako podstawkę pod napoje.

Volker Kuhlmann <kuhlmav@elec.canterbury.ac.nz> zauważył, że pakiet "cdwrite" nie zawiera mkisofs.

6.1 Od tłumacza.

Tłumaczenie to jest chronione prawami autorskimi © Bartosza Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na prawach takich samych jak dokument oryginalny.

Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne, składniowe, techniczne to pisz do mnie:

B.Maruszewski@zsmeie.torun.pl

Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/

Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

Przetłumaczone przeze mnie dokumenty znajdują się także na mojej stronie WWW. Są tam też odwołania do Polskiej Strony Tłumaczeniowej.

Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij list o treści subscribe jtz Imię Nazwisko na adres listproc@ippt.gov.pl

Zmiany w tym dokumencie wprowadzone przez tłumacza to: