Dźwięk i muzyka w Linuksie
www.linux-muzyka.ixion.pl

Instalacja łat niskich opóźnień (jądra 2.6.x)



Artykuł opisuje jedną z metod samodzielnej instalacji łat niskich opóźnień w systemach korzystających z jądra 2.6.x. Ręczna kompilacja powinna być jednak rozwiązaniem ostatecznym – w większości przypadków można w zamian zainstalować gotowy kernel wchodzący w skład jednej z multimedialnych dystrybucji Linuksa.



Instalowanie łat niskich opóźnień na jądrach 2.6.x nie zawsze jest konieczne. Kernele w wersji 2.6.10 oraz nowsze oferują bardzo dobrą wydajność i pozwalają na uzyskanie niskiej latencji bez żadnych dodatkowych czynności.

Jeśli jednak podczas pracy z serwerem JACK pojawiają się błędy bufora, to z reguły winę za ten stan rzeczy ponosi właśnie latencja. W takiej sytuacji najlepiej jest sięgnąć po gotowe, prekompilowane jądra z obsługą niskich opóźnień. Wchodzą one w skład niemal wszystkich multimedialnych dystrybucji. Użytkownicy DeMuDi, Planet CCRMA, SuSE razem z JackLab oraz zbliżonych systemów nie powinni zatem dokonywać żadnych zmian w standardowym kernelu.

Osoby preferujące korzystanie z własnoręcznie przygotowanego jądra Linuksa mogą w stosunkowo prosty sposób przystosować je dla potrzeb wydajnej edycji dźwięku. Konieczne okaże się pobranie i nałożenie na kernel dwóch łat – realtime-preempt oraz rt-lsm.patch. Jeżeli skorzystamy z domyślnych ustawień, to wystarczy jedynie skompilowanie załatanego jądra. Wszelkie modyfikacje plików konfiguracyjnych nie będą potrzebne.

Pobieranie potrzebnych plików

Co nam będzie potrzebne? Przede wszystkim najnowsze źródła jądra Linuksa. Można je pobrać ze stron www.kernel.org. Na początku poprzestańmy jednak na sprawdzeniu numeru wersji nowego jądra i zlokalizowaniu pliku. Jego pobranie zostawmy na później.

W dalszej kolejności zajrzyjmy na witrynę zawierającą łatę realtime-preempt. Znajdziemy ją pod adresem http://people.redhat.com/mingo/realtime-preempt/. Starannie sprawdźmy wersję łaty. Musi ona dokładnie odpowiadać numerowi zlokalizowanego przez nas wcześniej jądra.

Do kompletu brakuje nam jeszcze tylko łatki rt-lsm.patch. Nie jest ona bezwzględnie potrzebna, jednak dzięki niej możemy uruchamiać niektóre programy w trybie czasu rzeczywistego z konta zwykłego użytkownika. Jedną z takich aplikacji jest sekwencer MusE – po włączeniu w QJackCtl trybu Realtime zadziała on wyłącznie z uprawnieniami roota. Wyjściem z problemu jest zastosowanie właśnie rt-lsm.patch.

Potrzebną łatę znajdziemy na stronach www.kernel.org. Przejdźmy do podkatalogu odpowiadającego wersji ściągniętego przez nas kernela, a następnie do katalogu broken-out. Tutaj powinien znajdować się plik rt-lsm.patch. Jeśli go zabraknie, to poszukajmy w folderach ze starszymi modułami. Następnie powróćmy na witrynę zawierającą łaty realtime-preempt. Ściągnijmy plik w odpowiedniej wersji.

Dopiero teraz powinniśmy ściągnąć źródła kernela. Mają one kilkadziesiąt MB – stąd też najlepiej pobrać je na końcu, gdy już posiadamy obie łaty w odpowiedniej wersji. W przeciwnym wypadku możemy zostać zmuszeni do ponownego ściągania źródeł – jeśli okaże się, że brakuje którejś z łatek.

Łatanie jądra

W tym momencie powinniśmy już posiadać wszystkie potrzebne pliki. Źródła jądra kopiujemy do katalogu /usr/src i rozpakowujemy je. Łaty mogą znajdować się w dowolnym miejscu. Ja jednak założę, że znajdują się one, razem z kernelem, w lokalizacji /usr/src. Poprawki umieszczone w łatkach nakładamy następującymi poleceniami:

cd /usr/src
patch -p0 < patch-2.6.14-rt13
patch -p1 < rt-lsm.patch

Nie zapomnijmy podstawić właściwego numeru wersji jądra. Powinniśmy otrzymać podobne komunikaty:

patching file linux/Documentation/DocBook/Makefile
patching file linux/Documentation/DocBook/genericirq.tmpl
patching file linux/Documentation/DocBook/kernel-api.tmpl
patching file linux/Documentation/RCU/proc.txt
patching file linux/Documentation/RCU/torture.txt
patching file linux/Documentation/kernel-parameters.txt
patching file linux/Documentation/ktimers.txt
patching file linux/Makefile
patching file linux/arch/alpha/kernel/time.c

Będzie ich o wiele więcej, jednak wszystkie one powinny informować o łataniu kolejnych plików. Jeśli skrypt zatrzyma się i zada nam jakiekolwiek pytania, to traktujmy to jako komunikaty błędów. W wypadku, gdy dotyczą one tylko próby kasowania nieistniejących plików, nie obawiajmy się żadnych konsekwencji. Inne komunikaty oznaczają z reguły, że próba kompilacji jądra nie powiedzie się.

Kompilacja kernela

Teraz możemy przystąpić już do kompilacji kernela. Przebiega ona w sposób standardowy. Jeżeli dotychczas nie budowaliśmy własnego jądra Linuksa, to poszukajmy na ten temat informacji w Internecie.

Konfigurując jądro zwróćmy uwagę na dwa nowe parametry, które pojawią się w menu. Najpierw zajrzyjmy do sekcji Processor type and features. Upewnijmy się, że zaznaczono tam punkt Complete Preemption (Real-Time).

Processor type and features.

Poprawna konfiguracja podmenu Processor type and features. Zobacz powiększenie.

Teraz przenieśmy się do podmenu Security options. Tutaj zaznaczmy pozycję Realtime Capabilities. Powinna być ona kompilowana jako moduł.

To wszystko. Teraz możemy już skompilować i zainstalować jądro. Nie musimy wykonywać już żadnych dodatkowych czynności, poza załadowaniem modułu znajdującego się w łacie rt-lsm.patch. Poleceniem id sprawdźmy identyfikator użytkownika, z konta którego zamierzamy uruchamiać programy muzyczne. Za strony systemu otrzymamy następującą odpowiedź:

uid=501(pwlw) gid=500(pwlw) grupy=500(pwlw)

Teraz wystarczy załadować moduł:

modprobe real-time gid=500

I gotowe. Możemy korzystać z niskich latencji.

Security options.

Poprawna konfiguracja podmenu Security options. Zobacz powiększenie.

Osoby bardziej zainteresowane podrasowywaniem Linuksa mogą dodatkowo przeanalizować pozostałe opcje pojawiające się w sekcji Processor type and features. Ciekawe efekty może przynieść wykorzystanie ustawień Voluntary Kernel Preemption (Desktop) oraz Preemptible Kernel (Low-Latency Desktop). Ich opis znajduje się w dokumentacji załączanej razem z łatą realtime-preempt.



21.11.2005

Przeczytaj więcej na tej witrynie

Komentarze
  • 9-01-2008  —  arctgx

    Wraz z nowymi jądrami artykuł coraz bardziej traci na aktualności.

    Łaty RT dla jąder w wersjach mniej więcej między 2.6.19 a 2.6.22 (sprawdzić) zamiast modułu realtime dostarczają realcap, któremu również dajemy odpowiedni "gid" w parametrze ładowania. Łata RT do jednej z podwersji 2.6.23 nie dostarcza już modułu. Wtedy dla udostępnienia RT zwykłemu użytkownikowi trzeba kombinować inaczej np. za pomocą pam_limits. Podpowiedź dla Debiana jest tu:
    http://www.debian-administration.org/users/mzilikazi/weblog/1
    a do tej strony dotarłem stąd: http://esaracco.free.fr/documentations/linuxaudio/linuxaudio/obtaining-rea-
    ltime-privileges.html

    Strona z łatami RT linkuje teraz do
    http://www.kernel.org/pub/linux/kernel/projects/rt/

    a druga łata (realtime-lsm) też jest od którejś wersji jądra (w okolicach 2.6.18) niepotrzebna.

    Nie znalazłem nigdzie dziennika zmian łaty RT, stąd tak niedokładne informacje. W każdym razie zmiany dawały o sobie znać choćby zwracaniem błędu przez JACKa :)


+ Dodaj własny komentarz

Twórca witryny nie ponosi odpowiedzialności za treść zamieszczonych komentarzy.


Inne strony w Internecie




SZUKAJ


SPONSOR


SEKCJE

Strona główna

• Programy

• Sprzęt i sterowniki

• Artykuły

• Blog

• Forum

• Linki

• Mapa serwisu

• Kontakt

• Przyjaciele