The Linux Serial HOWTO : Поиск неисправностей

Next Previous Contents

14. Поиск неисправностей

14.1 Я получаю сообщение ``line NNN of inittab invalid''

Удостоверьтесь, что вы используете правильный для вашей версии init синтаксис.

Различные init используют различный синтаксис в файле /etc/inittab. Удостоверьтесь, что вы используете правильный синтаксис для вашей версии getty.

14.2 Когда я пытаюсь сделать исходящий звонок, система говорит ``/dev/cua N : Device or resource busy''

Эта проблема может возникать, когда DCD или DTR неправильно установлены. DCD должен быть установлен только когда имеется фактическое соединение (то есть кто-то позвонил), а не когда getty наблюдает за состоянием порта. Проверьте, что ваш модем сконфигурирован так, чтобы DCD устанавливался только когда имеется соединение. DTR должен быть установлен всякий раз, когда кто-то использует или наблюдает за линией, вроде getty, kermit или любой другой программы связи.

Другая общая причина ошибки ``device busy", - что вы настроили ваш последовательный порт на уже кем-то занятое прерывание.

Когда каждое устройство инициализируется, оно запрашивает Linux о своих правах использования аппаратных прерываний. Linux смотрит, какое прерывание назначено усройству, и если это прерывание уже занято, то устройство не сможет корректно проинициализироваться. Устройство не имеет другого способа сообщить вам о своей неправильной инициализации, кроме выдачи сообщения "device busy", когда вы попытаетесь воспользоваться этим устройством. Проверьте прерывания на всех ваших платах (последовательных, ethernet SCSI и т.д.). Поищите конфликты IRQ.

14.3 Я получаю сообщение ``getty respawning too fast: disabled for 5 minutes''

Удостоверьтесь, что ваш модем сконфигурирован правильно. Проверьте регистры Е и Q. Это может происходить, когда ваш модем общается с getty.

Удостоверьтесь, что в вашем /etc/inittab getty вызывается правильно.

Неправильный синтаксис или имена устройств могут вызвать серьезные проблемы.

Проверите правильность синтаксиса вашего /etc/gettydefs, делая следующее:

 
         linux# getty -c /etc/gettydefs

Также такое может случиться при неудачной инициализации uugetty . См. раздел ``getty или uugetty все еще не работает".

14.4 Последовательных устройства работают медленно, или последовательные устройства могут отправлять данные только в одном направлении

Вероятно у вас конфликт IRQ. Удостоверьтесь, что это не так. Проверьте все ваши платы (последовательные, ethernet, SCSI и т.д ...). Проверьте установки перемычек и параметры setserial для всех ваших последовательных устройств. Также попытайтесь обнаружить конфликты в /proc/ioports и /proc/interrupts .

14.5 Мой модем виснет после того, как кто-то зависает, или uugetty не возрождается повторно

Это может случиться, когда ваш модем не сбрасывается при отсутствии DTR. Я видел как светодиоды RD и SD сходили с ума, когда это случалось. Вы должны сбросить ваш модем. В большинстве Hayes-совместимых модемов это делается командой &D3, но на моем USR Courier, я должен был установить &D2 и S13=1. Проверьте ваше руководство по модему.

14.6 Мой терминал, соединен с моим PC, но после того, как я ввожу свое имя для входа в систему, он только блокируется

  • Если вы используете getty: вероятно у вас не указано CLOCAL в файле /etc/gettydefs для терминала, и вы вероятно не используете полный нуль-модемный кабель. Вам нужен CLOCAL, который заставляет Linux игнорировать сигналы управления модемом. Вот на что это должно быть похоже:
     
             # 38400 bps Dumb Terminal entry
             DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400
     
             # 19200 bps Dumb Terminal entry
             DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200
     
             # 9600 bps Dumb Terminal entry
             DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600
    
    Затем, уничтожьте процесс getty, так что новый будет порожден с новой записью.
  • Если вы используете agetty: добавьте флажок -L в строку agetty в файле /etc/inittab. Она заставит его проигнорировать сигналы управления модема.

    Затем перезапустите init, напечатав init q. Запись должна выглядеть следующим образом:

     
     
             s1:345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
    

14.7 На высоких скоростях мой модем теряет данные

Если вы попробуете заставить работать ваш модем быстрее, чем на 38400 бит\сек, и у вас нет UART 16550A, то вы должны обновить вашу технику. О UART написано в разделе ``Что такое UART?".

14.8 При загрузке Linux не указывает настройки последовательных устройств, которые я задал

Это не совсем так. Linux не пытается обнаружить IRQ при запуске, он делает только обнаружение последовательных устройств. Таким образом неважно, что он говорит о IRQ, потому что он принимает только стандартные IRQS.

Но когда при загрузке setserial изменяет IRQ, вы должны увидеть это на экране.

Так, например, при том, что я устанавливаю ttyS2 на IRQ 5, я вижу

 
        Jan 23 22:25:28 misfits vmunix: tty02 at 0x03e8 (irq = 4) is a 16550A

вначале загрузки Linux. Вы должны использовать setserial, чтобы сообщить Linux IRQ, который вы используете.

14.9 rz и/или sz не работают, когда я звоню на мою машину с Linux модемом

Если Linux ищет /dev/modem, когда вы пытаетесь передавать файлы, посмотрите файлы /etc/profile или /etc/csh.cshrc. Возможно, что в этих файлах определены несколько псевдонимов, как это случается в некоторых дистрибутивах, особенно в Slackware. Эти псевдонимы запутывают программы zmodem. Уберите их или исправьте.

14.10 Мой экран отображает прикольные символы

Это случается на виртуальных консолях, когда вы посылаете двоичные данные на ваш экран, или иногда при последовательных соединениях. Способ устранить это состоит в том, чтобы напечатать echo ^v^[c. Делается это так:

         linux% echo <ctrl>v<esc>c

14.11 getty или uugetty все еще не работают

Есть опция DEBUG, которая приходит с getty_ps. Отредактируйте ваш настроечный файл /etc/conf.{uu}getty.ttySN и добавьте DEBUG=NNN. Где NNN - одна из следующих комбинаций чисел в зависимости от того, что вы собираетесь отлаживать:

 
        D_OPT   001            установки опций
        D_DEF   002            обработка файлов по умолчанию
        D_UTMP  004            обработка utmp/wtmp
        D_INIT  010            инициализация линии (INIT)
        D_GTAB  020            обработка файла gettytab
        D_RUN   040            другая диагностика времени выполнения
        D_RB    100            отладка ringback
        D_LOCK  200            обработка файла блокировки uugetty
        D_SCH   400            обработка schedule
        D_ALL   777            все вместе

Для первой отладки отлично подходит DEBUG=010.

Если у вас запущен syslogd, отладочная информация появится в ваших log-файлах. Если syslogd не запущен, то информация появится в /tmp/getty:ttySN для отлаживаемого getty и /tmp/uugetty:ttySN для uugetty, и в log-файле /var/adm/getty.log . Посмотрите в отладочной информации, что происходит. Наиболее вероятно, что вам придется настроить некоторые из параметров в вашем файле конфигурации, и перенастроить ваш модем.

Вы могли бы также попробовать mgetty. Для некоторых он проще.


Next Previous Contents