Next Previous Contents

3. XFree86

3.1 Q: Sulūžo X'ai, kaip man persijungt į tekstinį režimą, kad galėčiau juos pataisyt?

Aha. Kaip suprantu, pas tamstą Linux'as iškart paleidžia X'us ir login'as yra grafinis.

Ctrl-Alt-F1 išmes iš grafinio režimo į tekstinį. X'ai pasileidžia (kaip taisyklė) ant 7-os konsolės, taigi sugrižti į X'us galima bus su Ctrl-Alt-F7.

Galima pasileisti sistemą kitame runlevelyje (SuSE grafika yra 3, tekstinis yra 2, RedHat grafika yra 5, tekstinis 3), taip, kad X'ai net nebūtų startuojami. Tam reikia įrašyti runlevelį į LILO: promptą po pasirenkamo os'o varianto pavadinimo:

LILO: linux 2

Kitas, tikresnis būdas -- pasikrauti single user mode'e ir viską pataisyti.

LILO: linux s

arba

LILO: linux single

Default runlevelis yra nustatomas faile /etc/inittab eilutėje su :initdefault:

3.2 Kokia iš viso yra tų X Window architektūra ir hierarchija?

X Window System, sutrumpintai vadinama X Window arba tiesiog X, yra paremta kliento/serverio architektūra. X serveris -- grafikos, klaviatūros bei pelės draiverių visuma, leidžianti kelioms programoms (X klientams) rodyti bet ką atskiruose, gal būt persidengiančiuose languose. Pavyzdžiai: XFree86 serveriai (XF86_SVGA, XF86_S3 ir t.t.), Metro X, Accelerated X.

Visi X klientai yra lygūs, bet vienas iš jų lygesnis uz kitus. Jis vadinasi window manageriu (gal į lietuvių kalbą nebandysiu išversti... "langų vadybininkas?" ;) Window managerio paskirtis -- duoti kiekvienam langui rėmelį su pavadinimų, porą arba kelias dešimtis mygtukų (uždarymo, padidinimo ir t.t.), jis pirmas apdoroja klaviatūros bei pelės paspaudimus ir leidžia langus nešioti, didinti, iškelti į priekį, aktyvuoti ir taip toliau. Pavyzdžiai: Enlightenment, kwm (iš KDE), fvwm, Window Maker ir devynios galybės kitų.

