Konfiguracja Xserver'a na debianie (Xorg)

Spis treści

Dzięki takiemu wynalazkowi jak Xserver (Xorg) mamy możliwość odpalania aplikacji graficznych. Bez niego wszystko musielibyśmy robić w czarnej konsoli, przez co funkcjonalność naszej maszyny w dość znacznym stopniu ucierpiałaby. Oczywiście tryb graficzny ma też swoje wady. Niemniej jednak, Xserver leży póki co u podstaw każdego środowiska graficznego i jeśli chcemy mieć możliwość odpalania, np. Firefox'a, czy oglądania filmów w VLC, to nie ma innego wyjścia jak skonfigurować sobie Xserver. W tym wpisie się zajmiemy tym zagadnieniem, przy czym, chcę uprzedzić, że nie będziemy korzystać z żadnych automatów, które można znaleźć w tych wszystkich zaawansowanych środowiskach graficznych. A to z tego względu, że ustawienia tych środowisk zwykle nadpisują ustawienia samego Xserver'a.

Instalacja Xserver'a

Xserver jest dość złożoną aplikacją i w jej skład wchodzi szereg pakietów. Generalnie rzecz biorąc, możemy ograniczyć się jedynie do zainstalowania metapakietu xorg , który pociągnie wszystkie pozostałe paczki w zależnościach. Niemniej jednak, ogromna cześć z tych pakietów jest nam zwyczajnie nie potrzebna. Mamy tam, np. sterowniki do szeregu kart graficznych. Jeśli mamy jedynie kartę Intel'a, to logiczne jest, że nie potrzebujemy instalować dodatkowych sterowników do kart Nvidia czy AMD. Ja zwykle ograniczam się do zainstalowania tych poniższych pakietów (pełna instalacja):

# aptitude install xorg xserver-xorg xbase-clients xfonts-base xfonts-cyrillic \
mesa-utils driconf \
xinput arandr xsel xbacklight scrot numlockx evtest \
fontconfig ttf-kochi-mincho ttf-mscorefonts-installer fonts-font-awesome

Po zainstalowaniu tych powyższych pakietów, będziemy mieć dostęp do prymitywnego środowiska graficznego. By je uruchomić, trzeba się zalogować w konsoli TTY i wpisać startx .

Konfiguracja Xserver'a

Xserver można konfigurować przez plik /etc/X11/xorg.conf , bądź też przez szereg plików zlokalizowanych w katalogu /etc/X11/xorg.conf.d/ . Standardowa instalacja Xorg'a nie dostarcza nam żadnych z w/w plików i zwykle nie ma potrzeby ich stosowania. Xserver automatycznie jest w stanie poprawnie rozpoznać i skonfigurować większość sprzętu i zwykle nie będziemy musieli nic zmieniać. Natomiast w przypadku, gdy monitor, grafika, klawiatura, mysz czy touchpad nie działają tak jak byśmy tego oczekiwali, to zawsze możemy zmienić ich konfigurację w tych powyższych plikach. Dlatego też jeśli coś działa prawidłowo, to najlepiej nic nie ruszajmy, bo możemy tylko to popsuć.

Plik xorg.conf

Jeśli nasz sprzęt wymaga od nas dodatkowych zabiegów konfiguracyjnych, to musimy wiedzieć jak przez ten proces przebrnąć. Na dobrą sprawę pliki w katalogu /etc/X11/xorg.conf.d/ są częściami pliku /etc/X11/xorg.conf . Przykładowy plik konfiguracyjny dla Xserver'a można wygenerować zwykle na dwa sposoby. Pierwszy z nich zakłada posłużenie się narzędziami dostarczanymi przez pakiety Xorg'a. Drugi zaś jest realizowany przez narzędzia dostarczane do sterowników karty graficznej (np. przez nvidia-settings ). Poniżej przykład generowania pliku xorg.conf :

# Xorg -configure :0

To powyższe polecenie trzeba wydać jako użytkownik root będąc jedynie zalogowanym w trybie tekstowym. Plik z konfiguracją zostanie utworzony w katalogu /root/ . Musimy go przenieść do /etc/X11/ i zapisać pod nazwą xorg.conf .

W przypadku korzystania z zamkniętych sterowników graficznych, trzeba wykomentować wpisy z dri oraz w odpowiednim miejscu zmienić sterownik na właściwy. Poniżej jest przykład dostosowania pliku xorg.conf pod kątem zamkniętych sterowników nvidia:

Section "Module"
...
#       Load  "dri"
...
#       Load  "dri2"

Section "Device"
...
        Driver      "nvidia"

My jednak nie będziemy się posługiwać plikiem xorg.conf i będziemy konfigurować poszczególne urządzenia w osobnych plikach w katalogu /etc/X11/xorg.conf.d/ .

Katalog /etc/X11/xorg.conf.d/

Pliki w /etc/X11/xorg.conf.d/ trzeba odpowiednio nazywać. Plik konfiguracyjny musi zaczynać się od dwóch cyfr, po których jest myślnik. Następny ciąg znaków może być dowolny ale nazwa pliku musi kończyć się na .conf . Im mniejszy numer w nazwie pliku, tym konfiguracja w nim zawarta jest wcześniej aplikowana. Reasumując, nazwa pliku powinna wyglądać następująco: 10-keyboard.conf .

Konfiguracja monitora i karty graficznej

Xserver zwykle jest w stanie poprawnie rozpoznać parametry monitora i odpowiednio je ustawić. Podobnie jest w większości przypadków modułów do kart graficznych. Jeśli jednak mamy problemy z uruchomieniem sesji graficznej, to być może trzeba odpowiednio skonfigurować monitor.

Konfiguracja klawiatury

Podobnie spawa ma się w przypadku klawiatury. Z reguły działa ona sprawnie ale też mogą być wymagane małe poprawki. Konfiguracja klawiatury została dokładnie opisana w osobnym wpisie. Konfiguracja klawiszy multimedialnych, które mogą nie być nawet wykrywane przez Xserver, została opisana także osobno.

Konfiguracja myszki

Mysz, to jedno z prostszych urządzeń, jakie podłączamy do komputera. Podobnie jak klawiatura, powinno ono działać bez zarzutu. Możemy jednak dostosować sobie ręcznie swoją mysz jeśli jej ustawienia nam nie odpowiadają z jakiegoś powodu.

Konfiguracja touchpad'a

Jeśli jesteśmy posiadaczami laptopów, to w ich przypadku mamy do dyspozycji touchpad zamiast myszy. Konfiguracja touchpad'a została opisana również w osobnym wpisie.

Logi Xserver'a

W przypadku wystąpienia problemów z załadowaniem się trybu graficznego, pożyteczne informacje znajdziemy w pliku /var/log/Xorg.0.log . Warto przeszukać go pod kątem WW albo EE . Natomiast jeśli chodzi o wszelkiego rodzaju błędy generowane przez aplikacje graficzne, to logowane są one do pliku ~/.xsession-errors . Warto do niego zajrzeć od czasu do czasu i przejrzeć zalogowane tam komunikaty. Przez analizę tych logów, można wyeliminować naprawdę sporo błędów.

Konfiguracja sesji Xserver'a

Konfiguracja sprzętu, na którym ma operować Xserver'a, to jedna sprawa. Osobną kwestią jest konfiguracja sesji Xserver'a. W debianie mamy kilka poziomów konfiguracyjnych. Pierwszym z nich są pliki globalne ulokowane w katalogu /etc/X11/ . Drugą opcją są pliki użytkownika, które nadpisują konfigurację systemową.

Konfiguracja globalna Xserver'a

Zajrzymy zatem do katalogu /etc/X11/ . Mamy tam min. plik Xsession , który jest czytany zarówno przez menadżery logowania jak i w przypadku, gdy podnosimy sesję Xserver'a logując się na TTY i wydając polecenie startx . Ten plik ustawia szereg zmiennych wskazujących na dodatkowe pliki, rozbudowując tym samym całą konfigurację sesji. Mamy także kilka opcji, które możemy dostosować sobie w pliku Xsession.options .

Analizując dalej plik Xsession , mamy tam zmienną SYSSESSIONDIR , która wskazuje na katalog /etc/X11/Xsession.d/ . W nim są zlokalizowane pliki szeregu usług, np. ssh-agent czy gpg-agent, tak by te usługi załadowały się na starcie sesji Xserver'a. Zwykle są one wymagane do prawidłowej pracy systemu. Oczywiście, to jakie pliki mamy w tym katalogu, zależy w dużej mierze od zainstalowanych pakietów.

W katalogu /etc/X11/Xresources/ mogą być umieszczone pliki, które odpowiadają za konfigurację wyglądu poszczególnych aplikacji.

Najważniejszym jednak elementem jest katalog /etc/X11/xinit/ , który zawiera pliki xinitrc oraz xserverrc . W pliku xserverrc możemy definiować opcje dla procesu X , który jest wywoływany, za każdym razem, gdy startuje nowa sesja graficzna. Z kolei plik xinitrc zajmuje się inicjacją sesji graficznej i dostosowaniem jej wszystkich elementów, począwszy od ustawiania zmiennych, skończywszy na uruchamianiu aplikacji. W debianie, domyślny plik /etc/X11/xinit/xinitrc wywołuje plik /etc/X1/Xsession .

Lokalna konfiguracja Xserver'a

Szereg z tych powyższych plików ma swoje lokalne odpowiedniki, które zwykle są umieszczane w katalogu użytkownika. Jeśli one nie istnieją, to czytana jest globalna konfiguracja i to jej ustawienia są aplikowane. W przypadku, gdy nam ta domyśla sesja Xserver'a nie odpowiada, lub też chcielibyśmy zmienić opcje procesu X , to możemy sobie utworzyć w katalogu domowym pliki ~/.xinitrc oraz ~/.xserverrc i w nich zdefiniować odpowiednie wpisy, posiłkując się oczywiście globalną konfiguracją.

Wygląd poszczególnych aplikacji dostosowujemy za pomocą plików ~/.Xdefaults lub ~/.Xresources. Ten pierwszy jest już przestarzały i nie powinno się go używać. Więcej informacji na temat tych plików można znaleźć pod tym adresem.

Uruchamianie Xserver'a

Nie mając w systemie jeszcze żadnego menadżera logowania, sesję Xserver'a uruchomić możemy za pomocą polecenia startx wpisanego zaraz po zalogowaniu się na konsolę TTY. Nie jest to proces automatyczny ale możemy to zmienić. W tym celu potrzebna jest nam jedna konsola TTY i odpowiedni wpis w konfiguracji shell'a. Domyślnym shell'em w debianie jest bash, zatem dodajemy do pliku ~/.profile ten poniższy kod:

if [[ $(tty) = /dev/tty4 ]]; then
      mv ~/.xsession-errors ~/.xsession-errors.old
      exec startx &> ~/.xsession-errors
fi

W takim przypadku po zalogowaniu się na konsoli nr. 4, automatycznie zostanie zainicjowany startx . W przypadku pozostałych konsol będziemy logowani tak jak przedtem. Domyślnie jednak system po załadowaniu pozostaje na konsoli nr. 1. Jeśli korzystamy z innej konsoli w celu odpaleniu sesji graficznej, to musimy poinstruować system, by po zakończeniu startu przeszedł do tej konsoli. Możemy to zrobić przez plik /etc/rc.local dopisując w nim tę poniższą linijkę:

chvt 4

W taki sposób mamy przygotowaną sesję Xserver'a ale to nie jest koniec. Czeka nas jeszcze konfiguracja menadżera logowania LightDM, menadżera okien Openbox i serwera dźwięku PulseAudio.

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.