Опросы посетителей и участников компьютерных выставок, в частности Комтек 2001 и SofTool 2001, а также письма наших читателей показывают все более возрастающий интерес к ОС Linux. Статья Валерия Коржова «Как подключить Linux к Internet» (см. «Мир ПК», № 6/2000, с. 76) вызвала множество вопросов, и мы публикуем его ответы на некоторые из них.

Вопрос. Как заставить модем Acorp int PCI работать под управлением Linux 7.0 и сопоставить его какому-нибудь порту?

Вопрос. Модем — Conexant HCF 56K speakerphone modem — подключен к COM3. Что мне сделать, чтобы он работал в Linux? Сколько я ни искал в Интернете, драйвера для Linux нигде не нашел. Объясните, в чем тут дело? И еще: как мне настроить свою звуковую плату (SoundВlaster 16), а то я хочу CD-плеер послушать — диск работает, а звука нет.

Ответ. В Linux, как и в других диалектах UNIX, драйверы устройств интегрированы в файловую систему. Запись информации в устройство и чтение данных из него выполняются так же, как и работа с файлом. При этом информация передается в другую программу, которая и является реальным драйвером устройства, т. е. обеспечивает все функции взаимодействия с ним. Такая унификация упрощает разработку программ и позволяет легко перенастраивать работу с устройством. В Linux принято драйверы устройств собирать в каталоге /dev (devices — устройства), хотя реально они могут находиться в любом месте файловой системы. В этом каталоге можно найти драйверы для работы с жесткими дисками (IDE — с hda по hdd, а SCSI — c sda по sdp), с дискетами (fd0 и fd1), последовательными (с ttyS0 по ttyS3) и параллельными (lpt0 и lpt1) портами и др. Причем в большинстве случаев все устройства в группе управляются одной программой, которой в качестве параметра передается порядковый номер порта.

Впрочем, в Linux по умолчанию определены все необходимые устройства, их просто нужно найти. В состав дистрибутива Linux Mandrake 7.0 входит специальная небольшая программа, проверяющая изменение аппаратной конфигурации системы. Она-то, как правило, и находит необходимые драйверы. Именно эта программа распознала мою звуковую плату и корректно установила для нее драйвер /proc/asound/dev.

Что же касается CD-плеера, то для его работы нужно напрямую связать CD-ROM со звуковой платой специальным проводом (продается отдельно).

Модем, даже внутренний, подключается к стандартному последовательному порту: в Windows и MS DOS — это COM-порт, а в Linux — ttyS с соответствующим номером. У внутреннего модема есть специальные перемычки, с помощью которых можно жестко закрепить за ним конкретный порт. В инструкции к модему написано, как это сделать. Только нужно иметь в виду, что COM1 соответствует ttyS0, т. е. в Linux нумерация устройств сдвинута на единицу. После того как на внутреннем модеме определен порт, работать с ним в Linux нужно по адресу соответствующего устройства ttyS (например, /dev/ttyS2).

Во многих дистрибутивах для удобства дальнейшей переконфигурации модема определяют еще и символьную ссылку на реальное устройство /dev/ modem. Ее-то и используют по умолчанию практически все программы дозвона для Linux. Чтобы проверить, что именно скрывается за названием файла, можно набрать команду ls -l, и если в начале строки будет литера «c» или «b», то это устройство, если «l», то — символьная ссылка, значение которой можно посмотреть в конце строки (см. пример 1).

Вопрос. Не отрицая важности рассмотрения вопроса о модемном соединении из Linux для начинающих, все же вынужден отметить две замеченные мною погрешности, которые могут вызвать затруднения у начинающих:

  1. Вы указываете, что ttyS1 — это первый порт, хотя на самом деле это второй.
  2. Команда модема для набора номера в импульсном режиме имеет вид atdp, а не atpd, как это указано в статье.

Ответ. 1. Устройство ttyS1 действительно является COM2, и это может вызвать проблемы у тех пользователей Linux, которые ранее пользовались Windows. Тем не менее номер последовательного порта все же первый, поскольку нумерация начинается с нуля. Из-за этого возникает некоторая двусмысленность.

2. Команды, начинающиеся на at, или at-команды, исполняются внутренним процессором модема. Они используются для таких настроек модема, как определение протокола обмена, сжатие данных, громкость динамика и др.

