Następna strona Poprzednia strona Spis treści

6. Odpowiedzi na często zadawane pytania.

6.1 Jak inny użytkownik niż root może montować i odmontowywać płyty?

Większość poleceń mount posiada opcję user. Jeśli zrobisz taką pozycję w /etc/fstab:

/dev/sbpcd  /mnt/cdrom   iso9660     user,noauto,ro

to zwykły użytkownik będzie mógł zamontować i odmontować płytę poleceniami:

% mount /mnt/cdrom
% umount /mnt/cdrom

Płyta zostanie zamontowana z pewnymi opcjami, które zwiększają bezpieczeństwo (np. programy nie mogą być wykonywane, pliki urządzeń są ignorowane); w niektórych przypadkach może to być zbyt rygorystyczne.

Inną metodą jest zdybycie pakietu usermount, który pozwala użytkownikom innym niż root montować i odmontowywać urządzenia wyjmowalne takie jak dyskietki i CD-ROM-y, ale zmniejsza dostęp do innych urządzeń (takich jak partycje twardych dysków). Dostępny jest na większości serwerów ftp.

Pod adresem ftp.cdrom.com znajduje się plik źródłowy mount.c, który pozwala na montowanie i odmontowywanie CD-ROM-ów (tylko) przez normalnych użytkowników. Uruchamiany jest z prawami root-a.

6.2 Dlaczego dostaję komunikat "device is busy" kiedy odmontowuję CD-ROM?

Płyta nie może być odmontowana jeśli jakikolwiek proces żąda do niej dostępu, włącznie z przypadkiem kiedy bierzącym katalogiem jest któryś z podkatalogów płyty lub jej katalog główny. Jeśli nie możesz znaleźć procesu używającego płytę, to możesz użyć polecenia fuser tak jak to pokazano poniżej:

% umount /cdrom
umount: /dev/hdd: device is busy
% fuser -v /cdrom
                     USER       PID ACCESS COMMAND
/mnt/cdrom           tranter    133 ..c..  bash

Na niektórych systemach możliwe, że musisz być root-em, żeby uruchomić polecenie fuser, żeby zobaczyć procesy innych użytkowników.

6.3 Jak mam eksportować CD-ROM dla innych komputerów przez NFS?

Musisz dodać pozycję do pliku /etc/exports. Wtedy użytkownicy na tamtej maszynie będą mogli zamontować to urządzenie. Szczegóły znajdziesz w poleceniu "man 5 exports".

6.4 Czy mogę startować Linux-a z CD-ROM-u?

Przy instalacji Linux-a najpopularniejszą metodą jest użycie dyskietki startowej. Niektóre dystrybucje pozwalają na start Linux-a bezpośrednio z płyty.

Michael Fulbright ( msf@redhat.com) zgłosił, że jeśli posiada się dobry CD-ROM, ROM BIOS i napęd CD-ROM ATAPI, to jest możliwe startowanie z płyty. Najnowsza wersja mkisofs także obsługuje tworzenie takich dysków. Dodał on jakieś łaty do obsługi standardu El Torito dla startowalnych CD-ROM-ów.

6.5 Jak mogę przeczyta dane cyfrowe z płyty muzycznej?

Heiko Eissfeldt ( heiko@colossus.escape.de) i Olaf Kindel napisali narzędzie, które czyta dane audio i zachowuje je jako pliki dźwiękowe w formacie .wav. Pakiet nazywa się cdda2wav.tar.gz i można go pobrać z ftp.icm.edu.pl.

Ponieważ napędy CD-ROM zmieniają się bardzo szybko, trudno jest powiedzieć które modele obsługują czytanie danych cyfrowych. Najlepiej zdobyć najnowszy pakiet cdda2wav i przeczytać zawartą tam dokumentację.

Więcej informacji na ten temat znajdziesz na stronie www.tardis.ed.ac.uk oraz w FAQ grupy alt.cd-rom wymienionym w referencjach.

6.6 Dlaczego polecenie find nie działa?

Jeśli używasz tego polecenia na kompakcie w formacie ISO-9660 bez Rock Ridge Extensions, to musisz dodać opcję -noleaf. Więcej szczegółów w poleceniu "man find".

(Z moich doświadczeń wynika, że prawie wszystkie nowsze płyty Linux-a używają Rock Ridge Extensions, więc ten problem powinien występować bardzo rzadko.)

6.7 Czy Linux obsługuje jakieś nagrywarki?

