Теперь файл XF86Config готов, за исключением только полной информации о видеоадаптере. Для того, чтобы эту информацию получить, будет использован X-сервер. Затем эта информация будет занесена в файл XF86Config.
Эту процедуру можно обойти, поскольку для многих видеоадаптеров параметры, которые надо заносить в файл XF86Config, перечислены в файлах modeDB.txt, AccelCards и Devices. Все эти файлы можно найти в каталоге /usr/X11R6/lib/X11/doc. Кроме того, имеются различные файлы README для различных наборов микросхем. В этих файлах можно найти такую информацию, как частота тактового генератора, тип микросхем и другие параметры. Если какая-либо информация, нужная для файла XF86Config, отсутствует, ее можно определить с помощью описанной ниже процедуры.
В большинстве приведенных ниже примеров демонстрируется конфигурация для видеоадаптера #9 GXE 64, в котором использован набор микросхем XF86_S3. Во-первых, надо определить название набора микросхем. Эта информация может быть получена программой SuperProbe, которая находится в каталоге /usr/X11R6/bin, однако нужно указать то имя, под которым этот набор микросхем известен X-серверу. Для этого надо ввести команду X -showconfig В результате будет выдано имя набора микросхем, которое использует X-сервер. Список этих имен также приведен в экранной документации. Например, ускоренный сервер XF86_S3 выдаст следующее: XFree86 Version 3.1 / X~Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patchlevel 0) mmio_928, s3_generic Имена наборов микросхем, которые можно использовать для данного сервера -- mmio_928 и s3_generic. В экранной документации к XF86_S3 описаны эти наборы микросхем и те видеоадаптеры, в которых они используются. Для видеоадаптера #9 GXE 64 подходит имя mmio_928. Если тип микросхем неизвестен, его можно определить с помощью X-сервера. Для этого, если используется оболочка bash, надо ввести команду \verb!X -probeonly > /tmp/x.out 2>&1 ! а если используется оболочка csh, то команду \verb!X -probeonly &> /tmp/x.out ! Эту команду надо запускать на незагруженной системе, т.е. в системе больше ничего не должно происходить. Данная команда также определяет частоты тактового генератора видеоадаптера (см. ниже), а если в системе работают другие программы, то эти вычисления могут оказаться неверными. Результаты работы указанных команд будут записаны в файл /tmp/x.out. В нем должны быть примерно следующие строки: XFree86 Version 3.1 / X~Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patchlevel 0) mmio_928, s3_generic Несколько строк пропущено... (--) S3: card type: 386/486 localbus (--) S3: chipset: 864 rev. 0 (--) S3: chipset driver: mmio_928 Для данного X-сервера (здесь -- XF86_S3) имеется два имени для наборов микросхем: mmio_928 и s3_generic. Сервер нашел, что обнаруженный им видеоадаптер имеет набор mmio_928. В разделе Device файла XF86Config теперь надо добавить строку Chipset, в которой будет указано найденное выше имя. Пример такой строки: Section "Device" # Строка Identifier здесь уже была... Identifier "#9 GXE 64" # а эту строку мы сейчас добавляем: Chipset "mmio_928" EndSection Теперь надо определить управляющие частоты тактового генератора, используемые в видеоадаптере. С этой частотой видеоадаптер посылает пикселы на монитор. Как уже упоминалось выше, с каждым разрешением монитора ассоциируется определенная частота тактового генератора. Требуется определить, какие частоты имеются в данном адаптере. Во-первых, нужно обратиться к упомянутой выше документации и попытаться найти допустимые частоты видеоадаптера там. Обычно это список из 8 или 16 величин (в мегагерцах). Например, в файле modeDB.txt для видеоадаптера Cardinal ET4000 можно найти следующую строку: # chip ram virtual clocks default-mode flags ET4000 1024 1024 768 25 28 38 36 40 45 32 0 "1024x768" Таким образом, частотами для этого адаптера являются 25, 28, 38, 36, 40, 45, 32 и 0 мегагерц. Теперь в раздел Devices файла XF86Config можно добавить строку Clocks, в которой будет список частот тактового генератора, установленного на видеоадаптере. Например, для списка, приведенного выше, это будет следующая строка: Clocks 25 28 38 36 40 45 32 0 Ее нужно разместить в разделе Devices вслед за строкой Chipset. Порядок указания частот тактового генератора важен. Нельзя менять порядок следования чисел или удалять повторяющиеся. Если не удается получить информацию об этих частотах, то ее можно также получить с помощью X-сервера. Надо использовать команду X -probeonly, как это показано выше. Выдача этой команды должна содержать строки, выглядящие примерно следующим образом: (-) S3: clocks: 25.18 28.32 38.02 36.15 40.33 45.32 32.00 00.00 Потом в раздел Devices файла XF86Config можно добавить строку Clocks, в которой можно указать все эти числа так, как они даны здесь. В файле XF86Config можно использовать несколько строк Clocks если все значения не помещаются на одной строке (иногда бывает более 8 значений). При этом также нужно следить за тем, чтобы порядок следования частот в списке не нарушался. При использовании команды X -probeonly надо убедиться, что в разделе Devices нет ни одной строки Clocks (или что все они закомментированы). Если такая строка будет присутствовать, то сервер будет не определять частоту, а использовать значения, данные в файле XF86Config. В некоторых видеоадаптерах используются программируемые тактовые генераторы. Эта информация может содержаться в экранной документации к X-серверу или в файле README, который относится к данному типу видеоадаптеров. Такая микросхема позволяет X-серверу указывать видеоадаптеру, с какой частотой должен работать тактовый генератор. Для таких адаптеров список частот тактового генератора в указанных выше файлах может отсутствовать. Этот же список, выданный командой X -probeonly, будет содержать лишь одну или две фиксированных величины, а остальные будут либо повторами, либо нулями. Возможно, что X-сервер выдаст явное предупреждение о том, что в видеоадаптере имеется программируемый тактовый генератор. Предупреждение может быть таким: (-) SVGA: cldg5434: Specifying a Clocks line makes no sense for this driver (указывать значение Clocks для этого драйвера бессмысленно). Данный пример показывает реакцию сервера XF86_SVGA на видеоадаптер Cirrus Logic PCI. Для видеоадаптеров с программируемым тактовым генератором вместо строки Clocks в файле XF86Config следует использовать строку ClockChip. В этой строке надо назвать тип микросхемы программируемого тактового генератора; экранная документация для каждого сервера подскажет эти имена. Например, в файле README.S3 можно увидеть, что несколько видеоадаптеров S3-864 используют микросхему "ICD2061A" в качестве тактового генератора, и что в этом случае надо сформировать следующую строку: \verb! ClockChip "icd2061a" ! Эта строка будет использоваться вместо строки Clocks в файле XF86Config. Подобно строке Clocks, эта строка помещается в разделе Devices после строки Chipset. Аналогично, для некоторых видеоадаптеров требуется, чтобы в файле XF86Config был указан тип микросхемы RAMDAC. Для этого используется строчка Ramdac. Данная опция описана в экранной документации к XF86_Accel. Часто верные значения может определить сам X-сервер. Некоторым видеоадаптерам нужно, чтобы было указано несколько опций в разделе Devices файла XF86Config. Эти опции описаны в экранной документации к серверу, а также в различных файлах, таких как README.cirrus и README.S3. Эти опции можно включить с помощью строки Option. Например, для видеоадаптера #9 GXE 64 требуются две опции: \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" ! X-сервер может работать и без строк Option, однако они нужны, если надо получить максимальную производительность видеоадаптера. Этих опций слишком много, чтобы их можно было здесь перечислить, и эти опции различны для различных адаптеров. Список этих опций для конкретного видеоадаптера надо искать в экранной документации к X-серверу и в различных файлах в каталоге /usr/X11R6/lib/X11/doc. Окончательно, раздел Devices будет выглядеть примерно так: \verb!Section "Device" !\\ \verb! # Этот раздел Device подходит только адаптеру #9 GXE 64!!\\ \verb! Identifier "#9 GXE 64" !\\ \verb! Chipset "mmio_928" !\\ \verb! ClockChip "icd2061a" !\\ \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" !\\ \verb!EndSection ! В разделе Devices могут быть и другие строки. О тонких деталях можно узнать из экранной документации к X-серверу.
Для этого надо ввести команду
X -showconfig
XFree86 Version 3.1 / X~Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patchlevel 0) mmio_928, s3_generic
Имена наборов микросхем, которые можно использовать для данного сервера -- mmio_928 и s3_generic. В экранной документации к XF86_S3 описаны эти наборы микросхем и те видеоадаптеры, в которых они используются. Для видеоадаптера #9 GXE 64 подходит имя mmio_928. Если тип микросхем неизвестен, его можно определить с помощью X-сервера. Для этого, если используется оболочка bash, надо ввести команду \verb!X -probeonly > /tmp/x.out 2>&1 ! а если используется оболочка csh, то команду \verb!X -probeonly &> /tmp/x.out ! Эту команду надо запускать на незагруженной системе, т.е. в системе больше ничего не должно происходить. Данная команда также определяет частоты тактового генератора видеоадаптера (см. ниже), а если в системе работают другие программы, то эти вычисления могут оказаться неверными. Результаты работы указанных команд будут записаны в файл /tmp/x.out. В нем должны быть примерно следующие строки: XFree86 Version 3.1 / X~Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patchlevel 0) mmio_928, s3_generic Несколько строк пропущено... (--) S3: card type: 386/486 localbus (--) S3: chipset: 864 rev. 0 (--) S3: chipset driver: mmio_928 Для данного X-сервера (здесь -- XF86_S3) имеется два имени для наборов микросхем: mmio_928 и s3_generic. Сервер нашел, что обнаруженный им видеоадаптер имеет набор mmio_928. В разделе Device файла XF86Config теперь надо добавить строку Chipset, в которой будет указано найденное выше имя. Пример такой строки: Section "Device" # Строка Identifier здесь уже была... Identifier "#9 GXE 64" # а эту строку мы сейчас добавляем: Chipset "mmio_928" EndSection Теперь надо определить управляющие частоты тактового генератора, используемые в видеоадаптере. С этой частотой видеоадаптер посылает пикселы на монитор. Как уже упоминалось выше, с каждым разрешением монитора ассоциируется определенная частота тактового генератора. Требуется определить, какие частоты имеются в данном адаптере. Во-первых, нужно обратиться к упомянутой выше документации и попытаться найти допустимые частоты видеоадаптера там. Обычно это список из 8 или 16 величин (в мегагерцах). Например, в файле modeDB.txt для видеоадаптера Cardinal ET4000 можно найти следующую строку: # chip ram virtual clocks default-mode flags ET4000 1024 1024 768 25 28 38 36 40 45 32 0 "1024x768" Таким образом, частотами для этого адаптера являются 25, 28, 38, 36, 40, 45, 32 и 0 мегагерц. Теперь в раздел Devices файла XF86Config можно добавить строку Clocks, в которой будет список частот тактового генератора, установленного на видеоадаптере. Например, для списка, приведенного выше, это будет следующая строка: Clocks 25 28 38 36 40 45 32 0 Ее нужно разместить в разделе Devices вслед за строкой Chipset. Порядок указания частот тактового генератора важен. Нельзя менять порядок следования чисел или удалять повторяющиеся. Если не удается получить информацию об этих частотах, то ее можно также получить с помощью X-сервера. Надо использовать команду X -probeonly, как это показано выше. Выдача этой команды должна содержать строки, выглядящие примерно следующим образом: (-) S3: clocks: 25.18 28.32 38.02 36.15 40.33 45.32 32.00 00.00 Потом в раздел Devices файла XF86Config можно добавить строку Clocks, в которой можно указать все эти числа так, как они даны здесь. В файле XF86Config можно использовать несколько строк Clocks если все значения не помещаются на одной строке (иногда бывает более 8 значений). При этом также нужно следить за тем, чтобы порядок следования частот в списке не нарушался. При использовании команды X -probeonly надо убедиться, что в разделе Devices нет ни одной строки Clocks (или что все они закомментированы). Если такая строка будет присутствовать, то сервер будет не определять частоту, а использовать значения, данные в файле XF86Config. В некоторых видеоадаптерах используются программируемые тактовые генераторы. Эта информация может содержаться в экранной документации к X-серверу или в файле README, который относится к данному типу видеоадаптеров. Такая микросхема позволяет X-серверу указывать видеоадаптеру, с какой частотой должен работать тактовый генератор. Для таких адаптеров список частот тактового генератора в указанных выше файлах может отсутствовать. Этот же список, выданный командой X -probeonly, будет содержать лишь одну или две фиксированных величины, а остальные будут либо повторами, либо нулями. Возможно, что X-сервер выдаст явное предупреждение о том, что в видеоадаптере имеется программируемый тактовый генератор. Предупреждение может быть таким: (-) SVGA: cldg5434: Specifying a Clocks line makes no sense for this driver (указывать значение Clocks для этого драйвера бессмысленно). Данный пример показывает реакцию сервера XF86_SVGA на видеоадаптер Cirrus Logic PCI. Для видеоадаптеров с программируемым тактовым генератором вместо строки Clocks в файле XF86Config следует использовать строку ClockChip. В этой строке надо назвать тип микросхемы программируемого тактового генератора; экранная документация для каждого сервера подскажет эти имена. Например, в файле README.S3 можно увидеть, что несколько видеоадаптеров S3-864 используют микросхему "ICD2061A" в качестве тактового генератора, и что в этом случае надо сформировать следующую строку: \verb! ClockChip "icd2061a" ! Эта строка будет использоваться вместо строки Clocks в файле XF86Config. Подобно строке Clocks, эта строка помещается в разделе Devices после строки Chipset. Аналогично, для некоторых видеоадаптеров требуется, чтобы в файле XF86Config был указан тип микросхемы RAMDAC. Для этого используется строчка Ramdac. Данная опция описана в экранной документации к XF86_Accel. Часто верные значения может определить сам X-сервер. Некоторым видеоадаптерам нужно, чтобы было указано несколько опций в разделе Devices файла XF86Config. Эти опции описаны в экранной документации к серверу, а также в различных файлах, таких как README.cirrus и README.S3. Эти опции можно включить с помощью строки Option. Например, для видеоадаптера #9 GXE 64 требуются две опции: \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" ! X-сервер может работать и без строк Option, однако они нужны, если надо получить максимальную производительность видеоадаптера. Этих опций слишком много, чтобы их можно было здесь перечислить, и эти опции различны для различных адаптеров. Список этих опций для конкретного видеоадаптера надо искать в экранной документации к X-серверу и в различных файлах в каталоге /usr/X11R6/lib/X11/doc. Окончательно, раздел Devices будет выглядеть примерно так: \verb!Section "Device" !\\ \verb! # Этот раздел Device подходит только адаптеру #9 GXE 64!!\\ \verb! Identifier "#9 GXE 64" !\\ \verb! Chipset "mmio_928" !\\ \verb! ClockChip "icd2061a" !\\ \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" !\\ \verb!EndSection ! В разделе Devices могут быть и другие строки. О тонких деталях можно узнать из экранной документации к X-серверу.
Если тип микросхем неизвестен, его можно определить с помощью X-сервера. Для этого, если используется оболочка bash, надо ввести команду
\verb!X -probeonly > /tmp/x.out 2>&1 !
\verb!X -probeonly &> /tmp/x.out !
Эту команду надо запускать на незагруженной системе, т.е. в системе больше ничего не должно происходить. Данная команда также определяет частоты тактового генератора видеоадаптера (см. ниже), а если в системе работают другие программы, то эти вычисления могут оказаться неверными.
Результаты работы указанных команд будут записаны в файл /tmp/x.out. В нем должны быть примерно следующие строки:
XFree86 Version 3.1 / X~Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patchlevel 0) mmio_928, s3_generic Несколько строк пропущено... (--) S3: card type: 386/486 localbus (--) S3: chipset: 864 rev. 0 (--) S3: chipset driver: mmio_928
XFree86 Version 3.1 / X~Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux
Configured drivers:
S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
mmio_928, s3_generic
(--) S3: card type: 386/486 localbus
(--) S3: chipset: 864 rev. 0
(--) S3: chipset driver: mmio_928
Для данного X-сервера (здесь -- XF86_S3) имеется два имени для наборов микросхем: mmio_928 и s3_generic. Сервер нашел, что обнаруженный им видеоадаптер имеет набор mmio_928.
В разделе Device файла XF86Config теперь надо добавить строку Chipset, в которой будет указано найденное выше имя. Пример такой строки:
Section "Device" # Строка Identifier здесь уже была... Identifier "#9 GXE 64" # а эту строку мы сейчас добавляем: Chipset "mmio_928" EndSection
Теперь надо определить управляющие частоты тактового генератора, используемые в видеоадаптере. С этой частотой видеоадаптер посылает пикселы на монитор. Как уже упоминалось выше, с каждым разрешением монитора ассоциируется определенная частота тактового генератора. Требуется определить, какие частоты имеются в данном адаптере.
Во-первых, нужно обратиться к упомянутой выше документации и попытаться найти допустимые частоты видеоадаптера там. Обычно это список из 8 или 16 величин (в мегагерцах). Например, в файле modeDB.txt для видеоадаптера Cardinal ET4000 можно найти следующую строку:
# chip ram virtual clocks default-mode flags ET4000 1024 1024 768 25 28 38 36 40 45 32 0 "1024x768"
Таким образом, частотами для этого адаптера являются 25, 28, 38, 36, 40, 45, 32 и 0 мегагерц.
Теперь в раздел Devices файла XF86Config можно добавить строку Clocks, в которой будет список частот тактового генератора, установленного на видеоадаптере. Например, для списка, приведенного выше, это будет следующая строка:
Clocks 25 28 38 36 40 45 32 0
Порядок указания частот тактового генератора важен. Нельзя менять порядок следования чисел или удалять повторяющиеся.
Если не удается получить информацию об этих частотах, то ее можно также получить с помощью X-сервера. Надо использовать команду X -probeonly, как это показано выше. Выдача этой команды должна содержать строки, выглядящие примерно следующим образом:
(-) S3: clocks: 25.18 28.32 38.02 36.15 40.33 45.32 32.00 00.00
Потом в раздел Devices файла XF86Config можно добавить строку Clocks, в которой можно указать все эти числа так, как они даны здесь. В файле XF86Config можно использовать несколько строк Clocks если все значения не помещаются на одной строке (иногда бывает более 8 значений). При этом также нужно следить за тем, чтобы порядок следования частот в списке не нарушался.
При использовании команды X -probeonly надо убедиться, что в разделе Devices нет ни одной строки Clocks (или что все они закомментированы). Если такая строка будет присутствовать, то сервер будет не определять частоту, а использовать значения, данные в файле XF86Config.
В некоторых видеоадаптерах используются программируемые тактовые генераторы. Эта информация может содержаться в экранной документации к X-серверу или в файле README, который относится к данному типу видеоадаптеров. Такая микросхема позволяет X-серверу указывать видеоадаптеру, с какой частотой должен работать тактовый генератор. Для таких адаптеров список частот тактового генератора в указанных выше файлах может отсутствовать. Этот же список, выданный командой X -probeonly, будет содержать лишь одну или две фиксированных величины, а остальные будут либо повторами, либо нулями. Возможно, что X-сервер выдаст явное предупреждение о том, что в видеоадаптере имеется программируемый тактовый генератор. Предупреждение может быть таким:
(-) SVGA: cldg5434: Specifying a Clocks line makes no sense for this driver
(указывать значение Clocks для этого драйвера бессмысленно). Данный пример показывает реакцию сервера XF86_SVGA на видеоадаптер Cirrus Logic PCI.
Для видеоадаптеров с программируемым тактовым генератором вместо строки Clocks в файле XF86Config следует использовать строку ClockChip. В этой строке надо назвать тип микросхемы программируемого тактового генератора; экранная документация для каждого сервера подскажет эти имена. Например, в файле README.S3 можно увидеть, что несколько видеоадаптеров S3-864 используют микросхему "ICD2061A" в качестве тактового генератора, и что в этом случае надо сформировать следующую строку:
\verb! ClockChip "icd2061a" !
Аналогично, для некоторых видеоадаптеров требуется, чтобы в файле XF86Config был указан тип микросхемы RAMDAC. Для этого используется строчка Ramdac. Данная опция описана в экранной документации к XF86_Accel. Часто верные значения может определить сам X-сервер.
Некоторым видеоадаптерам нужно, чтобы было указано несколько опций в разделе Devices файла XF86Config. Эти опции описаны в экранной документации к серверу, а также в различных файлах, таких как README.cirrus и README.S3. Эти опции можно включить с помощью строки Option. Например, для видеоадаптера #9 GXE 64 требуются две опции: \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" ! X-сервер может работать и без строк Option, однако они нужны, если надо получить максимальную производительность видеоадаптера. Этих опций слишком много, чтобы их можно было здесь перечислить, и эти опции различны для различных адаптеров. Список этих опций для конкретного видеоадаптера надо искать в экранной документации к X-серверу и в различных файлах в каталоге /usr/X11R6/lib/X11/doc. Окончательно, раздел Devices будет выглядеть примерно так: \verb!Section "Device" !\\ \verb! # Этот раздел Device подходит только адаптеру #9 GXE 64!!\\ \verb! Identifier "#9 GXE 64" !\\ \verb! Chipset "mmio_928" !\\ \verb! ClockChip "icd2061a" !\\ \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" !\\ \verb!EndSection ! В разделе Devices могут быть и другие строки. О тонких деталях можно узнать из экранной документации к X-серверу.
\verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" !
Окончательно, раздел Devices будет выглядеть примерно так:
\verb!Section "Device" !\\ \verb! # Этот раздел Device подходит только адаптеру #9 GXE 64!!\\ \verb! Identifier "#9 GXE 64" !\\ \verb! Chipset "mmio_928" !\\ \verb! ClockChip "icd2061a" !\\ \verb! Option "number_nine" !\\ \verb! Option "dac_8_bit" !\\ \verb!EndSection !