Я, конечно, в шоке проблема была такой простой, а я её не мог решить так долго!.
Есть у нас старенькая мультипортовка Moxa Smartio C168H/PCI, которая верой и правдой служила нам "долгие годы" под ранними версиями Линуксов. С сайта мохи я давным-давно скачал инсталляцию драйвера (mxser.tgz)и с тех пор - горя не знал. После каждой (штатной/нештатной) переустановки линукса я спокойненько перекомпилировал этот драйвер, создавал файлы устройств /dev/ttyM0, /dev/ttyM1, ... /dev/ttyM7 и наслаждался работой на нескольких портах. Но вот настал чёрный день, и я установил линукс Mandrake 9.2. Спокойненько начал перекомпилировать драйвер для моей моксы и был сильно удивлён количеством ошибок на экране. Не к моей чести будет сказано, я не особо разобрался почему так получилось - похоже "умники", создающие ядро, пересмотрели всю суть своей работы, и те .h-файлы, которые использует "фирменный" драйвер моксы, просто перестали поддерживаться. В этих .h-файлах даже было написано что-то типа "А теперь для того чтобы ваши программы счастливо компилировались, нужно делать всё не так, а вот так..." Но беда то в том, что я не писал этот драйвер, и не знаю что там и как. Короче, мои жалкие попытки переделать исходники закончились закономерным провалом.
"Фигня!" - сказал я себе, - "В этой версии линукса есть свой, встроенный драйвер моксы. Щас мы его запустим..." И действительно, встроенный драйвер моксы (скомпилированный в виде модуля) чудесно запустился. Дальше я с удивлением обнаружил что в системе отсутствуют необходимые файлы устройств /dev/ttM*. "Фигня!" - сказал я себе опять, - "В фирменном комплекте был скрипт, который эти файлы создаёт..." Я запустил скрипт msmknod, и (ответив на все вопросы про Major и Minor numbers по умолчанию) получил желаемые файлы /dev/ttM*.
Всё. На этом мои успехи кончились. Программы отказывались работать с этими устройстваии. Minicom, например, писал:
И вот вчера (без всякого энтузиазма) я поставил новую версию линукса (Mandrake 10.0). Сел и думаю "А дай попробую в последний разок эту моху присобачить." Короче, с перекомпилированием фирменного драйвера я уже не трахался, а сразу запустил родной, мандрагоровский, модуль. Модуль запустился. От нечего делать я глянул в лог-файл. Смотрю, а там, среди прочего, такое вот написано: "Tty devices major number = 174". Бросилось мне это в глаза, т.к. я точно помнил что фирменный скрипт создания файлов /dev/ttyM* спрашивал что-то про Major/Minor numbers. Запустил я этот скрипт и вижу что по умолчанию там предлагается major number 30. Ввёл я ему 174, и ВСЁ ЗАРАБОТАЛО КАК ЧАСЫ!!! Оказывается, всё это время я мучился из-за неправильного major номера устройств /dev/ttyM* !!!
Короче, логи нада внимательнее читать...