Linux DVD HOWTO
http://www.linuxvideo.org/
v1.25, 17 październik 2000
Wersja polska: Grzegorz Ciepłucha
v1.0, 5 Listopad 2000
Oryginał tego dokumentu znajduje się pod adresem
http://www.linuxvideo.org/docs/Linux-DVD-HOWTO/
1.1 Goal
Celem tego dokumentu jest opis w jaki sposób krok po kroku odtwarzać filmy DVD pod Linuksem. Postaram się to opisać najprościej jak tylko potrafię, jeżeli coś będzie mylące lub niepoprawne, proszę poinformuj mnie o tym a naprawię to. Jeżeli masz jakieś pytania, możesz zapisać się na listę mailingową wysyłając e-mail na adres
[email protected].
1.2 Nowe Wersje
HowTo to jest dostępne w wielu formatach, włączając w to wersje html i tex. Najnowsze wersje możesz zawsze zgrać z
http://www.linuxvideo.org/docs/Linux-DVD-HOWTO/. Polecam ten adres ponieważ znajdziesz pod nim najnowsze wersje, a howto to jest często uktualizowane.
1.3 Prawa Autorskie i Znaki Towarowe
Instrukcja ta może być rozpowszechniana w całości lub części, bez żadnych opłat
pod warunkiem, że:
- Powyższa uwaga o prawach autorskich i o zezwoleniu musi być zachowana dla całego materiału lub części.
- Zostaną zachowane Prawa Autorskie
- Jakiekolwiek tłumaczenie lub praca na podstawie tego materiału musi być zaakceptowana na piśmie przed jej dystrybucją.
- Jeśli będziesz rozprowadzał tę pracę w częściach, to wymagane jest zawarcie informacji jak otrzymać całość oraz środki jakimi można otrzymać całość.
- Małe części mogą być publikowane jako ilustracje do recenzji lub cytatów w innych pracach bez umieszczania informacji o zezwoleniu jeżeli jest oficjalna zgoda na to.
Wyjątki od tych zasad mogą być zmienione do celów akademickich: Napisz i poproś o to autora. Ograniczenia te są po to by chronić nas jako autorów, a nie ograniczać was uczących się i kształcących. Jakikolwiek kod źródłowy (poza SGML w którym został napisany ten dokument) zawarty w tym dokumencie jest umieszczony na licencji GNU General Public License, dostępny anonimowo na FTP
the GNU archive.
1.4 Podziękowania
Podziękowania dla Nathan’a Rowlan
[email protected] za rozpoczęcie i opiekę nad tym dokumentem we wczesnych jego dniach. Został on teraz przejęty przez zespół LiViD.
Podziękowania dla autorów OMS i reszty developerów LiViD, którzy poświęcili projektowi dużo swojego czasu i pracy, jak również wszystkich tych którzy uczynili to HOWTO lepszym.
Duża część wyglądu tego HOWTO była wzięta z HOWTO-HOWTO, napisanego przez Mark’a F. Komarinski. Możesz je znaleźć pod
http://www.linuxdoc.org/.
1.5 Tłumaczenia
Tłumaczenie tego dokumentu możesz znaleźć pod
http://www.linuxvideo.org/docs/Linux-DVD-HOWTO/. Jeżeli chciałbyś przetłumaczyć to howto, proszę skontaktuj się z listą mailingową developerów LiViD.
To HOWTO przyjmuje, że masz:
- Jądro Linuksa w wersji 2.2.x lub nowsze. Zalecane jest jądro z ioctls DVD.
- XFree86 3.3.X lub 4.x
- Napęd DVD-ROM/RAM/RW obsługiwany przez Linuksa (większość jest)
- Wystarczającą wiedzę na temat basha i języka (org. english)
Po pierwsze, musisz zdobyć jądro z MTRR (więcej o tym w dalszej części)
i obsługujące DVD ioctl. MTRR było już w jądrze od wersji 2.2.11
(poprawcie mnie jeśli się mylę), prawdopodobnie będziesz musiał zaktualizować swoje jądro
aby mieć DVD ioctls. Są dwa sposoby, możesz zgrać wersję rozwojową jądra (v2.3.x) lub
zpatchować stabilną wersję (v2.2.x). Patche są pod
http://www.kernel.dk/,
a jądro możesz znaleźć na swoim ulubionym mirrorze
ftp://ftp.kernel.org/.
Następnie będziesz potrzebował narzędzia LiViD. To możesz zrobić na dwa sposoby:
- Pobierz narzędzia LiViD z CVS, będziesz mógł uaktualnić je jak tylko
zostaną zaktualizowane przez developerów. (zalecany sposób)
Poniższe komendy pobiorą narzędzia (jak chcesz możesz użyć parametru -d
zamiast ustawiać CVSROOT):
# mkdir ~/livid
# cd ~/livid
# export CVSROOT=:pserver:[email protected]:/cvs/livid
# cvs login
(Logging in to [email protected])
CVS password:
Nie ma hasła dla użytkownika anonymous, po prostu wciśnij enter.
# cvs -z3 co -P ac3dec mpeg2dec oms
Narzędzia powinny załadować się do odpowiednich katalogów.
4.1 Jądro
Najnowsze jądro co najmniej 2.2.16 lub 2.4 powinno już mieć
obsługę DVD ioctl, więc musisz już tylko upewnić się że masz
włączoną obsługę MTRR w konfiguracji jądra, skompilować je
i zainstalować tak jak zwykle to robisz.
Jeżeli chcesz zpatchować Twoje obecne jądro, zacznij od odwiedzenia
http://www.kernel.dk/
i zgrania odpowiedniego patcha do Twojego jądra.
Jeżeli nie wiesz jak zpatchować Twoje jądro powinieneś przeczytać
Kernel HOWTO na
http://howto.tucows.com/LDP/HOWTO/Kernel-HOWTO.html
4.2 Narzędzia LiViD
Aby zainstalować narzędzie LiViD, musisz upewnić się że posiadasz /usr/local/lib
gdzieś w /etc/ld.so.conf.
Odtwarzanie DVD wymaga tylko utworzenia OMS. OMS samo automatycznie utworzy kodeki ac3
i mpeg2. Aczkolwiek jeżeli chcesz, możesz użyć oddzielnych kodeków. Następujące komendy
powinny skompilować i zainstalować narzędzia LiViD w Twoim systemie. Jeżeli masz jakieś
problemy, zajrzyj do sekcji „Problemy”.
ac3dec: (opcjonalnie)
# cd ~/livid/ac3dec
# ./autogen.sh
# make
# make install
mpeg2dec: (opcjonalnie)
# cd ~/livid/mpeg2dec
# ./autogen.sh
# make
# make install
oms:
# cd ~/livid/oms
# ./autogen.sh
# ./configure
# make
# make install
Istnieją dodatkowe opcje których możesz użyć. Są one umieszczone jako
argumenty skryptu ./configure. OMS posiada opcję –enable-devel która
włącza kilka rozwojowych i eksperymentalnych funkcji w kodzie.
Standardowy parametr autoconf jak –prefix może być użyty jeżeli chcesz
mieć zainstalowane narzędzia w innym katalogu niż /usr/local. Na przykład:
aby zainstalować w podkatalogu katalogu źródłowego musisz wykonać:
# ./configure --prefix=`pwd`/inst
Uruchom ./configure –help żeby uzyskać kompletną listę opcji. Jeżeli
zainstalujesz X’y w różnych katalogach (na przykład masz zainstalowane
jednocześnie XFree86 3.3.x i 4.x) możesz potrzebować użyć opcji –x-includes
i –x-libraries.
Teraz potrzebne narzędzia LiViD powinny być już zainstalowane. Następna sekcja
nie jest wymagana, ale jeżeli używasz pluginu do potoków (pipes), będziesz potrzebował
specjalnych potoków fifo do przesyłania przez nie danych DVD. Możesz to zrobić
następującymi komendami (jeżeli już ich nie masz stworzonych):
# mkfifo /tmp/video
# mkfifo /tmp/audio
Inną metodą kontrolowania danych dostępną w wersji oms_devel jest użycie raw I/O, które jest dostępne w najnowszych jądrach. Jeżeli nie masz ich, dane będą odczytywane ze standardowego urządzenia. Używanie raw I/O jest zalecane, ale nie konieczne. Jeżeli one nie istnieją, stwórz dwa urządzenia jak poniżej:
# mknod /dev/rawctl c 162 0
# mknod /dev/raw1 c 162 1
Ostania rzecz do zrobienia. OMS wymaga aby /dev/dvd dowiązane było
do Twojego napędu DVD, jak na przykład /dev/hdb1 lub /dev/scd0. Jeżeli
jest to /dev/cdrom, powinieneś stworzyć dowiązanie pisząc:
# ln -s /dev/cdrom /dev/dvd
Robienie dowiązania do dowiązania nie jest dobrym pomysłem, ponieważ
dodaje to niepotrzebnie I/O. Zastąp /dev/cdrom rzeczywistym urządzeniem
do którego podłączony jest Twój napęd.
Po pierwsze potrzebujesz pliku konfiguracyjnego. Skopiuj plik /doc/config.sample z katalogu źródłowego oms do .oms/config w Twoim domowym katalogu. Zedytuj plik i ustaw w nim odpowiedni napęd, skórę (skin), urządzenie, etc wszystko czego będziesz używał.
Przygotuj się na dużą ilość tekstu i przeglądanie go. To nadal jest kod rozwojowy. Jeżeli widzisz dużo tekstu i żadnego okna z obrazem, prawdopodobnie zrobiłeś jakiś błąd w swoim pliku konfiguracyjnym. Sprawdź aby upewnić się, że używasz poprawnego pluginu i urządzenia.
Aby odtworzyć DVD, musisz uruchomić X’y w trybie 16-bitowego koloru.
Włóż płytę do napędu i napisz:
# oms
W starszym wersjach OMS dostępna jest metoda potokowa, która używa
stworzonej wcześniej fifo. Większość ludzi może pominąć to. Aby
użyć potoków napisz:
# ac3dec /tmp/audio& mpeg2dec /tmp/video& oms
ac3dex i mpeg2dec mogą wymagać „zabicia” (kill) z ręki gdy będziesz używać tej metody.
Jeżeli wszystko poszło dobrze, powinien pojawić się jakiś tekst pytający Cię
Czy chcesz sprawdzić nazwę dysku w DVDDB. Bezpiecznie jest odpowiedzieć tak.
Następnie oms panel powinien się pojawić. Kliknij na przycisk playlisty,
później na przycisk scan dvd i play.
6.1 Ustawienie MTRR’a
** Uwaga dla posiadaczy karty graficznej Matrox **
Jeżeli masz już wkompilowane matroxfb w jądro
to istnieje szansa, że masz już ustawione MTRR.
Prawdopodobnie możesz pominąć tą sekcję.
Ustawienie MTRR może zwiększyć całkiem nieźle prędkość obrazu
w niektórych przypadkach, dlatego dobrze jest to zrobić.
Na początek musisz upewnić się, że Twoje jądro obsługuje
MTRR. Możesz to sprawdzić pisząc:
# ls /proc/mtrr
Jeżeli dostaniesz komunikat, że nie ma czegoś takiego jak /proc/mtrr
będziesz musiał przekompilować jądro z włączoną obsługą MTRR
(opcja ta znajduje się pod „Processor type and features” w menuconfigu).
Teraz już wiesz, że MTRR działa, musisz jeszcze znać podstawowy adres
pamięci Twojej karty graficznej i ile ma pamięci. Najprościej możesz to
sprawdzić czytając komunikaty w czasie startu X’ów. Ponieważ komunikaty
często przewijają się szybko i tracisz je gdy przełączysz się na inną konsolę (tty)
musisz przekierować komunikaty X’ów do pliku. Będziesz mógł wtedy odczytać
wszystkie potrzebne dane. Możesz to zrobić wydając komendę:
# startx 2> xoutput
Linia zawierająca potrzebne informacje jest prawdopodobnie gdzieś
w po środku komunikatów, i powinna wyglądać podobnie jak:
(--) SVGA: PCI: NVidia Riva TNT2 rev 17, Memory @ 0xee000000, 0xe2000000
Teraz masz już zlokalizowaną kartę, zapisz sobie ostatni adres pamięci w tym
przypadku jest to 0xe2000000. W zależności od Twojego sprzętu możesz mieć
pokazanych wiele adresów pamięci, dlatego nie przejmuj się jeśli u Ciebie
wygląda to troszeczkę inaczej. Masz już zanotowane potrzebne informacje, możesz
już usunąć plik z komunikatami.
Następnie będziesz potrzebował stworzyć nowy MTRR. Rób po kolei,
wiesz ile pamięci ram ma Twoja karta w przeliczeniu na hex’y. Tutaj masz
kilka standardowych wielkości:
4MB -- 0x400000
8MB -- 0x800000
16MB -- 0x1000000
32MB -- 0x2000000
Żeby dodać MTRR, napisz:
# echo "base=0xe2000000 size=0x2000000 type=write-combining" >| /proc/mtrr
W miejsce adresu podstawowego „0xe2000000” i „0x2000000” wstaw odpowiednie wartości
dla Twojego systemu.
Teraz powinieneś mieć już ustawione MTRR, upewnij się, napisz:
# cat /proc/mtrr
Powinieneś otrzymać podobny komunikat do tego:
reg00: base=0x00000000 ( 0MB), size= 128MB: write-back, count=1
reg01: base=0xe2000000 (3616MB), size= 32MB: write-combining, count=1
Ponownie, liczby wpisów będą prawdopodobnie inne od tych, nie zwracaj uwagi
na to.
7.1 Błędy pojawiające się w czasie uruchomienia
To jest (mała) lista znanych błędów.
Illegal Instruction Error
Jeżeli używasz procesora innego niż Intelowski (szczególnie K6), i otrzymujesz
taki błąd w czasie próby uruchomienia mpeg2video, zedytuj
nist/configure.in, linia 129 i 130:
CFLAGS="$CFLAGS -DHAVE_MMX -DLINUX -march=i686 -fschedule-insns2 -malign-doub
CXXFLAGS="$CXXFLAGS -DHAVE_MMX -DLINUX -march=i686 -fschedule-insns2 -malign-
zamień „-march=i686” w obydwu przypadkach „-march=i586”, następnie przekompiluj
i przeinstaluj jeszcze raz.
7.2 Błędy w czasie kompilacji
To jest bieżąca lista wspólnych błędów występujących w czasie kompilacji,
które można naprawić.
`dvd_struct’ undeclared…
Często pojawiający się problem ludziom którzy próbują kompilować narzędzia a oms zagląda w złe miejsce nagłówków jądra. Domyślnie używane są /usr/include/[linux|asm], ale nagłówki te pochodzą od stabilnych jąder i dlatego kiedy kompilujesz normalny program, będą użyte stare nagłówki. OMS wymaga nagłówków z obsługą ioctl. Jeżeli jest to źle ustawione wiele rzeczy jest niezdeklarowanych i kompilacja nie udaje się. Najlepszym sposobem naprawienia tego jest użycie opcji przy konfiguracji –with-kernel-headers=(ścieżka do nagłówków). Drugi sposób to dostosować nagłówki znajdujące się w domyślnym położeniu.
Te komendy powinny to zrobić:
# mkdir /usr/include/old
# mv /usr/include/linux /usr/include/old/linux
# mv /usr/include/asm /usr/include/old/asm
# mv /usr/include/scsi /usr/include/old/scsi
# ln -s /usr/src/linux/include/linux /usr/include/linux
# ln -s /usr/src/linux/include/scsi /usr/include/scsi
# ln -s /usr/src/linux/include/asm /usr/include/asm
Can’t determine absolute dir of ’../../../../src/plugin/codec/mpeg2dec/.libs’
Innym często pojawiającym się błędem jest błąd związany z katalogiem
oms/src/plugin/codec/mpeg2dec/.libs. Z jakiegoś powodu katalog taki
nie istnieje, a potrzebny jest do kompilacji. Aby to naprawić, po
prostu stwórz taki katalog:
# mkdir src/plugin/codec/mpeg2dec/.libs
Can’t find libXv.so or libXxf86dga.so
Xfree86 4.x nie tworzy współdzielonych bibliotek dla Xv i Xxf86dgs. Mimo, że
ustawienia OMS wymagają ich. Stwórz je tak jak poniżej w Twoim ulubionym
katalogu lib:
# ld --whole-archive -shared -o libXv.so libXv.a
# ld --whole-archive -shared -o libXxf86dga.so libXxf86dga.a
Failure via segfault for no apparent reason
Czasami posiadasz stare biblioteki gdzieś obok, które są użyte przez pomyłkę.
To będzie powodować dziwne zachowanie takie jak padanie (crashing). Pozbądź się
starych biblotek z /usr/local/lib lub przenieś je w inne miejsce i wszystko
powinno działać.
7.3 Niedziałający stuff
Rozwiązanie, które nie działają obecnie tak jak zamierzano:
- Przycisk wyszukujący rozdziały może nie działać.
- Przyciski play/pause/stop mogą przestać działać.
- Dźwięk/Obraz może przeskakiwać lub dźwięk może się „wzbudzać”. Dzieje się to przez to, że synchronizacja i framedropping nie zostały jeszcze zaimplementowane.
7.4 Inne błędy
Jeżeli Twój problem nie jest wylistowany tutaj, wynika z tego że obecny kod CVS
ma błąd lub brakuje mu jakiejś opcji. Możesz mieć nadzieję, że będzie
to naprawione przy następnym uaktualnieniu CVS, które jest dosyć często robione.
Możesz zapisać się na listę mailingową i opisać błąd albo poprosić o nową opcje.
Żeby się zapisać wyślij pusty email na
[email protected].
- opcje pliku Makefile (HAVE_MMX, HAVE_3DNOW, etc)
- poprawne wykrywanie architektury (podczas kompilacji i uruchamiania)
- dodanie prostego stuffu MTRR (framebuffer)
- dodanie potrzebnych opcji do wybierania regionów, który musi być ustawiony nawiększości napędów: www.linuxtv.org/dvd