Вікно в Антарктиду, Linux, Операційні системи, статті

На мою поштову скриньку від читачів надійшло дуже багато питань з приводу роботи і настройки тих чи інших параметрів в ОС Linux. На один з найбільш часто повторюваних і, з моєї точки зору, найбільш цікавих – «Як збільшити частоту кадрової розгортки?» – я і спробую дати відповідь в цій статті.

Описуючи конфігурацію своєї машини, користувачі зазвичай згадують модель процесора, об’єм і тип оперативної пам’яті, лише деякі – модель відеокарти, ну а марку монітора не називає майже ніхто. Адже останні два параметри і є визначальними в даній ситуації. Щоб зрозуміти, чому, пропоную ознайомитися з принципом роботи X-Window і відеопідсистеми комп’ютера взагалі.

Довгий час користувачі ОС Unix спілкувалися з системою за допомогою командного рядка, але минув час, і комп’ютер став цікавити не тільки програмістів і системних адміністраторів. Тут як раз і обчислювальні потужності дозріли – щоб користувач відчував себе комфортно, йому був даний графічний інтерфейс. У 1987 році ряд постачальників програмного забезпечення, щоб сприяти створенню єдиної віконної системи для Unix, заснували організацію X Consortium, Покликану стандартизувати X-Window. Вільна реалізація ідей цього проекту називається XFree86 (Цифра 86 вказує на використання Intel-x86 сумісних процесорів). X-Window являє собою систему клієнт / сервер, Але в дещо переверненому розумінні. Справа в тому, що сервер працює безпосередньо на комп’ютері користувача і забезпечує виведення інформації, а клієнт надає ресурси, необхідні для виконання програм (нагадаю, в світі ПК все навпаки). Клієнт, як правило, знаходиться на тому ж комп’ютері, що і сервер, але ніщо не заважає розмістити його на віддаленому комп’ютері, тим самим перекинувши ресурсомісткі завдання на потужності сервера. Сам Х-сервер не формує зображення, він тільки доставляє графіком відео-драйверу. Наберіть в консолі команду XF86_SVGA (або просто Х) – і ви отримаєте тільки сірий екран з хрестиком миші. Це і є працюючий Х-сервер. Все, подивилися? А тепер убийте його клавішами Ctr + Alt + Backspace – в такому вигляді він абсолютно даремний. Для того щоб отримати щось більш цікаве, необхідно запустити який-небудь менеджер вікон і хоча б одну програму-клієнтxterm, Наприклад. Менеджер вікон забезпечує промальовування елементів вікна, дає можливість змінювати вигляд і положення вікна, взагалі все, що можна зробити з вікном. Щоб додаток могло взаємодіяти з клавіатурою і мишкою, йому необхідно знати їх параметри – ось чому при налаштуванні X-Window вас про це питають. Природно, повністю підтримується багатозадачність. І тепер щодо підтримуваного устаткування: оскільки а) в Україну завозяться найпоширеніші відеоадаптери і б) читач МК – людина за визначенням підкований у виборі заліза, я не думаю, що у вас можуть виникнути проблеми. Втім, можете в каталозі / usr/X11R6/lib/X11/doc / або на сайті www.xfree86.org. посмотреть список підтримуваного устаткування.

На жаль, через погану підтримки виробниками обладнання операційної системи Linux, налаштування графічного інтерфейсу для початківця користувача є непростим завданням. Щоб підійти до процесу, так би мовити, у всеозброєнні, я пропоную розібратися, як працює відеопідсистема комп’ютера.

