FAQ: 2 монитора в линуксе - как?

Last changed @Sun Sep 24 16:48:22 2000

Авторство: Олли Артемьев, 2:5020/1354, olli@digger.NOSPAMorg.ru
thanx: читателям ru.linux, ru.unix.linux, br.local , дополнявшим и корректировавшим мои ответы.

Персонально: Serge B. Khvatov (xbatov@techno.spbNOSPAM.ru),
Roman_Yavnik@p35.f5.n5009NOSPAM.z2.fidonet.org (Roman Yavnik),
Zahar_Kiselev@p1.f382.n5030.z2.fidonetNOSPAM.org (Zahar Kiselev)
Igor_Nikolaev@f266.n5030.z2.fidonet.NOSPAMorg (Igor Nikolaev)

Перед тем как писать на любой email из этого FAQ надо из домена удалить NOSPAM.

ежели кого не упомнил - потому что письма не сохранились.

Да, если вдруг Вы решили написать добавку/поправку - пишите на netmail или email. В эхе я могу просто пропустить это.

лицензия: вставляйте свободно в любой _не_ коммерческий продукт - почти GNU.

Постится периодически кроном. Люди знающие могут ставить twit на Subj, он меняться не будет.

Формат:
Q: = question
A: = answer
C: = FAQ author comments.


Q: А для кого?
A: FAQ предназначен для тех кто собрался прикрутить второй монитор (MDA или
A: Hercules ) на линуксячую тачку.

Q: А зачем?
A: Hу например смотреть логи и работать одновременно. Или работать с
A: отладчиком видя не порюханный вывод программы.

Q: А что эт такое - MDA?
A: Monochrome Display Adapter - первый, или один из первых, созданных для
A: IBMish PC. Поддерживает только текстовый режим и оттенки двух цветов.
A: За подробным описанием в книги по железу, в teach-help и прочие справочники.
A: По памяти не конфликтует с (S)VGA и CGA, поэтому можно воткнуть без проблем
A: одновременно c ними. Hercules совместим с MDA, плюс возможность работать в
A: графике, цветов в некоторых режимах не меньше. с точки зрения данного FAQ
A: это одно и тоже. =) За полным описанием обращаться туда же. Да, кстати,
A: Hercules и MDA отличаются картой. Монитор , естейственно, будет работать и
A: так и так.

Q: И как?
A: Hу для начала вставить MDA карту и подключить MDA монитор. Затем зависит от
A: ядра. В 2.0.x - Х.З., у меня 2.2.x , там для начала cd /usr/src/linux, затем
A: make menuconfig (или make config по вкусу) , -> Console drivers ->
A: -> MDA text console (dual-headed) (EXPERIMENTAL) - тут Yes (для `make
A: config` это CONFIG_MDA_CONSOLE ). Затем кернел собрать и установить согласно
A: KERNEL-HOWTO (hint: find /usr/doc -name KERNEL* ). Затем после перезагрузки
A: с новым кернелом набрать 'dmesg|grep -i mda'. Если появилось что-то вроде:
A: ----------------cut-----------------------
A: mdacon: MDA with 8K of memory detected.
A: Console: switching consoles 13-16 to MDA-2
A: ----------------cut-----------------------
A: то продолжаем дальше, если нет - читай другие FAQ на предмет того, что не
A: получилось из предыдущих шагов.

Q: А у меня нет консолей 13-16. 8-(
A: Hадо сделать mknod для /dev/tty[13-16] , для тех кто забыл как - набрать
A: 'mknod --help'.

Q: А откуда числа брать для mknod?
A: Идешь в /dev, там `ls -l /dev/tty[123]| sort`, смотришь последовательность.
A: Если не доперло - идешь читать /usr/src/linux/Documentation/devices.txt .

Q: А че эт алгоритм нумерации девайсов для консолей не зависит от типа видюхи?!
A: А того, что разработчики так придумали. Hомера, в общем то, они от фонаря
A: назначили, как это ни печально.

Q: А что теперь?
A: Hу например ls > /dev/tty13 - уже должно работать. =)
A: Я вот делаю `tail -f $qicolog > /dev/tty13 < /dev/tty13` из inittab..

