Модемы в Puppy Linux

Версия Puppy 2.17 применяет новую технологию для тех людей, кто выходит в интернет с помощью модема по обычной телефонной линии. Это очень старая область технологии, но мы не можем обойти тот факт, что даже самые современные модемы не поддерживаются в Linux. Для модемов, с помощью которых люди работают в интернете, Puppy стремится сделать установку и настройку полностью автоматической при помощи встроенных программных средств.

Введение

В Puppy live-CD есть документация (он же HOWTO), и я применил часть из статьи «Как подключится к интернету» относительно выхода в интернет с помощью модема:

Классификация модемов

Традиционно, только Linux действительно работал с тем, что мы называем «аппаратными» (или серийными) модемами, тогда как большинство модемов в наши дни - это то, что называют «софтовые» (программные) модемы и большинство из них работает только в системе Microsoft Windows. Если у Вашего PC есть встроенный или внешний модем, подключённый через USB, наиболее вероятно что у вас программный модем.

  • Внешний последовательный модем. Если у вас внешний модем, то его легко распознать по кабелю - довольно большая плоская форма прямоугольника, с 9 или 25 штырьками. Это аппаратный модем, и он, определённо, будет работать в Puppy.
  • Внутренняя модемная плата PCI. 'PCI' это гнезда на системной (материнской) плате, при помощи которых можно подключить модем. Приблизительно 5 лет назад, изобрели PCI модемы, с тех пор они все были софтовыми - таким образом наиболее вероятно, что у вас именно софтовый.
  • Модем, встроенный в системную плату. Технически, они - все еще модемы PCI, как термин «PCI» фактически обращается к основной шине интерфейса на системной плате, с которой связаны все устройства ввода-вывода. Они - все софтовые модемы.
  • Внешний модем USB. В наши дни USB используется почти для всех внешних устройств: мышей, клавиатур, модемов, принтеров и т.д. Есть немного аппаратных USB модемов, поэтому, наиболее вероятно, что модем является софтовым.
  • Модем PCMCIA. Также известный как cardbus. Это - гнездо присутствует на ноутбуках. Устройства могут быть софтовым или аппаратным, современные модемы в основном софтовые.

Cофтовый программный модем

Что такое - софтовый (программный) модем? В основном, это - более дешёвый модем, который делает только часть обработки информации, а остальное доделывает центральный процессор. По моему личному опыту могу сказать, что аппаратный модем имеет более высокую скорость передачи данных чем даже самый современный PC. Реальный минус программного модема это то, что центральный процессор производит часть обработки информации и требует специального драйвера для этого модема, и большинство изготовителей потрудились написать драйверы только для Windows (вот из-за этой ситуации и получается, что все «подсаживаются» именно на микрософтскую «иглу», прим. переводчика). Однако, некоторые изготовители стали писать драйвера для Linux, а также некоторые энтузиасты Linux сами написали свои драйверы.

Предупреждение!
Если Вы имеете программный модем, то он, вероятно, не будет работать в Puppy. Энтузиаст Puppy 'ezeze5000' (ник на форуме) прислал мне полудюжину старых программно-модемных плат PCI на проверку и я заставил большинство из них.

Отметьте, если софтовый модем действительно работает в Linux, его часто называют жаргонным выражением «linmodem» (линмодем).

How to телефонный вызов

В версии Puppy 2.17 появились новые возможности для телефонных вызовов. Puppy автоматически обнаружит ваш аналоговый модем, и если его тип поддерживается, он будет автоматически установлен и все будет готово к соединению. Это относится к аппаратным модемам, однако, Puppy теперь поддерживает много софтовых модемов. Если софт модем будет поддерживаться, то он будет сразу же автоматически обнаружен.

Предупреждение: удостоверьтесь, что ваш модем присоединён и включён, когда Вы загружаете Puppy, так как автоматическое обнаружение модема происходит только при загрузке. На последующих загрузках Puppy модем не обязательно включать, если вы не будете пользоваться интернет-соединением через телефонную линию.