Відеопідсистема комп’ютера складається з монітора і відеоадаптера. Відеоадаптер передає в монітор три види сигналу: відеосигнал (RGB), рядкову синхронізацію (HS) і кадрову синхронізацію (VS). Монітор справляється з двома незалежними один від одного завдань: розгорткою променя і виведенням зображення. Причому, саме незалежними – може бути одне, але не бути іншого. Управління монітором зводиться до того, щоб задати число точок в рядку (Дозвіл по горизонталі), число рядків на екрані (Дозвіл по вертикалі) і інтенсивність кожного з трьох основних кольорів в кожній точці. По сигналу горизонтальної (рядкової) синхронізації відбувається повернення променя з кінця кожного рядка до початку наступної, а сигнал вертикальної (кадрової) синхронізації визначає момент повернення променя з правого нижнього кута екрану в верхній лівий. Частоти генерації цих двох сигналів (вимірювані числом імпульсів в секунду) необхідно знати для правильного встановлення та налаштування X-сервера. Значення частот горизонтальної та вертикальної синхронізації повинні бути вказані в документації до вашого монітора. Частота вертикальної синхронізації (позначимо її VSF) Зазвичай вказується в герцах (у мене, на моєму DTK, наприклад, діапазон значень – від 50 до 120 Гц). Частота горизонтальної синхронізації (HSF) Задається в кілогерцах (кГц) (у мене – від 30 до 70 кГц; нормальною вважається більше 65 кГц, але про це трохи нижче). На більш сучасних моніторах це значення, природно, вище (від 25 Гц до 150 Гц і від 30 кГц до 200 кГц). В сучасних мультичастотних моніторах дані параметри наведені у вигляді діапазону, а в старих моделях даються конкретні частоти, причому можливість вибору для установки параметрів в них, природно, нижче. Є ще одна важлива частота – число точок, які можуть бути відображені на екрані за одну секунду (DCF). Електронний промінь переміщається по екрану з кінцевою швидкістю, яка обмежена параметрами мікросхем відеоадаптера. І, нарешті, самий істотний параметр для користувача – це частота оновлення екрана (SRR), Її рекомендується встановлювати не менше 72 Гц, тому що при даному параметрі людське око вже не помічає мерехтіння, відповідно, чим вище цей параметр, тим комфортніше працювати. Але є істотне обмеження – частота оновлення екрану не може бути більше, ніж тактова частота розгортки (DCF), поділена на твір числа точок в рядку і числа рядків на екрані (а бажано менше, адже необхідно ще якийсь час для повернення променя).

Ще одне обмеження пов’язане з обсягом пам’яті відеоадаптера. Як ви знаєте, колір кожної точки формується з трьох основних кольорів – червоного, зеленого та блакитного. Зображення для виводу формується в відеопам’яті, звідси і обмеження на кількість кольорів для кожної точки.

Наприклад, для дозволу 1024х768 при 256-колірної моделі (1 байт) буде потрібно 1024х768х1 = 786432 байт = 768 Кб, а для 16 мільйонів кольорів для кожної точки (4 байта) – 1024х768х4 = 3145728 байт = 3072 Кб, т. е. 2 Мб відеокартка вже не потягне. Навіщо я вам все це пояснюю, запитаєте ви. Справа в тому, що, як надалі ви самі переконаєтеся, з відеопідсистеми під Linux’ом можна витягнути більше, ніж під Windows.

Синхронізація являє собою імпульси з великою шпаруватістю, тобто тривалість імпульсу мала в порівнянні з тривалістю паузи між імпульсами: низький рівень порядку 0.8 вольт, високий – 2.4 вольта. Активним рівнем може бути і той і інший. Все це можна налаштувати в XFree за допомогою прапорів-vsync, + vsync,-hsync, + hsync, де vsync – активний рівень кадрової розгортки, а hsync – малої.

І ще один момент: яскравість люмінофору монітора загасає після опромінення по експоненті. Частота 72 Гц відповідає 1/72 секунді = 13.8 мс, а 85 Гц – 11.7. Різниця в 2.1 мс може привести до того, що люмінофор не встигне повністю затухнути, і з’являться так звані пульсації, Які спотворюють зображення. Це, звичайно, залежить від якості люмінофора, але в жодному разі не слід насичувати люмінофор, врубу його на всю яскравість.