Q: А переключаться как?
A: Для этого надо поправить keymap как подсказал Roman Yavnik, поскольку
A: например в дистрибутеиве Red Hat 6.2, грузится укороченная раскладка
A: "расширенных" клавиш, так что к Shift-Alt-F<##> никаких действий по
A: дефолту не прибиндено - создатели дистрибутивов люди не вмеру ленивые:
- ------ кусь (Roman Yavnik)
Q: А как мне пpикpутить к своей комбинации клавиш смену теpминала, к пpимеpу
на 13-ый
A: Для начала нужно опpеделиться откуда ваша система считывает pаскладку
A: клавиатуpы. RH считывает ее из
A: /usr/lib/kbd/keymaps/i386/qwerty/ru-ms.kmap.gz (пpи pаскледке ru-ms).
- ------ кусь (Roman Yavnik)
C: У меня например это /usr/lib/kbd/keytables/ec-koi8.map.gz из пакета
C: easy cirillic.
- ------ кусь (Roman Yavnik)
A: В любом случае это скоpее всего отpажено в логе загpузки (/var/log/boot.log)
- ------ кусь (Roman Yavnik)
C: Где лежит этот файл у вас определяет syslog.conf :
C: ~ (20:22) # grep local7 /etc/syslog.conf
C: local7.* -/var/log/boot
- ------ кусь (Roman Yavnik)
A: Пpимеpно так: Sep 16 12:24:01 localhost keytable:
A: Loading /usr/lib/kbd/keymaps/i386/qwerty/ru-ms.kmap.gz
A: Вот. Тепеpь беpем этот кеймап и pедактиpуем его, лучше пеpенести его в /tmp
A: и там pазвеpнуть (gzip -d filename).
A: Для пpимеpа будем пpикpучивать /dev/tty13 (котоpую вы пpедваpительно создали
A: путем mknod /dev/tty13 c 4 13) к Shift-Alt-F3.
A: В указанном файле ищем "Console_3" (Этого можно и не делать, но лучше
A: дописать смену на 13-ю консоль pядом с 3-ей, тем более, что у нас это почти
A: одно и то же сочетание клавиш). Вы должны наблюдать сpоку вида:
A: alt keycode 61 = Console_3
- ------ кусь (Roman Yavnik)
C: Я у себя в EasyCyrillic'овской раскладке этого не наблюдаю, тем не менее
C: вставив нижеописанный by Roman Yavnik кусок получаю все работающим также
C: как и должно.
- ------ кусь (Roman Yavnik)
A: Смысл этой стpоки я думаю ясен, за исключением того, что такое "Console_3"
A: А "Console_3" это судя по всему заpезеpвиpованное слово, меняющее текущую
A: консоль на 3-ю. Дописав чуть ниже стpоку вида:
A: shift alt keycode 61 = Console_13
A: Получаем то, что и тpебовалось: смену консоли на 13-ю.
A: Для того, чтобы активизиpовать изменения нужно пеpезагpузить, нет, не
A: всю систему Ж), а только лишь кеймап. Делается это очень пpосто:
A: loadkeys /tmp/ru-ms.kmap
A: Тепеpь все должно pаботать. Для пpовеpки:
A: echo i did it > /dev/tty3
A: (Это нужно для активизации консоли)
A: и жмем Shift-Alt-F3
- ------ кусь (Roman Yavnik)
Q: А что это у меня на экране ничего не изменилось?
A: А ты на второй монитор посмотри. =-)
- ------ кусь (Roman Yavnik)
A: Тепеpь пакуем кеймап назад, и списываем туда, где он и был, пpи
A: следующем стаpте система сама считает измененный кеймап.
- ------ кусь (Roman Yavnik)
C: У меня ничего не запаковано. =)
- ------ кусь (Roman Yavnik)
Q: А если я хочу повесить не на функцианальную клавишу?
A: Вот и зpя вы маны по ходу дела не читали... man showkey показывает коды
A: клавиш, его (код) нужно вписать вместо "61" в пpиведенном пpимеpе.
- ------ кусь (Roman Yavnik)

Q: А тут говорят еще какие-то маны сопутствующие?
A: Пожалста: man -a chvt;man -a keymaps;man -a dumpkeys;man -a showkey;
A: man -a kbd_mode

Q: А как и там и там графику, если геркулес?
A: У меня MDA. Хочешь узнать - читай доки или подари мне геркулесовую карту =)
A: Если узнаешь что новое по тематике данного FAQ - пиши, включу в него со
A: ссылкой на первоисточник.

Q: А я хочу два SVGA или EGA, к пpимеpу
A: Для тех кто с железом не знаком:
A: EGA и VGA вместе рабоать не будут. Конфликт по памяти. Два vga могут
A: работать только если карта предусматривает такую возможность, большинство
A: современных плат должны это уметь, хотя я не пробовал ;). true VGA с true
A: VGA вместе не заработают.
A: Геркулес будет работать с любыми другими мониторами, поскольку совместим с
A: MDA. MDA и MDA два на одной машине не будут работать по той же причине -
A: конфликт по памяти, соответственно под вопросом работа совместно MDA и
A: геркулес.
A: PCI & AGP compatible SVGA вместе работать должны без особых конфликтов.
A: Кстати, cd /usr/src/linux-2.2.14;make menuconfig и читать readme к опциям
A: касающимся matroxa.
- ------ кусь Zahar_Kiselev
Поправочка: Во-первых карты должны быть PCI, так как ISA-карты передерутся
сразу из-за отсутствия средств автоконфигурирования, а во-вторых вместе
работать будут только очень немногие модели, которые понимают такой вариант -
остальные передерутся по портам, так как вариантов не предусмотрено.
- ------ кусь Zahar_Kiselev
С: PCI EGA не выпускали, так что EGA+VGA работать не будут в принципе.
C: опять же true VGA большинство не PCI, ну а насчет отельных моделей в этом
C: поминается Matrox - они умеют.

- ------ кусь (Serge B. Khvatov)
> SBK> С другой стороны PCI/AGP SVGA
> SBK> compatible cards могут совмещаться в любых сочетаниях.
>O> Гм.. У меня в связи с этим такой вопрос возникает - как программы это
>O> воспринимать будут. Судя по еще досовскому подходу ( насколько помню по
>O> teach-help ) есть такое понятие как начало видео памяти. Оговорюсь правда,
>O> что я работал на асме только с текстмодой. Задаешь режим, и давай шпарить
>O> видеопамять от некоего адреса к некоему другому адресу - точки, допустим,
>O> нарисовать. Так что получается у второй видюхи видеопамять должна тогда
>O> начинаться с других адресов, а об этом железки на уровне своих BIOS должны
>O> еще как то договориться. Ты абсолютно уверен в том что любая современная
>O> карта будет работать легко с другой такой-же, только лишь из-за того что
>O> выборка будет производиться по разным каналам?

Кажется мы уходим в offtopic. IMHO любая PCI или AGP карта отображает
framebuffer (видеопамять) туда, куда укажет host: А если host ее не
проинициализирует, то и ее framebuffer вообще никуда не отображается.

Тем не менее это как раз та область в которой я работаю. Статистика у меня
пока небольшая - до сих пор клиенты под такие проекты покупали только Matrox.
(проверял я и другие комбинации, пока все работало, но все пары я не проверял
:-) Hо я по работе занимаюсь многомониторными конфигурациями под UNIX.

Так получается что удобнее всего мне работать дома. Это нехорошо, но тестовую
машину с несколькими видеоадапторами мне как-то никто не хочет предоставить.
Зато там получилось два видеоадаптера. Windows 98 безо всякой мистики нашел и
обслужил обе карты (TNT2 & Virge) Для UNIX мне пришлось поставить новый
X-Window (XFree86 v 3.9.18) после чего он обслужил обе карты (это мне
приходится делать не в первый раз, так что это просто)

Еще он поддерживает DGA extention (это для тех. кто жалуется, что нет прямого
доступа к framebuffer то есть к видеопамяти. Так вот - он есть. А мне он нужен
был для того, чтобы работал телевизор на чипе bt848)

Еще XFree v4 должен подерживать Xinerama - то есть построение одного большого
экрана из нескольеих сегмннтов. Это я еще не проверял. но проверю в ближайшее
время.
- ---- кусь (Serge B. Khvatov)

Q: А какие нить известные грабли есть?
A: Hу например я не в курсе как _стандартными_ средствами сресетить MDA без
A: перезагрузки. А между тем dosemu-0.99.13.0 стабильно грохает вывод логов
A: на второй монитор, если ей даже не говорить о его существовании, вернее
A: по моим наблюдениям,она не очищает биты цветности и|или инверсии и вывод
A: хоть и идет, но не заметен - черное на черном. То что для этого можно
A: написать простейшую программу - я и так знаю - как припрет - напишу.=)
A: Впрочем если напишешь таковую - пришли мне - включу в FAQ. =-)
A: Можно правда еще запретить графику или запретить доступ к портам в конфиге
A: эмулятора, но это будет кастрацией эмулятора и естесственно не гуманно и
A: непримлемо для любителей дос-игр.=)

--
--
email (remove NOSPAM before mailing): olli@olli.digger.NOSPAMorg.ru
Bye.Olli.