Относительно телефонного вызова - все, что Вы должны сделать, это щёлкнуть по иконке Connect (Соединение) на рабочем столе. Далее запустится 'Internet Connection Wizard' (мастер подключения к интернету), в котором Вы увидите кнопку «Connect to Internet by dialup analog modem» (Выход в Интернет при помощи аналогового модема). Только кликнете на ней и все работает. Я написал программу, названную PupDial, она оповестит вас, действительно ли ваш модем обнаружен.

Отметьте, в 'Internet Connection Wizard' (мастере подключения к интернету), Вы увидите некоторые переключатели сбоку. Они позволяют вам конфигурировать на рабочем столе значок 'Connect' (Соединение), чтобы немедленно начать запуск PupDial, а не Мастера. На один щелчок меньше, чтобы быть в онлайне.

Отметьте, Вы можете также запустить PupDial из меню «Network» (Сеть).

Как работает автоматическое определение

Чтобы понимать это, Вы должны знать кое-что о сценариях (script), которые выполняются в программе загрузки. Есть каталог /etc/rc.d, в котором лежат все эти сценарии: скрипт rc.modules 'README.txt' файл в /etc/rc.d имеет информацию о порядке, в котором выполняются эти сценарии.

rc.modules

Сценарии 'rc.modules' и 'rc.module2' ответственны за то, чтобы загрузить ядра модулей драйверов для ваших аппаратных средств. Большинство этих модулей имеет информацию, встроенную в них, о том, для каких аппаратных средств они предназначены, и эти сценарии используют эту информацию, чтобы найти нужный модуль для загрузки. Например, если у вас PCI модем, то модемный чип идентифицирован уникальными номером, который называется Vendor:Product ID. Вы увидите его, непосредственно выполняя программу PupScan (в Системном меню). Если модуль найден, то он покажет Vendor:Product ID вашего модема.

Однако, Puppy выполняет намного более сложные действия, чем просто загружать модуль. Фактическая программа, которая используется, чтобы загрузить модуль 'modprobe', и загружает, скажем, модуль 'esscom' (драйвер для модемов электронной системы коммутации), Puppy выполняет команду 'modprobe esscom'. В отличие от других дистрибутивов, 'modprobe' был переделан мной таким образом, чтобы отделить модуль от файла архива модуля, названного 'zdrv_xxx.sfs' (где 'xxx' - номер версии Puppy), который также содержит в себе встроенную поддержку программного обеспечения и выполняется требуемым модулем.

rc.modem

Это - постустановочный сценарий, который запускается после того, как модемный модуль был загружен. Основное задание этого сценария это создать '/etc/wvdial.conf' настроечный сценарий, используемый выполняемым '/usr/sbin/wvdial', который делает фактическую операцию набора номера.

Сценарий rc.modem опрашивает модем, вызывая другую программу, '/usr/sbin/gen_modem_init_string', который пытается определить приемлемую строку инициализации для модема.

Сценарий может также установить модем относительно любой страны и это выполнимо с помощью сценария (различного для каждого модема), не в rc.modem сценарии.

Архив 'zdrv' модуля

Программа 'modprobe', если модуль не присутствует, то он «выберет» его в этом файле. Это сделано для того, чтобы Puppy загружался с максимально большой скоростью в оперативную память. Нет никакого смысла в загрузке целой кучи драйверов и поддержки файлов для аппаратных средств, которых у вас нет, это не допускает zdrv файл.

Файлы пакета firmware/executables могут также включить установочный сценарий, который выполняется только однажды.

Для примера: Lucent модем

Давайте используем пример, чтобы посмотреть как все это работает: скажем, что вы используете Lucent программный PCI модем. В программе загрузки, сценарий 'rc.modules' будет видеть соответствие между 'ltserial.ko' драйвера ядра и логином PCI вашего модемного интерфейса. Поэтому, rc.modules выполнит 'modprobe ltserial'.

