Home    Решения    Услуги    Download    Публикации    Работа    Продукти    Документи
 

 

 
Print this page/Отпечатай тази страница  

 

Коментари по настройката на X Window

от Борис Йорданов ([email protected])





    Във следващите редове ще се опитам да опиша и коментирам някои от проблемите по настройването на Х Window, с които ми се наложи да се справя.

    Но първо няколко уточнения:

  •  Аз не съм Linux специалист;
  •  Този документ не е пълно ръководство за инсталиране и настройване на X Window (който от тук нататък ще наричаме за по-кратко само X), за детайлна информация прочетете HOWTO файловете свързани с темата.
  •  Това е първият документ от този род, който пиша, затова - извинете ме за стила, такъв още няма :)
  •  Изпращайте ми своите препоръки, съвети, забележки. Поправяйте ме за нещата в които греша, сигурно са много. Пишете до [email protected].
    А сега към темата:

    1. X сървърът

    Както вече казах, няма да обсъждам Х изоснови, а само някои страни по настройката му. За повече информация относно Х сървъра погледнете справочните страници за X и Xserver.

    XFree86 включва в дистрибутива си 4 вида Х сървъри:

  •  Monochrome - както показва името, това е монохромен сървър който би трябвало да подкара всяка видео карта;
  •  VGA - 256 цветен сървър поддържащ ниски разделителни способности, също би трябвало да подкара почти всяка видео карта;
  •  SVGA - тук започва интересното. Този сървър поддържа разнообразни чипсетове, като например NVidia Riva (давам тази карта за пример, защото точно с нея трябваше да се справя :)) и би трябвало да работи на повечето SVGA видео карти. Позволява до 32 битов цвят(разбира се, това зависи от наличната видеопамет) и високи разделителни способности.
  •  Accelerated servers - това са 10-ина сървъра всеки от които поддържа определен чипсет, като например MACH32, MACH64 на ATI Technologies, чипсетовете на S3 и др. Сигурно е възможно да намерите такъв сървър и за Вашата карта, преровете мрежата, винаги има надежда. А можете и да си купите такъв. Е, вярно, че парите са му хубави, но ако ги имате... Можете да хвърлите едно око на саита на Xi (X inside) - http://www.xigraphics.com
    (Пробвайте и http://www.xig.com - бел. Linux center)
        Ако вашата видео карта не е някоя от подържаните от Accelerated servers и ако е SVGA, то явно ще трябва да изберете SVGA сървърът. Както вече казах, той поддържа доста чипсетове. В моят случай трябваше да подкарам Riva128zx със монитор LG Studioworks 44i.
        Riva вече се поддържа доста прилично (става въпрос за работата и като 2D карта ;) ) от XFree86, въпреки, че аз използвах един сървър на SuSE - XSuSe_NVidia който инсталирах от диска с приложения към дистрибутива на RedHat 5.2. После ще обясня защо него. По времето когато го инсталирах за първи път в документацията му пишеше, че ще бъде включен във следващата реализация на XFree86.
        Предполагам, че части от кода, ако не и целият са включени в текущата реализация на Х. Защо обаче продължавам да използвам този, а не актуалният SVGA сървър? Ами защото в моят случай този се държи по добре. Инсталирах SVGA сървъра идващ със RedHat 6.0, но уви - мъка. Изкривено изображение, машината ставаше страхотно бавна дори при работа само с менютата на GNOME и такива работи... Изкопирах си сървъра от SuSE и всичко беше ОК. В момента използвам вече друг сървър - RIVA-X-GLX-1.0 - забележимо по-бърз е :)

        Предполагам, че сте инсталирали Linux с подходящия за Вас сървър, а ако не сте-направете го (всъщност, можете да инсталирате всички сървъри и по-късно да посочите кой конкретно ще използвате).

      Забележка: Ако просто подменяте изпълнимия файл(binary) на сървъра (файлът сочен от символичната връзка X), той трябва задължително да е SUID (Set User ID), тоест да се стартира със правата на собственика си (root). Ако още при инсталирането сте избрали подходящия сървър, това сигурно вече е направено.

        Ще предположим, че Вашата видеокарта не е от поддържаните от Accelerated servers, например Intel 740 (но ако преровите мрежата сигурно ще намерите...). Имате 3 избора:

    • монохромен сървър който би трябвало да пусне всяка карта
    • VGA - само 256 цвята;
    • SVGA.


    2. Настройката.

    Стартирайте

    xf86config

    и програмата ще започне да Ви разпитва. Хубаво четете какво Ви казва и не бързайте.
     

  •     Мишка - избирате тип. Ако е трибутонна, но е Micro$oft съвместима и няма превключвател за трибутонен режим, кажете му че е M$ compatible и т.н. и когато след това Ви попита ChordMiddle му кажете да. Това ще позволи работата на средния бутон, а той при Х не бездейства. После ще попита Emulate3Buttons, ако на ChordMiddle сте отговорили да, на това отговорете не, иначе ще емулира среден бутон при едновременното натискане на другите два. Естествено, ако сте с двубутонна мишка ще трябва да отговорите с yes на Emulate3Buttons.Следва любимият въпрос на котката Ви - "Къде е мишката?", a предлаганото устройство по подразбиране е /dev/mouse. При мен този избор работи.
  •     XKB (това предполагам е технологията за осъществяване на клавиатурния вход при X, някой ще ми каже ли дали е така?) - кажете му че искате (заради кирилицата, която сигурно ще искате да имате и не обръщайте внимание на Cyrillic HOWTO от документацията с Вашия дистрибутив, която ще Ви каже да забраните XKB. Това е от братушки за братушки). Накрая трябва да изберете каква клавиатура имате.
  •     Следват въпроси за монитора. За него е необходимо да знаете някои неща. Първо честотен обхват за хоризонтална синхронизация. Можете да изберете от предложения списък или да въведете свой обхват. Следва обхватът за вертикална синхронизация. Там избирате по същият начин. Не знаете тези характеристики на монитора си? Ами постарайте се да ги намерите и бъдете внимателни, това което въвеждате може да повреди монитора ако данните са неправилни! Прочетете книжката към монитора, попитайте продавача от когото сте го купили, посетете сайта на производителя, попитайте някой които има същият модел... После трябва да въведете описание на монитора си - идентификатор, производител и модел. Не е задължително да пишете нещо, може просто да ги прескочите с Enter.


    Следва видеокартата:

  •     Първо ще бъдете попитани дали искате да видите списък с картите които се поддържат - огледайте го внимателно и ако видите своя модел - изпишете номерът му. Програмата ще изведе разни информации за избора Ви и по-добре ги запишете. Ако не намерите своята карта можете да изберете Generic VGA compatible или Unsupported VGA compatible, а може и нищо;
  •     Следва изборът на сървър. Възможностите са както казахме 4;
  •     Следващият въпрос е дали искате да бъде установена символичната връзка X която е просто препратка към сървъра(binary файла). Тоест, по всяко време можете да смените сървъра като просто промените връзката X. Например искате от тук нататък да използвате сървъра CoolServGL, който сте инсталирали в директорията /usr/X11R6/bin. Изтрийте символичната връзка X
        rm X

        и я създайте отново

        ln -s /usr/X11R6/bin/CoolServGL X

  • Следва указване обема на видеопаметта;

  • Следва запитване за описание на картата. Както и при описанието на монитора, можете просто да прескачате полетата с натискането на Enter Clockchip - погледнете документацията на картата си. С натискането на Enter продължавате без да изберете нищо X -probeonly стартирането на X с този аргумент ще опита да определи стойностите за настройка на Clockchip-а, ако има такъв. Прочетете внимателно съообщението, там е обяснено по-добре отколкото аз бих могъл :) В следващият екран трябва да укажете кои видеорежими искате да използвате за всяка дълбочина на цвета И на финала - искате ли всичко което сте избрали до момента да бъде записано в конфигурационния файл XF86Config
    После ще иска да пусне X probeonly - според мен няма смисъл да го правиш.
    Друго не си спомням. След това ще пита дали да презапише XF86Config - кажи му да и дали да установи символичната връзка X - пак да.

        С това свършва лесната (потенциално) част. Сега си пускате Х-а (startx) и ще тръгне в 256 цвята, не е страшно, по-важното е да тръгне. С Ctrl+Alt+"+" (от цифровата клавиатура) вдигате разделителната способност, с Ctrl+Alt+"-" я сваляте. Ако тръгне във по-високите режими, смятайте, че нямате проблеми :) Ctrl+Alt+BackSpace гаси Х сървъра и Ви връща в текстовата конзола. А ако не тръгне ...? Лошо, най-вероятно сървъра не намира подходящ стандартен режим който се поддържа едновременно от картата и монитора Ви. Едно от решенията (правил съм го !!!) е да изпиете нещо успокояващо(или няколко такива неща), да си вземете калкулатор, лист и писалка и да започнете да четете "Video timings HOWTO". Това е документ, частично посветен на черната магия, но с по-съвременни средства - RAMDAC например. Моите съболезнования, повярвайте ми - зная какво Ви очаква ... След като приключите изследванията вдъхновени от този документ можете да продължите с настройките. Друго решение е да си смените картата и/или монитора. Ако случайно Ви останат дребни, няма да откажа и аз един добър монитор ;)

        След това трябва да откриете файла XF86Config, който съдържа настройките на XWindows. При Slackware е във /etc (а при RedHat в /etc/X11/) и го отворете с текстов редактор.

    Потърсете надолу секциите които описват дисплея и изглеждат така:

         Subsection "Display"
             Depth 8
             # Omit the Modes line for the "Generic VGA" device
             Modes "640x480" "800x600" "1024x768" "1280x1024"
             ViewPort 0 0
             # Use Virtual 320 200 for Generic VGA
      EndSubsection
     

        Трябва да са 4 на брой - за 8, 16, 24 и 32 битов цвят. Например, ако искате 16 битов цвят, поставете е коментари останалите секции:
     

    #     Subsection "Display"
    #         Depth 8
    #         # Omit the Modes line for the "Generic VGA" device
    #         Modes "640x480" "800x600" "1024x768" "1280x1024"
    #         ViewPort 0 0
    #         # Use Virtual 320 200 for Generic VGA
    #     EndSubsection

        С това сте почти готови, стартирайте  Х и всичко трябва да е наред. Трябва да имате 16 битов цвят и да можете (евентуално, но не задължително) да превключвате разделителните способности. Остава още малко, например да си настроите  режим по подразбиране(при мене съм го оставил на 800х600). Аз съм го направил по тъпия начин - изтрих от XF86Config описанията на всички режими без този който искам да ползвам :)

        Може да се получи Х да върви, но изместено, свито или нещо подобно. Докато сте под Х в един терминален прозорец стартирайте

    xvidtune

        Прочетете предупреждението, за да не бъда аз отговорен за възможните щети, изберете Auto и започнете да настройвате изображението. Когато го докарате възможно най-добре, изберете show. В терминалния прозорец ще излезе един ред - запишете си го точно. Отново отворете XF86Config и стойностите, и флаговете в реда който описва желаният режим заместете с тези които си записахте. Запишете файла и рестарайте Х.
     

        Някои неща относно XF86Config.

        След частта в началото на файла, където са дадени пътищата до шрифтовете, настройки на клавиатура, мишка джойстик и т.н. следва една много обширна част със описания на видео режимите от вида:

    # 640x480 @ 100 Hz, 53.01 kHz hsync Modeline "640x480" 45.8 640 672 768 864 480 488 494 530 -HSync -VSync

    За всяко такова описание има по няколко цифри описващи позициите на които се подават синхронизиращи и управляващи сигнали съответно за хоризонталното и вертикалното обхождане на екрана. Точно тези са стойностите споменати в предния текст, които трябва (евентуално) да се подменят с резултата от работата на xvidtune.
    Тоест намирате описанието на режима който ще поправяте (от вида XXXxYYY точки) за съответната честота на опресняване и го подменяте, а режимите които не Ви трябват... е вече го казах по-горе :)

        Ако искате да си разрешите кирилските шрифтове (това не означава да кирилизирате X, то е тема на друго обяснение и всичко което Ви трябва за да го направите можете да намерите на страницата за кирилизиране), намерете къде са описани пътищата до шрифтовете (в XF86Config разбира се) и вмъкнете на първо място

    FontPath "/usr/X11R6/lib/X11/fonts/cyrillic/"

     ако тази директория съществува, но мисля, че почти всички дистрибутиви инсталират кирилски шрифтове, само не поставят път до тях.


        Ще бъда доволен, ако с тези няколко реда успея да помогна поне малко на някого.

    20.07.1999
    Борис Йорданов