Air Show 2009 Radom
[nggallery id=6]
Home Page
Oryginał tego dokumentu znajduje się pod adresem
http://www.linuxvideo.org/docs/Linux-DVD-HOWTO/
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].
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.
Instrukcja ta może być rozpowszechniana w całości lub części, bez żadnych opłat
pod warunkiem, że:
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.
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/.
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:
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:
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.
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
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.
** 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.
To jest (mała) lista znanych błędów.
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.
To jest bieżąca lista wspólnych błędów występujących w czasie kompilacji,
które można naprawić.
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
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
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
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ć.
Rozwiązanie, które nie działają obecnie tak jak zamierzano:
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].