Pakiet X-CD-Roast jest graficznym interfejsem do obsługi nagrywarek CD. Pakiet można znaleźć na ftp.icm.edu.pl w kataloogu /pub/Linux/sunsite/utils/disk-management/.

Zobacz także "Linux CD-Writing HOWTO" pod adresem www.jtz.org.pl dostępne w języku polskim.

6.8 Dlaczego pojawia się taki komunikat "mount: Read-only file system when mounting a CD-ROM"?

CD-ROM jest nośnikiem tylko do odczytu. We wcześniejszych wersjach jądra można było zamontować płytę CD do zapisu i odczytu, ale zapis był po prostu ignorowany. Od wersji 1.1.33 zostało to poprawione i CD-ROM-y muszą być montowane tylko-do-odczytu (np. z opcją -r).

6.9 Dlaczego wysuwa mi się szufladka kiedy zamykam system?

Od wersji jądra 1.1.38, sterownik sbpcd wysuwa szufladkę kiedy płyta jest odmontowywana. Jeśli zamykasz system, to zamontowana płyta zostanie odmontowana i szufladka wysunięta.

Funkcja ta ma pomóc przy zmianie płyt. Jeśli szufladka jest wysunięta, to przy próbie odczytu lub zamontowania zostanie zamknięta automatycznie.

Stwierdziłem, że to powoduje problemy z niektórymi programami (np. cdplay i workbone). Od wersji 1.1.60 jądra można tę funkcję kontrolować programowo. Przykładowy program zawarty jest w dokumentacji do sterownika sbpcd programu (albo użyj eject).

6.10 Mam "specjalny" kompakt, którego nie można zamontować?

Ten specjalny kompakt to pewnie płyta XA (jak wszystkie PhotoCD czy "one-offs" stworzone przy użyciu nagrywarek). Większość sterowników CD-ROM-ów nie obsługuje płyt XA, chociaż może znajdziesz gdzieś jakąś łatę, która dodaje obsługę takich płyt.

Sterownik sbpcd obsługuje XA. Jeśli używasz tego sterownika, to możesz sprawdzić czy płyta jest XA w ten sposób: otwórz plik sbpcd.c i włącz wyświetlanie "Table of Contents" (DBG_TOC). Skompiluj i zainstaluj nowe jądra i wystartuj je. Podczas każdego montowania TOC będzie wyświetlane na konsoli, albo logowane do pliku). Jeśli pierwszą wartością w TOC jest 20, to jest to płyta XA. Bajt ten ma wartość 00 w normalnych płytach. Jeśli TOC pokazuje różne ścieżki, to jest to także znak, że jest to płyta XA.

(dzięki dla Eberharda Moenkeberga za powyższą informację)

Innymi możliwościami dla nieodczytywalnych CD-ROM-ów są:

  1. Płyta nie używa systemu plików ISO-9660 (np. niektóre używają SunOS lub HFS).
  2. Jest to płyta muzyczna.
  3. Włożyłeś ją do napędu "do góry nogami" :-)

6.11 Czy wielopłytowe napędy CD-ROM działają z Linux-em?

Kilku użytkowników zgłosiło, że osiągnęło jakieś sukcesy z wielopłytowymi napędami CD-ROM SCSI. Musisz przypuszczalnie włączyć opcję "Probe all LUNs on each SCSI device" przy konfiguracji jądra. Przynajmniej jeden użytkownik musiał także zwiększyć wartość oczekiwania (timeout) dla SCSI w sterowniku. Zgłoszono mi, że Nakamichi MBR-7 7 i Pioneer 12 działają.

Dostępne są także napędy wielopłytowe EIDE/ATAPI. Jądro w wersji 2.0 ma szczątkową obsługę dla napędów korzystających z funkcji ioctl CDROM_SELECT_DISC. Plik z dokumentacją do sterownika IDE-CD zawiera źródła krótkiego programu do wybierania kompaktów, albo możesz użyć nowszej wersji opisanego wcześniej programu eject.

6.12 Dostaję błędy: "/cdrom: Permission denied"

Niektóre płyty mają tak ustawione prawa dostępu do swojego głównego katalogu, że tylko użytkownik root może go czytać. Przykładem może tutaj być płyta InfoMagic z marca 1995. Jest to wyraźna niedogodność.

Następująca łata, grzeczność ze strony Christopha Lametera ( clameter@waterf.org) obchodzi ten problem w jądrze.