Важной является команда d (т. е. atd), с помощью которой модему сообщается, какой именно номер ему нужно набирать. У нее есть две опции: p — импульсный и t — тоновый набор. Таким образом, полностью команда набора будет действительно atdp, тем не менее обратная последовательность команд также имеет смысл, т. е. вначале включается режим импульсного набора, а потом подается собственно команда набора номера. Тогда команда будет такой: atpd. Я почему-то всегда пользовался вторым вариантом, и еще ни разу не было проблем. Какой идеологией пользовались авторы программ для модема, мне неизвестно. Если же возникла проблема с импульсным набором номера, при том что модем поддерживает этот режим, то можно просто поменять местами p и d.

Важно помнить, что за всеми настройками модемной связи стоит конфигурирование последовательности at-команд. В частности, при определении настроек программы kppp, позволяющей настраивать модемное подключение к Интернету так же, как в Windows, в одной из закладок можно посмотреть сценарий соединения. Там можно не только увидеть все at-команды, но и отредактировать их в случае необходимости. В частности, для импульсного набора в графе «Строка набора номера» нужно написать ту самую команду atdp.

Вопрос. Не могли бы вы помочь выяснить причину упорного нежелания Linux соединяться с серверами с выдачей следующего сообщения:

«Unknown Host in http://www......»

Ответ. Такие ошибки возникают в том случае, когда не работает DNS-сервис. Он занимается преобразованием имен серверов в IP-адрес, поскольку для установления соединения в Интернете используются 64-битовые адреса. Все маршрутизаторы, коммутаторы и другое оборудование пользуются только IP-адресами и ничего не знают о доменных именах компьютеров.

Когда в браузере набирается URL, например http://www.osp.ru, имя сервера (www.osp.ru) вначале должно быть преобразовано в IP-адрес. Эту работу в Linux выполняет специальная подсистема разрешения доменных имен (resolver). В ее конфигурационном файле, расположенном в /etc/resolv.conf, указаны IP-адреса DNS-серверов, на которые подсистема посылает запросы. Подсистема resolver передает запросы по очереди всем известным ей DNS-серверам. Когда же имени нет ни в одной удаленной базе, выдается ошибка «Unknown Host www.osp.ru» (неизвестный компьютер www.osp.ru). Впрочем, можно перечислить некоторые IP-адреса и в локальной базе, расположенной в файле /etc/hosts. Имена в ней ищутся еще до обращения к службе DNS, что позволяет определять локально некоторые наиболее часто используемые серверы.

Например, можно использовать адреса DNS-серверов РосНИИРОСа: чтобы решить проблему, достаточно перечислить в файле /etc/resolv.conf несколько DNS-серверов. Теоретически провайдер перечисляет IP-адреса своих DNS-серверов в контракте или на Web-сервере, но если они недоступны, то можно указать любой известный DNS-адрес. Так, можно использовать адреса DNS-серверов РосНИИРОСа: 194.85.119.1, 193.124.83.69, 194.226.96.30 и 193.124. 22.65. Правда, лучше всего задействовать все же DNS-сервер своего провайдера, поскольку это обеспечивает быстрое разрешение имен. Кроме этого, можно перечислить самые употребимые серверы в файле /etc/hosts (см. пример 2).

Пример 1

устройства:

# ls -l /dev/ttyS1
crw———- 1 root tty 4, 65 Sep 17 01:46 /dev/ttyS1

где c - признак неблочного устройства (блочное помечается литерой b), rw———- — список разрешений, root — владелец и его группа, 4 и 65 — параметры драйвера, Sep 17 01:46 — дата последней модификации, /dev/ttyS1 — имя устройства.

символьной ссылки:

# ls -l /dev/modem
lrwxrwxrwx 1 root root 10 Apr 28 2000 /dev/modem -> /dev/ttyS1

где l — признак символьной ссылки, 10 — размер файла-ссылки, /dev/modem — имя файла-ссылки, /dev/ttyS1 — файл или устройство, на которое указывает ссылка.

назад

Пример 2

локальной базы имен:

# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain

(столбцы таблицы разделены символом табуляции)

конфигурации DNS-системы:

# cat /etc/resolv.conf
search localdomain
nameserver 194.85.119.1
nameserver 193.124.83.69

назад

На вопросы читателей отвечал автор статьи «Как подключить Linux к Internet» Валерий Коржов. C ним можно связаться по e-mail: oskar@osp.ru