Сценарий 'modprobe' загрузит 'ltserial' модуль, и, если это будет впервые, то он выберет его из 'zdrv' файла. Сценарий modprobe также выяснит, есть ли какое-нибудь связанное встроенное программное обеспечение (firmware) и исполняемые файлы (executables), связанный с тем модулем. Он выполнит его в соответствии с /lib/modules/firmware.dep.2.6.21.5 (или другим файлом - в зависимости от того, какую версию ядра в настоящее время использует Puppy). Этот файл — поисковая таблица, которая имеет все дополнительные файлы, которые будут загружены, и эти файлы также выбраны из 'zdrv' файла.

Lucent модем имеет инсталляционный сценарий, 'pinstall.ltmodem-2.6-alk-8-patched2.sh'. Вот этот сценарий:

#!/bin/sh
#this is called by /sbin/modprobe script, when ltserial.ko is fetched from
#zdrv module, but before the module is loaded.
 
cat /etc/modprobe.conf | grep "ltserial" > /dev/null 2>&1
if [ ! $? -eq 0 ];then #=0 found.
echo "alias char-major-62 ltserial" >> /etc/modprobe.conf
echo "alias /dev/ttyLT0 ltserial" >> /etc/modprobe.conf
echo "alias /dev/modem ltserial" >> /etc/modprobe.conf
touch -t 0512010101 /etc/modprobe.conf #set modify date back before modules.dep.
fi

Этот инсталляционный сценарий делает любую одноразовую требуемую установку, в этом случае некоторая информация должна быть добавлена в /etc/modprobe.conf.

Как с большинством модемных модулей, Lucent firmware/executables файлы также включают сценарий, который выполняется каждый раз при начальной загрузке Puppy. Это сценарий /etc/init.d/ltmodem, и вот что находится в нём:

#!/bin/sh
#Barry Kauler, LGPL 2007
#called from rc.local0. note, rc.local0 calls rc.modem beforehand which
#sets /dev/modem if a hardware modem found (otherwise /dev/modem deleted).
 
#if a modem found, quit...
[ -e /dev/modem ] && exit
 
[ ! $1 ] && exit
[ "$1" != "start" ] && exit
 
if [ "`lsmod | grep '^ltserial'`" != "" ];then
ln -snf ttyLT0 /dev/modem
fi
 
#the module doesn't seem to support any country setting, so...
if [ -f /etc/countryinfo ];then
SPATTERN="s/^MODEM_COUNTRY_STRING.*/MODEM_COUNTRY_STRING=''/"
cat /etc/countryinfo | sed -e "$SPATTERN" > /tmp/countryinfo
sync
mv -f /tmp/countryinfo /etc/countryinfo
fi
#.../usr/sbin/gen_modem_init_string reads this variable (called from second
#entry to /etc/rc.d/rc.modem, in rc.local0).

Главное действие, которое производит сценарий — это установка мягкой ссылки с /dev/modem на /dev/ttyLT0, если этой ссылки ещё не существует.

Вторая вещь, которую он делает - это определяет, как конфигурировать модем для определённой страны. Возможно, модем не нуждается в этой настройке. Тогда сценарий rc.modem создаст файл конфигурации телефонного вызова /etc/wvdial.conf.

Что касается непосредственно телефонного вызова, вам надо просто запустить один из графических интерфейсов пользователя, типа PupDial или Gkdial. Прежний внешний интерфейс приложения для командной строки - это 'wvdial', который, в свою очередь, использует файл конфигурации 'wvdial.conf'. PupDial отображает содержание wvdial.conf в небольших полях, которые Вы можете редактировать, таким образом вам не нужно редактировать файл wvdial.conf непосредственно.


Автор Barry Kauler 04.12.2007 г.

Оригинал статьи
Статья с форума PuppyRus.
Перевод PHILOSOFF

 
articles/modems.txt · Последние изменения: 01.03.2016 в 18:18 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki