Nowe posty

xx Fatal error: cannot connect to database! LMS (0)
2018-09-17, 21:53:02
xx Z wielu dystrybucji linuxa działają tylko dwie. Proszę o wsparcie (17)
2018-09-13, 22:00:57
xx Szukasz pracy? (1)
2018-09-11, 20:56:19
xx Dzielenie sieci, nadawanie masek (11)
2018-09-10, 23:07:05
xx konfiguracja dhcp server na ubuntu (1)
2018-09-07, 13:05:48
xx Jak zainstalować GIMPa? (16)
2018-09-05, 08:50:05
xx Odpowiednik Windowsowego Notepad++ (2)
2018-09-03, 08:05:23
xx JS w gulpie (0)
2018-09-01, 21:02:49
xx Błąd przy uruchamianiu make menuconfig (6)
2018-09-01, 18:14:55
xx [ Gra Za Darmo przez okreslony czas ] Warhammer 40,000: Space Marine (0)
2018-08-31, 17:28:45

Autor Wątek: Przeczytaj, nim zgłosisz problem z serwerem Xorg  (Przeczytany 23243 razy)

Offline arctgx

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2753
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« dnia: 2008-08-12, 15:17:34 »
Wątek dedykuję początkującym użytkownikom mającym problemy z działaniem serwera Xorg lub wcześniejszych wersji X Window, w szczególności problemy z samym uruchomieniem, zmianą rozdzielczości lub sprzętową akceleracją 3D. Pomysł jego napisania wziął się z konieczności powtarzania użytkownikom tych samych informacji. Chciałbym te informacje tu zgromadzić.

Niemal zawsze warto zajrzeć do pliku z konfiguracją narzuconą serwerowi podczas uruchamiania. Zazwyczaj jest to /etc/X11/xorg.conf. Można o nim przeczytać w man xorg.conf. W sieci i innych źródłach może trafić się podręcznik napisany dla innej wersji serwera, zatem najlepiej otworzyć manual z paczki własnego systemu. Począwszy od którejś wersji, serwer Xorg szuka też plików o nazwach *.conf w katalogu /etc/X11/xorg.conf.d (przynajmniej domyślnie).

Skarbnicą wiedzy bywa dziennik, do którego serwer Xorg zapisuje mnóstwo komunikatów, także tych o błędach. Na ogół jest to plik /var/log/Xorg.0.log.

Spróbuj zadać sobie trud znalezienia w tym dzienniku informacji związanej z problemem. Jeśli nie czujesz się na siłach, wklej oba wyżej wymienione pliki, by zatrudnić do tego kogoś z nas.

Ponieważ oba pliki mogą być bardzo długie i wymagają nieraz więcej wytężania wzroku niż zwykły tekst, proszę wklejać zawartości plików z znaczniki CODE, który wyróżni ich większą maszynową czcionką i opakuje w ramkę.

To oczywiście nie wyczerpuje wielu problemów, ale w sporej ilości przypadków jest punktem wyjścia do dalszego poszukiwania.

Jeśli spotkamy również w /var/log pliki z "1", "2", zamiast "0", to prawdopodobnie są to dzienniki (logi) z wcześniejszych uruchomień serwera - niekoniecznie jednak z ostatnich. Dla przykładu, w moim Debianie dziennik z przedostatniego uruchomienia ma nazwę Xorg.0.log.old.

Nowe wersje serwera Xorg zmierzają w kierunku coraz większej autodetekcji sprzętu i autokonfiguracji. Wiele wpisów w xorg.conf, które kiedyś były obowiązkowe, teraz przestają być wymagane, chyba że mamy problem lub chcemy sami coś narzucić serwerowi.

W przypadku problemów ze sprzętową akceleracją 3D warto sprawdzić kilka następujących rzeczy.

Dla części sprzętu sprawdzamy czy do jądra załadowane muszą być sterowniki AGP dla konkretnego czipsetu. Polecenia lspci i lsmod są tu przydatne. Nie wiem na razie, czego wymaga jądro dla sprzętowej akceleracji 3D na szynie PCI Express.

Podobnie jak jądro, Xorg też próbuje ładować sobie kilka kodów (również zwanych modułami) związanych z akceleracją 3D. Są to co najmniej "dri" i "glx", dołączane zazwyczaj jako część paczki z serwerem. W starszych wersjach Xorg należało samodzielnie zadeklarować ich użycie:
	Load	"dri"
Load "glx"
W nowszych (od wersji 1.3) serwer powinien domyślnie załadować je sam, a wymusić brak załadowania możemy przez zamianę "Load" na "Disable".

Pozostaje jeszcze do załadowania kawałek kodu tworzony niezależnie od Xorg, służący zazwyczaj do wykonywania poleceń OpenGL. W przypadku otwartych sterowników instalujemy bibliotekę Mesa, jeśli tylko wspiera poprawnie naszą kartę graficzną.

W przypadku zamkniętych sterowników sytuacja może się trochę różnić. Zawierają one zarówno kod dla jądra, jak i biblioteki GL.

Paczka Mesy posiada polecenie glxinfo, które pozwala sprawdzić czy sprzętowa akceleracja 3D działa.
  linux $ glxinfo | grep -E 'direct rendering|OpenGL version string|OpenGL renderer string'
direct rendering: Yes
OpenGL renderer string: Mesa DRI R200 20060602 AGP 4x x86/MMX+/3DNow!+/SSE TCL
OpenGL version string: 1.3 Mesa 7.0.4
W zamkniętych sterownikach Radeona można skorzystać z polecenia fglrxinfo.