Тепер трохи практики: давайте порахуємо рядкову частоту. Наприклад, ми хочемо домогтися 85 Гц при 1024х800. Множимо 85 на 800, отримуємо 68 кГц. Чи дозволяє ваш монітор це?

Я думаю, що теорії на сьогодні вистачить. Якщо кого зацікавило, нехай почитає XFree86-Video-Timings HOWTO. Дізнатися всю доступну лінійку частот можна, набравши в консолі (не під X-Window) наступну команду:

Потім відкрийте сгенерірований файл. Ці ж параметри висвічуються і при запуску, але навряд чи ви встигнете там щось прочитати.

Якщо у вас вже налаштована система, і ви хочете тільки змінити параметри, можна для початку скористатися графічними утилітами. наберіть у командному рядку XFDrake, дайте відповідь на питання, якою версією XFree ви хочете користуватися. Тут необхідно враховувати, що версії 4.х.х підходять до сучасних видеоадаптерам, а для старих сумісності заради в кожному дистрибутиві залишена версія 3.3.6 (У мене, наприклад відеочіп Riva128 трирічної давності при установці сервера 4.1.0 дає темне зображення). Далі виберіть глибину кольору і екранне дозвіл, якщо натиснете кнопку Show all, То отримаєте повний список доступного дозволу.

Далі протестуйте настройки, якщо зображення вас цілком влаштовує, дайте відповідь ствердно на питання, чи залишити обрану конфігурацію. З’явиться меню, де ви можете змінити настройки відеокарти, монітора – загалом, все, що пов’язано з відеопідсистемою комп’ютера. На цьому можна було б і зупинитися, але хотілося б зробити застереження: мною помічено, що монітори Samsung і сучасні відеокарти на чіпі від nVidia дають в Linux частоту кадрової розгортки таку ж, як і в MS Windows. Я думаю, що це пов’язано з поширеністю цих девайсів і політикою цих фірм – наприклад, на сайті nVidia поруч з «детонаторами» лежать бінарники і під Linux. Але є категорія виробів, причому вельми обширна, у яких дана частота істотно нижче очікуваної. У мене, наприклад, за замовчуванням при вирішенні 1024х768 встановлюється 70 Гц (в Windows – 85 Гц). Тому щоб зберегти зір і не скупити, як писав один товариш в листі, весь Visin, будемо настроювати цей параметр вручну.

Настроювальний файл системи X-Window називається XF86Config і знаходиться він в підкаталозі / etc/X11 /. Це звичайний ASCII-файл, т. е. його можна відкрити в будь-якому текстовому редакторі і відредагувати (під root). Відразу попереджаю, що деякі параметри налаштування цього файлу можуть пошкодити обладнання, так що – на ваш страх і ризик. Не впевнені – краще не чіпайте.

Файл розбитий на розділи (Section):

  • Files – Список каталогів шрифтів і rgb-файлів;
  • ServerFlags – Установка прапорів сервера;
  • Keyboard – Я думаю, зрозуміло, що там налаштовувати;

  • Pointer – Миша;
  • Monitor – Опис монітора;
  • Device – Опис відеоадаптера;
  • Screen – Опис екрану на основі інформації з розділів.

    Файл має кардинальне значення в настройці X-Window, тому я зупинюся на деяких цікавих параметрах. В Files ми побачимо рядок FontPath “unix /: -1” – це означає, що опис шрифтів знаходиться «на своєму місці» тобто в / etc/X11/fs/config. У секції ServerFlags наступні цікаві параметри (досить розкоментувати): DontZap – скасування команди закінчення роботи сервера Ctrl + Alt + BackSpace, DontZoom – скасування дозволу перемикання графічних режимів Ctrl + Alt + KP + (-). Рекомендую залишити їх як є, т. е. закомментірованимі. У розділі Keyboard в параметрі XkbOptions можна змінити розкладку: наприклад, XkbOptions “grp: ctrl_shift_toggle” – перемикання по Ctrl + Shift, “grp: caps_toggle” – по CapsLock (моя улюблена). У секції Monitor параметри HorizSync і VertRefresh відповідають за допустиму частоту горизонтальної (в кГц) і вертикальної розгортки відповідно. Вставте сюди реальні значення з документації до вашого монітора – від цих параметрів залежить успіх нашого аж ніяк не безнадійної справи.

    І нарешті, ми добралися до потрібного нам параметра – ModeLine, Він як раз і описує режим роботи монітора. Формат запису такий:

    де “mode_name” – опис назви режиму. Можна назвати в принципі як завгодно, хоч “crazy_modes”, але якщо подивитеся в файл, то побачите назви куди більш осмислені. Запис “1024×768”, наприклад, відображає дозвіл, який буде виставлено при включенні даного режиму. Це “mode_name” використовується в якості посилання на назву режиму в Section “Screen”, Subsection “Display”, Modes “mode_name”. Режими встановлюються в порядку перерахування. Наприклад, Modes “1024×768” “800×600” “640×480”, показує, що першим буде “1024×768”, але доступні і інші два. Так, в Section “Screen” є параметр DefaultColorDepth, який показує значення глибини кольору за замовчуванням, і тому, наприклад, при DefaultColorDepth 32 необхідно шукати субсекцію “Display” з параметром Depth, рівним значенню за замовчуванням (в нашому випадку 32). Наступний параметр – Частота тактового генератора, або, якщо точніше, частота видачі точок на монітор. Це число виражається в мегагерцах і може бути речовим, наприклад, 94.50. H1 .. H4 [чотири числа, що відповідають за горизонтальну розгортку (рядкову синхронізацію)]. V1 .. V4 [чотири числа, що відповідають за вертикальну розгортку (кадрову синхронізацію)]. Flags.

    Під останнім параметром маються на увазі прапори, що задають тонкощі розгортки. Деякі з них вам знайомі – це vsync і hsync. Може бути ще + csync і-csync – полярність врізок синхронізації в повний (композитний) сигнал. У двох словах: можна використовувати як окрему синхронізацію, так і синхронізацію по зеленому каналу, але краще не чіпати цей параметр. Прапор Interlace – черезрядкової режим, Як у телевізорі; забудьте відразу. Ще залишився doublescan – компенсує недолік рядків, наприклад, якщо розглядати картинку з малим дозволом на великому екрані. Можете видалити (закоментувати) в створеному файлі XF86Config всі рядки з останніми двома параметрами, щоб не плуталися під ногами. Параметри V1 .. V4, H1 .. H4 записані у вигляді, зручному для відеоадаптера, а не для людини. Формул перекладу давати я не буду, хоча в старих дистрибутивах доводилося виводити їх практично вручну. Але за вікнами (але не Windows :-)!) – ХХI століття, і знайшлися люди, трохи автоматизировавшиеся цей процес. Ось, маємо рядок:

    Як дізнатися, яка частота буде на виході? Правильна відповідь – по коментарю над нею. А якщо серйозно, то формула така:

    Fраз = D x 1000000 / (H4 x V4)

    т. е. в нашому прикладі Fраз = 94.50х1000 000 / (1376х808) = 84.99 Гц. Але тут не все так просто: підставивши значення у файл, я не отримав очікуваного результату. Вся справа в тому, що, наскільки я зрозумів логіку зчитування параметрів, Х-сервер зчитує потрібний параметр починаючи з першого значення у файлі до необхідного, на його думку, для нормальної роботи (стабільного). У мене для дозволу 1024×768 спочатку йде значення для частоти 60 Гц, потім 72 Гц і вищеописане. Якщо перемістити його в початок файлу, то Х-сервер його пропустить як невідповідний (знову ж, на його думку). Запустити його вдалося, лише закоментувавши всі інші рядки з параметром mode_name рівним 1024×768, і тут почалися всілякі збої в роботі, спотворення зображення та інші неполадки. А чому, запитаєте ви, адже під Windows при частоті 85 Гц все нормально? Вся справа якраз в цифрах вертикальної і горизонтальної розгортки т. е. в наших H1 .. Н4 і V1 .. V4. Вихід є: або на свій страх і ризик пограти цими параметрами (за допомогою них можна заодно і відцентрувати зображення – про це, я думаю, ви вже здогадалися) і добитися нормального неспотвореного зображення, або скористатися утилітою xvidtune. Відразу обмовлюся: з її допомогою максимальних результатів, на жаль, не можна добитися (у мене, наприклад, вийшло всього 80 Гц), але зате і ризик мінімальний. Втім, потім все одно можна підігнати параметри ближче до потрібних, але з меншим ризиком – знизу, так сказати.

    Якщо готові, то приступимо до роботи. наберіть у командному рядку xvidtune – вискочить попередження про небезпеку даної операції; якщо впевнені (а по-іншому просто й бути не може), то сміливо тисніть Yes. З’явиться вікно настройки. Призначення багатьох параметрів, таких як Left, Right, Wider, Narrower, Up, Down, Shorter, Taller (ой, пиво в холодильнику, зачекайте … Минуло 10 хвилин :-)), я думаю, очевидні. Натисніть кнопку Auto, Щоб параметри негайно вступали в силу, і пограйте настройками, поки не з’явиться попередження.

    Але навіть після цього варто зменшити значення останнього перебудовується параметра і спробувати інший. Ваше завдання – домогтися максимального значення частоти розгортки (відображається у правому нижньому куті). Коли доб’єтеся, то натисніть кнопку Show, І у вікні терміналу з’явиться згенерувала рядок зі значенням параметра ModeLine. Далі виділіть його мишкою, відкрийте файл / etc/X11/XF86Config і, клацнувши середньою кнопкою (у кого є), вставте значення першим за списком. На початку рядка напишіть: ModeLine. Перезавантажте Х-сервер. Все, результат, як говориться, у наявності. Якщо не вийшло, то просто закоментуйте всі непотрібні ModeLine, залиште тільки ваш варіант, але будьте обережні – одного разу у мене вийшла при 1024×768 частота 93.6 Гц. Ну, а що можна зробити далі, я вже пояснював (все на ваш страх і ризик, природно). Природно, є можливість виставити нестандартний відеорежим. І наостанок, ще один цікавий параметр в секції Screen. Якщо вставити в використовувану субсекцію Display параметр Virtual зі значенням, більшим дозволу вашого монітора (якщо у вас достатньо відеопам’яті), то можна отримати віртуальний екран, що перевершує розмірами ваш робочий стіл. В цьому випадку віртуальний екран буде автоматично прокручуватися при виході покажчика миші за межі фізичного екрану. І ще: я думаю, незайвим буде нагадати про збереження резервної копії змінюваного файлу. У разі неполадки можна просто зайти в консольному режимі і скопіювати резервний файл на місце старого. В крайньому випадку, в консолі введіть команду / usr/X11R6/bin/xf86config і згенеруйте файл за допомогою цієї команди.

    Як бачите, в Linux можна налаштувати практично все і вся, треба тільки знати, де і як. Від себе можу додати, що поки я не почав вивчати Linux, я тільки думав, що знаю, як працює комп’ютер. Тому читайте якомога більше – в системі, по-моєму, достатньо документації. І ще: якщо хоч один юзер віддасть перевагу індустріального світу Б.Г. казковий, повний загадок світ OpenSource (і нагодує хоч одного пінгвіна :-)), то я вважаю, що стаття досягла своєї мети подвійно. Якщо є питання, адреса є, відразу відповісти не обіцяю, але без уваги не залишу. Успіхів!

    Linux forever

    Схожі статті:


    Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

    Коментарів поки що немає.

    Ваш отзыв

    Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

    *

    *