Сайт | Скачать | Видео | Wiki

Автор Тема: [Интернет по телефонным проводам: Как это работает?]  (Прочитано 5212 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zloy_T

  • Почетный участник
  • Старожил
  • *
  • Сообщений: 326
  • Репутация: +74/-2
  • Автор темы
Перевёл PHILOSOPH

Оригинал статьи: http://www.puppylinux.com/development/dialup-internet.htm
Версия 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. Это - гнездо присутствует на ноутбуках. Устройства могут быть софтовым или аппаратным, современные модемы в основном софтовые.

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

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

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


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

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

Относительно телефонного вызова все, что Вы должны сделать, это щелкнуть на иконку Conect (Соединение) на рабочем столе. Делее запустится '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).


Главное вещь, которая делает сценарий это установить symlink /dev/modem в /dev/ttyLT0, если это не было уже установлено.

Вторая вещь, которую он делает это определяет как установить модем для определенной страны. Возможно модем не нуждается ни в чем в этом отношении.

Сценарий rc.modem тогда выполнит и создаст файл конфигурации телефонного вызова /etc/wvdial.conf.

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

Barry Kauler www.puppylinux.com