view DOCS/xml/pl/cd-dvd.xml @ 11447:5f94bdba470f

sync
author wight
date Wed, 12 Nov 2003 13:02:27 +0000
parents 92ea2b3d40ac
children 9c3dbd952c2f
line wrap: on
line source

<?xml version="1.0" encoding="utf-8"?>
<!-- synced with 1.8 -->
<chapter id="cd-dvd">
<title>Używanie CD/DVD</title>

<sect1 id="drives">
<title>Napędy CD/DVD</title>
<para>
Fragment dokumentacji Linuksa:
</para>

<para>
Nowoczesne napędy CD-ROM osiągają bardzo duże prędkości. Niektóre z nich są dodatkowo 
zdolne do pracy przy zredukowanych prędkościach. Oto kilka powodów, dla których 
powinniśmy zastanowić się czy nie należy zredukować prędkości naszego napędu:
</para>

<itemizedlist>
<listitem><para>
Istnieją doniesienia o błędach odczytu przy dużych prędkościach, szczególnie podczas 
używania uszkodzonych bądź wadliwie wytłoczonych/nagranych płyt CD. Redukcja prędkości 
odczytu może uchronić nas przed utratą danych w takich przypadkach.
</para></listitem>

<listitem><para>
Wiele napędów CD jest dokuczliwie głośnych. Redukcja prędkości może zmniejszyć natężenie 
hałasu.
</para></listitem>
</itemizedlist>

<para>
Redukcję prędkości napędu CD z interfejsem IDE możemy uzystać korzystając z 
<command>hdparm</command> bądź programu <command>setcd</command>. Działają one w 
następujący sposób:

<screen>hdparm -E <replaceable>[prędkość]</replaceable> <replaceable>[urządzenie 
cdrom]</replaceable></screen>
<screen>setcd -x <replaceable>[prędkość]</replaceable> <replaceable>[urządzenie 
cdrom]</replaceable></screen>
</para>

<para>
Jeżeli masz uprawnienia roota, to pomóc może także następująca komenda: 
<screen>echo file_readahead:2000000 &gt; /proc/ide/<replaceable>[urządzenie 
cdrom]</replaceable>/settings</screen>
</para>


<para>
Ustawiamy w ten sposób wielkość bufora odczytu na 2MB, co pomaga przy odczycie 
porysowanych płyt.
Jeżeli ustawimy zbyt dużą wielkość tego bufora, napęd będzie stale rozkręcał się i 
zwalniał, co spowoduje bardzo znaczny spadek wydajności. Zaleca się również dostrojenie 
napędu CD-ROM przy użyciu <command>hdparm</command>:
<screen>hdparm -d1 -a8 -u1 <replaceable>[urządzenie cdrom]</replaceable></screen>
</para>

<para>
Włączamy w ten sposób dostęp DMA do dysku, czytanie z wyprzedzeniem i odmaskowanie IRQ 
(IRQ unmasking) (więcej przeczytasz na stronach man do <command>hdparm</command>)
</para>

<para>
Proszę sprawdzić &quot;<filename>/proc/ide/<replaceable>urządzenie 
cdrom</replaceable>/settings&quot;</filename>
dla dostrojenia swojego napędu CD-ROM.
</para>

<para>
Dla napędów SCSI nie istnieje jednolity sposób ustawiawiania tych parametrów (jeżeli 
znasz jakiś to napisz nam o nim). Istnieje narzędzie które działa z 
<ulink url="http://das.ist.org/~georg/">napędami SCSI Plextor</ulink>.
</para>

<para>FreeBSD:</para>
<para>Prędkość: <command>cdcontrol [-f <replaceable>device</replaceable>] speed 
<replaceable>speed</replaceable></command></para>
<para>DMA: <command>sysctl hw.ata.atapi_dma=1</command></para>
</sect1>

<sect1 id="dvd">
<title>Odtwarzanie DVD</title>
<para>
Aby poznać pełną listę dostępnych opcji, proszę przeczytać odpowiednie strony man. 
Składnia dla standardowego DVD (Digital Versatile Disc) jest następująca:
<screen>mplayer dvd://<replaceable>&lt;ścieżka&gt;</replaceable> [-dvd-device <replaceable>&lt;urządzenie&gt;</replaceable>]</screen>
</para>