Toliau lieka tik vartotojo programos. Jos, žinoma, galėtų pačios keistis su X serveriu žemo lygio komandomis, bet daug paprasčiau naudoti pilnavertes bibliotekas. Šios biliotekos suteikia įvairių standartinių įrankių (vadinamų `widget') -- mygtukų, scroll barų ir t.t. Pavydžiai: Xaw (Athena Widget Set), Xaw3d, Motif, Gtk+, Qt.

Galų gale beliko desktopai (na, aš ne kalbininkas, atleiskit kaip nors...). Desktopo paskirtis -- suteikti įvairioms programoms vienodą išvaizdą ir naudojimą (nevykęs `look and feel' vertimas). Paprastai desktopą sudaro biblioteka, window manageris ir krūvelė bendros paskirties programų (paleidimo panelė, failų tvarkyklė ir t.t.). Pavyzdžiai: CDE, KDE, Gnome.

3.3 XFree86-mini-KAIPTAI (lietuviškas mini-HOWTO)

Tai sukūrė ir į konfą atsiuntė (spekit kas?) Marius Gedminas.

Spalvos

Pasirinkti norimą spalvų skaičių galima leidžiant X serverį:

    $ startx -- -bpp 24

(vietoje 24 įrašykite norimą bitų skaičių pikseliui, pvz., 8, 16, 24, 32). Žinoma, jūsų XF86Config faile esančioje Section "Screen" turi būti po Subsection "Display" kiekvienam spalvų gyliui.

Nutylėtą reikšmę nurodykite toje pačioje sekcijoje "Screen":

    DefaultColorDepth 24

Rezoliucija

Išvardinkite norimas rezoliucijas "Screen" sekcijos "Display" subsekcijose, pvz.:

    Modes "1024x768" "800x600"

Startavus X serverį bus pasirinkta pirmoji rezoliucija; kitas galėsite perjunginėti klavišų kombinacijomis Ctrl+Alt+[+], Ctrl+Alt+[-]. Žinoma, jūsų XF86Config faile turi būti įrašyta bent po vieną Modeline eilutę kiekvienai rezoliucijai.

Atnaujinimo dažnis

XFree86 automatiškai pasirenka didžiausią įmanomą ekrano atnaujinimo dažnį (refresh rate). Pasirinkimo algoritmas yra toks: norimai rezoliucijai surandamos visos Modeline eilutės. Kiekvienai iš jų patikrinami trys parametrai:

Siuos tris dydzius sieja ekrano rezoliucija. Supaprastinus:

  hsync = dot_clock / horiz_total
  vsync = hsync / vert_total

Kur horiz_total bei vert_total -- ekrano rezoliucija (tiksliau -- gal apie 20% daugiau, nes dar reiktų pridėti rėmeli abiejuose kraštuose bei sinchronizacijos taktus). Kas nori daugiau apie tai sužinoti, tegu paskaito XFree86-Video-Timings-HOWTO

Video kortos palaikomus taškų dažnius XFree86 serveris nustato pats (arba galima juos nurodyti Clock eilte, jei tikrai žinote, ką darote). Leidžiamus horizontalios ir vertikalios sinchronizacijos dažnius turite nurodyti patys XF86Config faile:

    HorizSync 30-70             # kHz -- Mano ViewSonic E655-2 manualas
    VertRefresh 50-120          # Hz     šitaip sako

Standartinis perspėjimas: jei nurodysite reikšmes virš savo monitoriaus sugebėjimų, galite jį sudeginti. Kiek žinau, šis perspėjimas galioja tik seniems akmens amžiaus fixed frequency monitoriams, bet per daug manim netikėkit, nesu specialistas. Jei kas ne taip -- aš nekaltas.

Jei jums neužteks standartinio dažnio (arba jis nepatiks), tuomet galite susirasti visas Modeline eilutes konkrečiai rezoliucijai ir pakaitalioti jose dot_clock parametrą

Modeline "1024x768" 75.00 1024 1048 1184 1328  768 771 777 806 -hsync -vsync
#         dot_clock --^      horiz_total --^   vert_total --^

Žinoma, senų modelainų geriau neliesti, jas tiesiog užkomentuoti ir (nusikopijavus) palikti tik vieną bandymams.

Leidžiamas dot_clock reikšmes pamatysite įvykdę komandas

  $ X -probeonly > /tmp/X.out
  $ less /tmp/X.out

Ieškokite dviejų eilučių "Clocks".

xvidtune

Jei vaizdas ekrane atrodo pasislinkęs, per siauras ar per platus, pasileiskite xvidtune, susireguliuokite parametrus, o rezultatą (Modeline eilutę, kurią xvidtune išspausdins terminale paspaudus kažkurį mygtuką) įrašykite į savo XF86Config failą.

XF86Config failo pavyzdys

... # čia praleistos sekcijos "Files", "ServerFlags", "Keyboard",
    # "Pointer"

Section "Monitor"   # Tokių sekcijų gali būti kelios, bet pakanka ir
                     # vienos
  Identifier  "ViewSonic E655"      # kaip norit -- taip vadinkit ;)
  # VendorName, ModelName -- nesvarbu
  HorizSync   30-65         # įrašykit teisingas reikšmes
  VertRefresh 50-100        # tik neklauskit manęs, kur jas gauti

  # ... Modeline eilutės ...
EndSection

Section "Device"
  Identifier  "My Video Card"       # kaip norit -- taip vadinkit II
  # ...
EndSection

Section "Screen"    # Po vieną kiekvienai X serverio atmainai, t.y.
                     # draiveriui
  Driver "svga"     # palaiko daugumą video kortų.
  Device "My Video Card"    # čia nurodote atitinkamą Device sekciją
  Monitor "ViewSonic E655"  # atitinkama monitoriaus sekcija

  DefaultColorDepth 24      # nutylėtas spalvų gylis
  Subsection "Display"      # po vieną kiekvienam gyliui
    Depth   8               # 256 spalvos
    Modes   "1024x768" "800x600"
  EndSection
  Subsection "Display"      # po vieną kiekvienam gyliui
    Depth   24              # TrueColor
    Modes   "800x600"       # tarkime, nereikia man 1024x768, 24bpp
    Virtual 1024x768        # bet aš noriu didelio virtualaus ekrano
  EndSection
EndSection

XF86Setup, xf86config, Xconfigurator ir t.t.

Tai yra įvairios X konfigūracijos priemonės, bet visos jos daro praktiškai tą patį: keičia XF86Config failą. (Kitas dalykas, kurį jos daro -- pasirenka norimą X serverio atmainą, e.g. XF86_SVGA). Apsimoka iš pradžių su kuria nors iš šių programėlių susigeneruoti XF86Config, o po to rankomis jį keisti, jei kas ne taip (pvz., su Xconfiguratorium nepasirinksi daugiau nei 256 spalvų režimo).

Daugiau informacijos:

   $ man X
   $ man XF86Config
   $ less /usr/doc/HOWTO/XFree86-HOWTO
   $ less /usr/doc/HOWTO/XFree86-Video-Timings-HOWTO
ir t.t.


Next Previous Contents