From: clameter@waterf.org (Christoph Lameter)
Newsgroups: comp.os.linux.setup
Subject: InfoMagic Developers Set: Fix for CD-ROM permissions
Date: 12 Apr 1995 20:32:03 -0700
Organization: The Water Fountain - Mining for streams of Living Water
NNTP-Posting-Host: waterf.org
X-Newsreader: TIN [version 1.2 PL2]

Zbiór płyt "InfoMagic Developers" z marca 1995 ma błędy ponieważ
informacja o prawach dostępu zapisana w katalogu głównym przysparza
następujących problemów:

1. Płyta 1 będzie zawsze miała właściciela/grupę 5101/51 i ma
dozwolony zapis (?)

2. Płyta 2 i 3 mają ustawione prawa rwx dla root-a i żadnych praw dla
innych użytkowników/grupy. Płyty tej nie można odczytać z innego
użytkownika niż root! Mam uruchomionego BBS-a i muszę je udostępnić do
zgrywania dla innych.

Widziałem już gdzieś tam kilka poprawek do tego. Jednak kłopot w tym,
że poprawki te zmieniają prawa dla WSZYSTKICH katalogów na płycie. Ta
poprawka zmienia TYLKO prawa dostępu do katalogu głównego płyty. Jeśli
chcesz uruchamiać części Linux-a bezpośrednio z tej płyty to możesz
wpaść w kłopoty jeśli wszystkie katalogi są czytelne dla wszystkich i
jeśli właścicielem wszystkich jest root.

Poprawka ta zmieni prawa dostępu dla katalogu głównego na r-xr-xr-x i
właściciela/grupę na wartości odpowiadające opcjom uid i gid polecenia
mount.

Aby założyć poprawkę:
 cd /usr/src/linux/fs/isofs
 patch <**TEN LIST**

i skompiluj ponownie jądro (możliwe, że musisz poprawić trochę tę
poprawkę w zależności od wersji twojego jądra).

Poprawka ta powinna się przypuszczalnie znaleźć w jądrze. Jaki interes
mają dane na płycie w grzebaniu prawami/właścicielem katalogu do
zamontowania?

--- inode.c.ORIG        Wed Apr 12 17:24:36 1995
+++ inode.c     Wed Apr 12 17:59:12 1995
@@ -552,7 +552,15 @@
    these numbers in the inode structure. */
 
        if (!high_sierra)
-         parse_rock_ridge_inode(raw_inode, inode);
+       {  parse_rock_ridge_inode(raw_inode, inode);
+           /* check for access to the root directory rights/owner CL */
+          if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino)
+           { /* Change owner/rights to the ones demanded by the mount command */
+             inode->i_uid = inode->i_sb->u.isofs_sb.s_uid;
+             inode->i_gid = inode->i_sb->u.isofs_sb.s_gid;
+            inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR;
+           }
+        }
        
 #ifdef DEBUG
        printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_extent);
@@ -805,4 +813,3 @@
 }
 
 #endif
-

Zauważ, że powyższa łata jest raczej stara i przypuszczalnie nie zainstaluje się gładko w jądrze wersji 2.0. Zobacz także pytanie na temat plików ukrytych w dalszej części tego dokumentu.

6.13 Jak mam interpretować komunikaty o błędach IDE CD?

Co to znaczy jak otrzymam komunikat o błędzie od sterownika CD-ROM-u - np. taki: "hdxx: code: xx key: x asc: xx ascq: x"?

To jest komunikat o statusie/błędzie od napędu IDE CD-ROM. Domyślnie sterownik IDECD wypisuje informacje otrzymane przez napęd bez "zawracania jądru głowy". Możesz zmienić to domyślne zachowanie, aby wyświetlał właściwy komunikat o błędzie, przez zmianę wartości VERBOSE_IDE_CD_ERRORS w pliku /usr/src/linux/drivers/block/ide-cd.c na 1 i rekompilację jądra.

6.14 Jak mogę powiedzieć jaką prędkość ma mój CD-ROM?

Oto jeden sposób. Polecenie to mierzy jaki czas przeznaczony jest na odczytanie 1500K danych z płyty:

% time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500
1500+0 records in
1500+0 records out
real 5.24
user 0.03
sys 5.07

Prędkość CD-ROM-u o pojedynczej prędkości wynosi 150 kb na sekundę, co powinno zabrać około 10 sekund. Przy prędkości podwójnej zabrałoby to 5 sekund, przy czterokrotnej - 2,5, itd...

Czas "real" powyżej jest przypuszczalnie tym, na który należy patrzeć - w tym przypadku jest to CD-ROM podwójnej prędkości. Możesz zwiększyć ilość danych, aby otrzymać bardziej dokładną wartość (w razie gdybyś pytał, to te dane nie są cache'owane). Przypuszczalnie powinieneś uruchomić to polecenie kilka razy i wziąć średnią z nich wszystkich.

6.15 Mój CD-ROM przestał działać odkąd zainstalowałem Linux-a.

Zwykłym symptomem jest to, że dysk startowy użyty do instalacji rozpoznał twój CD-ROM, ale po tym jak Linux został zainstalowany na dysku twardym czy dyskietce i zrestartowany - przestał rozpoznawać twój napęd.

Najpopularniejszym powodem jest tutaj fakt, że w niektórych dystrybucjach jądro instalowane nie zawsze jest tym samym jądrem, które znajduje się na twojej dyskietce startowej. Wybrałeś dyskietkę, która obsługiwała twój CD-ROM, podczas gdy jądro, które zainstalowałeś, jest jądrem "ogólnym" i nie ma w nim obsługi CD-ROM-u. Możesz to sprawdzić postępując zgodnie ze wskazówkami zawartymi w sekcji Rozwiązywanie problemów wcześniej w tym dokumencie (np. zacznij od sprawdzenia /proc/devices).

Rozwiązaniem jest ponowna kompilacja jądra, upewniając się jednocześnie, że wszystkie sterowniki jakie potrzebujesz są włączone. Zobacz Kernel-HOWTO (po polsku) jeśli nie wiesz jak to zrobić.

Jeśli przekazałeś jakieś parametry startowe do dyskietki (np. "hdc=cdrom"), to musisz je dodać do konfiguracji twojego programu startującego (zwykle jest to plik /etc/lilo.conf).

6.16 Na płycie są "ukryte" plik, których nie mogę odczytać.

Niektóre płyty posiadają pliki z ustawionym bitem "hidden". Normalnie nie można zobaczyć tych plików. Jeśli zamontujesz płytę z opcją "unhide", to wtedy pliki te powinny być dostępne (jakoś nie widać, żęby to było gdziekolwiek udokumentowane).

6.17 Gdzie jest udokumentowane CD-ROM API?

Jeśli chcesz napisać własną aplikację, jak np. odtwarzarka audio, to będziesz musiał zrozumieć API - interfejs programowana aplikacji (application programming interface).

Oryginalnie sterownik CD-ROM-u używał swojej własnej funkcji ioctl(), aby obsłużyć funkcje specyficzne dla każdego napędu. Pliki nagłówkowe takie jak /usr/include/linux/sbpcd.h opisują je. Ponieważ wiele sterowników bazowało na innych sterownikach, interfejsy, jeśli nie są identyczne, to mają wiele wspólnego.

Ostatnio powstała inicjatywa ustandaryzowania interfejsu dla napędów CD-ROM kierowana przez Davida van Leeuwena ( david@tm.tno.nl). Polega ona na umieszczeniu ogólnego kodu w jednym miejscu i upewnieniu się, że wszystkie sterowniki zachowują sie tak samo Jest to udokumentowane w pliku /usr/src/linux/Documentation/cdrom/cdrom-standard.tex. Kilka sterowników to obsługuje. Spodziewam się, że w następnej głównej wersji jądra (3.0?) wszyskie sterowniki CD-ROM-ów dostosują się do tego API.

Moja książka, Linux Multimedia Guide, poświęca o wiele więcej miejsca tematowi programowania CD-ROM-ów, szczególnie jeśli chodzi o funkcje audio. Zobacz na koniec sekcji Referencje.

6.18 Dlaczego nie widzę długich nazw na CD-ROM-ach z Windows-ów?

Jeśli masz CD-ROM, który ma długie nazwy pod Windows, ale nie pod Linux-em, może on być zformatowany do Microsoft-owego systemu plików Joliet. Rozwiązanie znajdziesz w odpowiedzi na następne pytanie.

6.19 Czy obsługiwany jest Microsoft-owy system plików Joliet?

Microsoft stworzył rozszerzenie do formatu ISO CD-ROM o nazwie Joliet. W czasie pisania obsługa dla Joliet była w trakcie opracowywania; łaty były dostępne z adresu url url="http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html"> lub ftp://www-plateau.cs.berkeley.edu/pub/multimedia/linux/joliet/.


Następna strona Poprzednia strona Spis treści