<para>
Przykład:
<screen>mplayer dvd://1 -dvd-device /dev/hdc</screen>
</para>

<para>
Domyślnym urządzeniem (device) DVD jest <filename>/dev/dvd</filename>. Jeżeli Twoje 
ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie urządzenie (device) 
w linii polecenia korzystając z opcji <option>-dvd-device</option>.
</para>

<formalpara>
<title>Obsługa DVD - nowy sposób (mpdvdkit2)</title>
<para>
<application>MPlayer</application> używa <systemitem>libdvdread</systemitem> oraz
<systemitem>libdvdcss</systemitem> do dekodowania i odtwarzania DVD. Te dwie 
biblioteki są zawarte w podkatalogu <filename class="directory">libmpdvdkit2/</filename> 
w głównym drzewie katalogów MPlayera, nie trzeba instalować ich osobno. 
Wybraliśmy tę opcję ponieważ musieliśmy poprawić błąd <systemitem>libdvdread</systemitem> 
i zastosować łatkę (patch), która dodaje obsługę <emphasis role="bold">buforowania 
złamanych kluczy CSS</emphasis> do <systemitem>libdvdcss</systemitem>. Skutkuje to dużym 
wzrostem szybkości ponieważ klucze nie muszą być łamane za każdym razem przed 
odtwarzaniem.
</para>
</formalpara>

<note><para>
Jeśli występują problemy z dekodowaniem DVD, spróbuj wyłączyć supermount albo
inne tego typu usługi.
</para></note>

<para>
<application>MPlayer</application> potrafi także używać bibliotek systemowych 
<systemitem>libdvdread</systemitem>
oraz <systemitem>libdvdcss</systemitem>, ale to rozwiązanie jest 
<emphasis role="bold">nie</emphasis> zalecane, gdyż może powodować błędy, 
niekompatybilności bibliotek oraz zmniejszenie prędkości.
</para>

<formalpara>
<title>Obsługa DVD - stary sposób - OPCJONALNE</title>
<para>
Użyteczne, jeżeli chcesz odtwarzać zakodowane pliki VOB z <emphasis role="bold">twardego 
dysku</emphasis>.
W tym celu skompiluj i zainstaluj <emphasis role="bold">libcss</emphasis> 0.0.1 (nie 
nowsze) (Jeżeli MPlayer nie radzi sobie, użyj opcji 
<option>-csslib  /ścieżka/do/libcss.so</option>). Aby użyć tej metody musisz mieć uprawnienia roota, 
binarka MPlayer musi miec suid lub pozwól MPlayerowi na uruchamianie owijacza (wrapper) 
fibmap_mplayer z suid-root.
</para>
</formalpara>

<formalpara>
<title>Struktura dysku DVD</title>
<para>
Dyski DVD mają po 2048 bajtów na sektor z ECC/CRC. Zwykle posiadają system plików UDF 
na pojedynczej ścieżce zawierającej różnorakie pliki (małe pliki .IFO i .BUK oraz duże 
(1GB) pliki .VOB).
Są one rzeczywistymi plikami i mogą być kopiowane/odtwarzane z podmontowanego systemu 
plików niezakodowanego DVD.
</para>
</formalpara>

<para>
Pliki .IFO zawierają informacje nawigacyjne filmu (rozdział/tytuł/mapa zaczepów/tablica 
języków, itp) i są konieczne do odczytu i interpretacji zawartości pliku .VOB (filmu). 
Pliki .BUK są kopiami zapasowymi plików .IFO. Używają 
<emphasis role="bold">sektorów</emphasis> wszędzie, więc aby zaimplementować nawigację 
na DVD lub rozszyfrować zawartość, należy używać adresowania sektorów dysku w trybie raw.
</para>

<para>
Z tego powodu obsługa DVD w starym stylu z użyciem 
<systemitem>libcss</systemitem> wymaga podmontowanego systemu 
plików DVD oraz dostępu do urządzenia w trybie raw 
bazującym na sektorach. Niestety wymagane jest (pod Linuksem) posiadanie uprawnień roota 
aby móc korzystać z sektorowego adresowania pliku. Wybór jest następujący:

<itemizedlist>
<listitem><para>
Posiadać uprawnienia roota lub używać programu wykonywalnego 
<application>MPlayera</application> posiadającego prawa suid-root.
</para></listitem>

<listitem><para>
Pozwolić <application>MPlayerowi</application> na uruchamianie owijacza (wrapper) 
fibmap_mplayer w trybie suid-root w celu uzyskania dostępu do DVD (używane przy 
odtwarzaniu DVD starą metodą poprzez <systemitem>libcss</systemitem>).
</para></listitem>

<listitem><para>
Wcale nie używać sterownika systemu plików zawartego w jądrze lecz korzystać jedynie z 
narzędzi działających w przestrzeni użytkownika.
Zajmują się tym biblioteki <systemitem>libdvdread</systemitem> 0.9.x 
i <systemitem>libmpdvdkit</systemitem> (obsługa DVD nowym sposobem). Sterownik systemu 
plików UDF zawarty w jądrze nie jest wymagany 
ponieważ wspomniane biblioteki zawierają własny, wbudowany sterownik systemu plików UDF. 
DVD nie musi być podmontowany, bowiem używany jest jedynie dostęp w trybie raw.
</para></listitem>
</itemizedlist>
</para>

<para>
Czasami <filename>/dev/dvd</filename> nie może być czytany przez użytkowników, zatem 
autorzy <systemitem>libdvdread</systemitem> zaimplementowali emulację warstwy, która 
przenosi adresowanie sektorowe na nazwy plików i offsety, aby już u źródeł 
podmontowanego systemu plików emulować dostęp w trybie raw, na równi z dostępem do dysku twardego.
</para>

<para>
<systemitem>libdvdread</systemitem> równie dobrze akceptuje miejsce podmontowania 
(mountpoint) jak i nazwę urządzenia przy dostępie w trybie 
raw i sprawdza <filename>/proc/mounts</filename> w celu odnalezienia odpowiedniej nazwy 
urządzenia (device). Zostało to napisane z myślą o systemie Solaris, gdzie nazwy 
urządzeń są przydzielane automatycznie.
</para>

<para>
Domyślnym urządzeniem (device) DVD jest <filename>/dev/dvd</filename>. Jeżeli Twoje 
ustawienia są inne, stwórz odpowiedni symlink lub ustaw odpowiednie urządzenie w linii 
polecenia korzystając z opcji <option>-dvd-device</option>.
</para>

<formalpara>
<title>Autoryzacja DVD</title>
<para>
Metoda autoryzacji i rozszyfrowywania używana gdy korzystamy z DVD przy użyciu nowego 
sposobu polega na korzystaniu ze zmodyfikowanej biblioteki 
<systemitem>libdvdcss</systemitem> (patrz wyżej). Ta metoda może być określona poprzez 
zmienna środowiskową <envar>DVDCSS_METHOD</envar>, która może być ustawiona na "key", 
"disk" albo "title".
</para>
</formalpara>

<para>
Jeżeli żadna wartość nie jest ustawiona, próbowane są następujące metody (domyślnie: 
"key", "title request"):
</para>

<orderedlist>
<listitem><para>
<emphasis role="bold">bus key</emphasis>: Ten klucz jest ustalany podczas autoryzacji 
(długa mieszanina ioctl'i i rozmaite wymiany kluczy, bajery kryptograficzne) oraz jest 
używany do szyfrowania tytułu i kluczy dyskowych przed wysłaniem ich nieszyfrowaną 
magistralą (by zapobiec podsłuchiwaniu). Bus key jest wymagany do pobrania i wstępnego 
rozszyfrowania zaszyfrowanego klucza dyskowego (disk key).
</para></listitem>

<listitem><para>
<emphasis role="bold">cached key</emphasis>: <application>MPlayer</application> 
wyszukuje już złamane klucze tytułów, które są przechowywane w katalogu 
<filename class="directory">~/.mplayer/DVDKeys</filename> (szybkie ;) ).
</para></listitem>

<listitem><para>
<emphasis role="bold">key</emphasis>: Jeżeli żaden zbuforowany klucz nie jest dostępny, 
<application>MPlayer</application> próbuje rozszyfrować klucz dyskowy korzystając z 
garści kluczy zaszytych w odtwarzaczu.
</para></listitem>

<listitem><para>
<emphasis role="bold">disk</emphasis>: Jeżeli metoda "key" zawodzi (np. brak kluczy 
zaszytych w odtwarzaczu), <application>MPlayer</application> złamie klucz dyskowy 
używając algorytmu ataku brutalnego. Proces ten jest bardzo procesorochłonny i wymaga 64 
MB pamięci (16777216 (16*2^20) 32-bitowych pól tabeli hash) do przechowywania 
tymczasowych danych. Ta metoda powinna zadziałać zawsze (niestety jest wolna).
</para></listitem>

<listitem><para>
<emphasis role="bold">title request</emphasis>: Mając klucz dyskowy 
<application>MPlayer</application> 
pobiera zaszyfrowane klucze tytułowe (title key), które są zawarte w 
<emphasis>ukrytych sektorach (hidden sectors)</emphasis> używając 
<systemitem>ioctl()</systemitem>. Ochrona 
regionalna w napędach RPC-2 jest realizowana w tym kroku i może się nie udać na tych 
napędach. Jeśli jednak się uda, klucze tytułowe zostają rozszyfrowane przy użyciu 
magistrali i klucza dyskowego.
</para></listitem>

<listitem><para>
<emphasis role="bold">title</emphasis>: Ta metoda jest używana jeżeli zapytanie o tytuł 
zakończyło się niepowodzeniem i nie można polegać na żadnej wymianie kluczy z napędem 
DVD. Używa ona ataku kryptograficznego 
w celu odgadnięcia klucza tytułowego (title key) wprost (poprzez szukanie powtarzającego 
się ciągu znaków (wzoru) w rozszyfrowanej zawartości pliku VOB oraz poprzez zgadywanie, 
że czysty tekst odpowiadający 
pierwszym zaszyfrowanym bajtom jest kontynuacją wzoru). Metoda ta jest także znana jako 
&quot;znany czysto-tekstowy atak (known plaintext attack)&quot; bądź 
&quot;DeCSSPlus&quot;. Rzadko zdarza się, ale się 
zdarza, że metoda ta może zawieść ponieważ jest niewystarczająco dużo zaszyfrowanych 
danych na dysku aby spełnić założenia statystycznego ataku lub ponieważ klucz zmienia 
się w trakcie tytułu. Jest to jedyna 
metoda, aby zdeszyfrować DVD przechowywane na twardym dysku lub DVD ze złym regionem na 
napędzie RPC2 (powolne).
</para></listitem>
</orderedlist>

<para>
Napędy DVD RPC-1 zabezpieczają ustawienia regionu jedynie poprzez oprogramowanie. Napędy 
RPC-2 mają sprzętowe zabezpieczenie, które pozwala na co najwyżej 5 zmian. Jeżeli 
posiadamy napęd DVD RPC-2 wymagana/zalecana jest aktualizacja firmware'u do RPC-1 . Nowe 
wersje firmware'ów można znaleźć na tej <ulink url="http://www.firmware-flash.com">stronie z 
firmware'ami</ulink>. Jeżeli nie ma tam nowej wersji 
firmware'u dla naszego urządzenia, użyj <ulink url="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset tool 
(narzędzia do zmiany regionów)</ulink> aby ustawić kod regionu na swoim napędzie DVD (pod Linuksem).
<emphasis role="bold">Ostrzeżenie</emphasis>: Możesz ustawić region tylko 5 razy.
</para>
</sect1>

<sect1 id="vcd">
<title>Odtwarzanie VCD</title>
<para>
Pełna lista dostępnych opcji znajduje się na stronie man. 
Składnia dla standardowego Video CD (VCD) jest następująca: 
<screen>mplayer vcd://<replaceable>&lt;ścieżka&gt;</replaceable> 
[-cdrom-device <replaceable>&lt;urządzenie&gt;</replaceable>]</screen>
Przykład:
<screen>mplayer vcd://2 -cdrom-device /dev/hdc</screen>
Domyślnym urządzeniem VCD jest <filename>/dev/cdrom</filename>. Jeśli 
Twoje ustawienia są inne, utwórz dowiązanie symboliczne 
lub podaj prawidłowe urządzenie w linii poleceń za pomocą opcji 
<option>-cdrom-device</option>
</para>