Polecenie xrandr pokazuje rozdzielczości wraz z odświeżaniem dostępne w danej sesji serwera Xorg. W niektórych wersjach ich liczba mogła być ograniczona przez wpisy "Modes" w sekcji Screen, podsekcji Display pliku xorg.conf. Jeśli poprawnie działa nam nowsza wersja serwera, a w szczególności poprawnie pobiera dane o dostępnych trybach z pamięci EDID monitora, możemy spróbować obyć się bez wpisu Modes (zakomentowując go choćby, tzn. stawiając znak # na początku linii).

Poleceniem xrandr z parametrem -s i rozdzielczością wybraną z dostępnych możemy też przełączyć rozdzielczość czy orientację obrazu. Zachęcam do przeczytania man xrandr.

Uwaga: polecenie xrandr (czy może ściślej: rozszerzenie RandR) nie pokaże pełnego zakresu rozdzielczości i odświeżań monitora, jeśli wcześniej użyte dane zostały wykryte (--) błędnie lub wzięte z wartości domyślnych (==). Czasem w konfigu wystarczy ręcznie ustawić te parametry do wartości znanych nam z technicznej specyfikacji monitora. Odświeżanie poziome (w kHz) i pionowe (w Hz) monitora określamy parametrami HorizSync i VertRefresh. Niekiedy przyjdzie nam też dodawać ręcznie pojedyncze tryby monitora w sekcji Monitor, a potem użyć ich w sekcji Screen. Oto przykładowa sekcja Monitor z wymuszonymi ustawieniami:
Section "Monitor"
        Identifier      "SM"
        DisplaySize     352 264
        HorizSync       30 - 96
        VertRefresh     50 - 160
        #setka
        ModeLine "1024x768_85.00-setka"  94.50 1024 1072 1168 1376  768 769 772 808 +hsync +vsync
EndSection
i Screen, jeśli dodawaliśmy Modeline.
Section "Screen"
        Identifier      "Default Screen"
        Device          "ATI Technologies, Inc. Radeon RV250 If [Radeon 9000]"
        Monitor         "SyncMaster"
        DefaultDepth    24
        SubSection "Display"
                Depth           24      
                Modes           "1024x768_85.00-setka" # "1280x1024_85.00"
        EndSubSection
EndSection
W nowszych wersjach serwera Xorg (na pewno już w wersji 1.5) możemy wyłączyć sobie kilka zbiorów trybów do osobnych sekcji Modes.
Section "Modes"
        Identifier      "tryb1"
        ModeLine "1024x768_85.00"  94.50 1024 1096 1192 1376  768 769 772 808 +hsync +vsync
        Modeline "1280x1024_85.00"  157.50  1280 1344 1504 1728  1024 1025 1028 1072 +hsync +vsync
EndSection
Section "Modes"
        Identifier      "tryb2"
        # 720x400 @ 85.00 Hz (GTF) hsync: 35.78 kHz; pclk: 32.64 MHz
        Modeline "720x400_85.00"  32.64  720 744 816 912  400 401 404 421  -HSync +Vsync
EndSection
Serwer Xorg zrobi z jednego z tych zbiorów użytek (tzn. doda do listy dopstępnych trybów) dopiero wtedy, gdy w wybranej sekcji powiemy mu to w linijce UseModes:
Section "Monitor"
        Identifier      "SM"
        UseModes        "tryb1"
        Option          "PreferredMode"         "1024x768_85.00"
EndSection
Ktoś może zadać pytanie: skąd wytrzasnąłem ten ciąg liczb w Modeline? Ciąg taki można wygenerować za pomocą gtf, cvt lub innego kalkulatora do tego zadania:
 ~ $ gtf 1024 768 100

  # 1024x768 @ 100.00 Hz (GTF) hsync: 81.40 kHz; pclk: 113.31 MHz
  Modeline "1024x768_100.00"  113.31  1024 1096 1208 1392  768 769 772 814  -HSync +Vsync

 ~ $ cvt 1024 768 100
# 1024x768 99.97 Hz (CVT) hsync: 81.58 kHz; pclk: 112.25 MHz
Modeline "1024x768_100.00"  112.25  1024 1096 1200 1376  768 771 775 816 -hsync +vsync
Podajemy rozdzielczość w pikselach i odświeżanie, otrzymujemy wpis dla xorg.conf. Zauważmy, że dane te same, a wyniki nieco się różnią. Najlepiej sprawdzić po prostu, który daje lepszy efekt na naszym monitorze.

Uwaga: opis dodawania trybów może wymagać poszerzenia ze względu na aktualności w ostatnich wersjach Xorg. Podobnie z RandR: polecenie xrandr posiada parametr --addmode. Sam jednak nie używałem go, więc na razie wspominam tylko o jego istnieniu - może ktoś z Was prędzej zrobi eksperyment lub użyje tego słowa jako klucza w wyszukiwarce.

Chciałbym zwrócić uwagę na jeden detal w sekcji Monitor: DisplaySize. Opisuje on wymiary ekranu w mm. Wymuszając własne, możemy doprecyzować ilość pikseli na cal w pionie i poziomie. Sprawdzić możemy to później np. za pomocą xdpyinfo:
   $ xdpyinfo | grep -E 'dimensions|resolution'
  dimensions:    1024x768 pixels (312x234 millimeters)
  resolution:    83x83 dots per inch
W razie jakichś merytorycznych błędów czy niedoskonałości proszę o komentarz.
Użytkownik: Ib5sXfcCkvYR
Hasło: adam

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2494
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #1 dnia: 2008-08-13, 09:25:59 »
To może ja jeszcze coś od siebie dodam, z własnego doświadczenia - otóż niekiedy konfiguracja może być nawet prawidłowa, ale jeśli w katalogu domowym/partycji domowej* jest za mało miejsca, to iksy i tak nie wystartują.


-----------------------------
*
1.  Niepotrzebne skreślić
2. Ja preferuję używanie partycji domowej zamontowanej jako katalog domowy z powodów czysto praktycznych.
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji

Offline arctgx

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2753
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #2 dnia: 2008-08-13, 11:56:21 »
Cytat: roca
jeśli w katalogu domowym/partycji domowej* jest za mało miejsca, to iksy i tak nie wystartują.
...
preferuję używanie partycji domowej zamontowanej jako katalog domowy z powodów czysto praktycznych.
Napisałbym to inaczej: jeśli masz na myśli katalog domowy zwykłego użytkownika, a serwer Xorg uruchamiany jest przez menedżera logowania (GDM, KDM, XDM, ...), to najprawdopodobniej sam wystartuje, bo standardowo jego właścicielem jest root (w moim Debianie tak jest) lub być może inny specjalny użytkownik.

Dopiero w momencie zalogowania wysypuje się sesja użytkownika, która zazwyczaj jest skonstruowana tak, że po zakończeniu menedżer logowania restartuje również serwer X, który jest jego dzieckiem (procesem potomnym).
 # ps fauxwww
...
root      1865  0.0  0.1   5424   908 ?        Ss   11:14   0:00 /usr/bin/xdm
root      1881  0.9  2.6  30044 13456 tty7     Ss+  11:14   0:12  \\_ /usr/bin/X :0 vt7 -nolisten tcp -auth /var/lib/xdm/authdir/authfiles/F:0-34O6vE
root      1896  0.0  0.7   6560  3628 ?        Ss   11:14   0:00  \\_ -:0        
user      1925  0.0  0.2   5360  1180 ?        Ss   11:14   0:00      \\_ icewm-session
user      1973  0.0  0.3   5424  1840 ?        SNs  11:14   0:00          \\_ icewmbg
user      1974  0.1  0.9  10632  4688 ?        Ss   11:14   0:01          \\_ icewm
user      1975  0.0  0.4   8640  2068 ?        Ss   11:14   0:00          \\_ icewmtray
...
Nie wiem jak wygląda sytuacja, kiedy w katalogu domowym roota brakuje miejsca. A czy ktoś montuje go na osobnej partycji niż główna?

Bywa też tak, że sesja użytkownika w menedżerze logowania wali się z braku miejsca w katalogu /tmp.

O problemach z xauth nie potrafię na razie nic sensownego napisać.

Na marginesie: osobna partycja z /home przydaje się na pewno, kiedy reinstalujemy system (jakieś 2 lata temu robiłem to ostatnio), korzystamy z kilku systemów, ale i w razie pewnych problemowych sytuacji. Ostatnio mam problem z prawidłowym zabiciem procesów przed zamknięciem i korzystam z Magic SysRq, nie mając jednak pewności czy główna partycja, z której korzysta jakiś proces, została odmontowana (Alt-SysRq-U). Z pozostałymi (/tmp, /usr czy /home) mam jednak spokój. Czasem różnice w wersjach programów potrafią narobić bałaganu we wspólnie używanej konfiguracji.
Użytkownik: Ib5sXfcCkvYR
Hasło: adam

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2494
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #3 dnia: 2008-08-13, 13:12:46 »
Cytat: arctgx
jeśli masz na myśli katalog domowy zwykłego użytkownika, a serwer Xorg uruchamiany jest przez menedżera logowania (GDM, KDM, XDM, ...), to najprawdopodobniej sam wystartuje, bo standardowo jego właścicielem jest root (w moim Debianie tak jest) lub być może inny specjalny użytkownik.

Dopiero w momencie zalogowania wysypuje się sesja użytkownika, która zazwyczaj jest skonstruowana tak, że po zakończeniu menedżer logowania restartuje również serwer X, który jest jego dzieckiem (procesem potomnym).
Dokładnie tak. KDE niby się ładuje, ale już nie wstaje. Na szczęście pomaga zrobienie miejsca w katalogu. Inaczej nie napisałbym tak szybko poprzedniego postu :-)
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 225
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #4 dnia: 2008-08-15, 19:55:57 »
Samego katalogu /root nie da się wydzielić - wyobraźcie sobie że macie wydzielony /bin lub /sbin - sytuacja bardzo podobna i zbliżona; użytkownik po prostu musi mieć katalog domowy aby mógł się zalogować. Co do problemu mało miejsca, ale nie w katalogu domowym zwykłego użytkownika, to jest takie magiczne miejsce gdzie jak jest za mało miejsca, to się wysypie albo jakiś "dm", albo X, albo już sama sesja użytkownika - to /tmp (ja mam wydzielony - 1028MiB partycja (80% zawsze wolne)).
Co do modułów do przyśpieszania - to drm, dri, GLcore, glx.
W niektórych sytuacjach DRM (nie jako moduł a jak API) gryzie się z glx.
Jeżeli się wpiszę Load "dri" to już nie trzeba Load "drm" ponieważ dri jest wyższym interfejsem drm i w momencie użycia dri jest ładowany automatycznie.
Niektórzy HardCore'owcy (w tym ja) używający ultra-wysokiej rozdzielczości (np 2048x1536 lub jeszcze wyższej) w wysokiej głębi kolorów (24 / 32) mogą się naciąć, ponieważ X rezerwuje pamięć dla FrameBuffer'a w pierwszej kolejności (chyba normalne - nie!!) i jest to rezerwacja STAŁA, więc np. grafika z 32MiB RAM 1600x1200@32 = 7.66MiB RAM na teksury, 32MiB RAM 1280x960@32 = 16.36MiB RAM na tekstury.
DRM też bierze swoją własną pamięć i jest co najmniej wielkość 1/3 ramki.
Jutro zobaczę na komputerze wujka i powiem coś dokładniej - w źródła nie będę patrzył pomimo że wiedziałbym co robię.

Offline arctgx

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2753
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #5 dnia: 2008-08-15, 22:15:29 »
drm jest mi znany tylko jako moduł samego jądra - o tak samo nazwanym module dla Xorg nie mam pojęcia.

Mój sterownik radeon nie obsługuje 32-bitowej głębi kolorów (man radeon). Być może zamknięty fglrx jest do tego zdolny.

Skoro już piszesz o zużyciu pamięci, to zerknij na jeden stary wątek: http://forum.linux.pl/viewtopic.php?pid=63676#p63676

Do pracy w konsoli używam wkompilowanego w jądro sterownika radeonfb. Nie mam pojęcia czy i on rezerwuje sobie na stałe pewien kawałek RAMu, którego niekoniecznie używa, i ile to jest.

Pytanie wciąż otwarte: jak sprawdzić zużycie pamięci zamontowanej na karcie graficznej? Na co ona jest zużywana?

Skąd to "i" w oznaczeniu megabajta?
Użytkownik: Ib5sXfcCkvYR
Hasło: adam

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 225
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #6 dnia: 2008-09-13, 22:57:25 »
To jednostka SI
KB - 1'000B - (10^3)B
MB - 1'000'000B - (10^6)B
GB - 1'000'000'000B - (10^9)B
KiB - 1'024B - (2^10)B
MiB - 1'048'576 - (2^20)B
Co do zużycia pamięci to w log'u jest to napisane.
Co do FrameBuffer'a - to bez problemu da się obliczyć (szerokośćxwysokośćxilość bitów / 8)
Co do DRM - tu sprawa jest dosyć dziwna - ani do wyliczenia, ani do przewidzenia.

Offline arctgx

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2753
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #7 dnia: 2008-09-13, 23:19:16 »
Nawet na Wikipedii po polsku można przeczytać, choć nie podejrzewałem tego oznaczenia o oficjalność.

Teraz przynajmniej wiem, że to rozwiązanie z "i" było próbą uniknięcia dwuznaczności w określeniu przedrostków i chyba pozostało do teraz dyskusyjnym. Do tej pory spotykałem się tylko z określeniem kilobajta jako 1024 bajtów wbrew standardowi.

Jeśli chodzi o bufor ramki, to z Twojego tekstu wynika (a przynajmniej tak to odebrałem), że jego sterownik dla tekstowej konsoli o rozdzielczości 1024x768 z 16 bpp zajmuje dokładnie 1.5 megabajta pamięci (RAM czy tej w karcie?).
Użytkownik: Ib5sXfcCkvYR
Hasło: adam

Offline arctgx

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2753
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #8 dnia: 2008-10-27, 16:31:53 »
Dodałem info o HorizSync, VertRefresh potrzebnych do wymuszania odświeżań monitora podczas problemów, a także wzmiankę o Modeline i Displaysize.
Użytkownik: Ib5sXfcCkvYR
Hasło: adam

Offline arctgx

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2753
    • Zobacz profil
Przeczytaj, nim zgłosisz problem z serwerem Xorg
« Odpowiedź #9 dnia: 2009-01-15, 14:38:01 »
Info o sekcji Modes (wyłączone zbiory trybów monitora) oraz o kalkulatorze cvt.
Użytkownik: Ib5sXfcCkvYR
Hasło: adam