<note><para>
Przynajmniej napędy CD-ROM SCSI firmy Plextor i niektóre modele Toshiby 
mają beznadziejną wydajność przy odczycie VCD. Jest to spowodowane 
niekompletną
implementacją <systemitem>ioctl</systemitem>'a CDROMREADRAW dla tych urządzeń. 
Jeśli masz jakieś pojęcie o programowaniu SCSI, 
<ulink url="../../tech/patches.txt">pomóż nam</ulink> zaimplementować 
ogólną obsługę SCSI dla VCD.
</para></note>

<para>
W międzyczasie możesz wyciągać dane z VCD za pomocą
<ulink 
url="http://140.132.1.204/OS/Linux/packages/X/viewers/readvcd/">readvcd</ulink>
i odtwarzać plik wynikowy za pomocą <application>MPlayera</application>
</para>

<formalpara>
<title>Struktura VCD</title>
<para>Płyty VCD składają się z jednej lub więcej ścieżek:</para>
</formalpara>

<itemizedlist>
<listitem><para>
Pierwsza ścieżka jest małą ścieżką o gęstości 2048 bajtów/sektor z danymi w 
systemie plików iso9660, zwykle zawierająca windowsowy odtwarzacz VCD i być 
może inne informacje (obrazy, tekst, itp.).
</para></listitem>

<listitem><para>
Druga i pozostałe ścieżki o gęstości 2324 bajtów/sektor zawierają po jednym 
pakiecie czystego strumienia MPEG PS na sektor zamiast systemu plików. 
Podobnie, jak w przypadku ścieżek audio CD, ścieżki te <emphasis role="bold">nie mogą 
być montowane</emphasis> (Czy kiedykolwiek montowałeś płytę audio CD by 
ją odtworzyć?). Biorąc pod uwagę, że filmy znajdują się na tej ścieżce, 
powinieneś spróbować na początek opcji <option>vcd://2</option>. 
</para></listitem>

<listitem><para>
Istnieją również płyty VCD bez pierwszej ścieżki (pojedyncza ścieżka i 
brak systemu plików w ogóle). Je również da się odtwarzać, ale nie da 
się ich montować.
</para></listitem>
</itemizedlist>

<formalpara>
<title>O plikach .DAT</title>
<para>
Plik o rozmiarze ok. 600 MB widoczny na pierwszej ścieżce zamontowanego VCD 
nie jest prawdziwym plikiem ! Jest on tzw. bramką ISO, utworzoną by 
Windows mógł obsługiwać takie ścieżki (Windows w ogóle nie zezwala aplikacjom 
na dostęp do urządzeń w trybie raw). Pod Linuksem nie 
możesz kopiować ani odtwarzać 
tych plików (zawierają "śmieci"). Pod Windows jest to możliwe, gdyż jego 
sterownik
iso9660 symuluje odczyt ścieżek w trybie raw za pomocą tego pliku. By móc odtwarzać 
pliki .DAT, musisz mieć sterownik do jądra, który dostarczany jest z linuksową 
wersją PowerDVD. Posiada on zmodyfikowany sterownik systemu plików iso9660 
(<filename>vcdfs/isofs-2.4.X.o</filename>), który jest w 
stanie symulować odczyt ścieżek w trybie raw za pomocą pliku .DAT. Jeśli podmontujesz 
płytę używając ich sterownika, możesz kopiować, a nawet odtwarzać pliki .DAT za pomocą 
<application>MPlayera</application>. Ale nie będzie to 
działało za pomocą standardowego sterownika iso9660 dostarczonego z jądrem Linuksa !
Zamiast tego użyj opcji <option>vcd://</option>. 
Alternatywą dla kopiowania VCD jest nowy sterownik: 
<ulink url="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</ulink> (nie 
jest częścią oficjalnego jądra), który wyświetla sesje CD jako pliki obrazów, oraz 
<ulink url="http://cdrdao.sourceforge.net/">cdrdao</ulink>, program do 
zgrywania płyt CD bit po bicie.
</para>
</formalpara>
</sect1>
</chapter>