Ось перший варіант. Будуть зауваження?
1. Ліричний відступ
Коли два роки тому я вперше завантажив Mandriva 2006.0, менеджер обладнання заявив, що для повноцінного функціонування мого модему (Acorp 9m56pml-g на чипсеті Agere/Lucent) мені слід вступити до якогось клубу, і лишень тоді мені нададуть чудовий пакунок з драйвером ltmodem.
Я був у траурі. Купивши дешевенький модем (близько семидесяти гривень), я сподівався на те, що він підтримуватиметься скрізь і всюди...
Втім, не зневірившись, я досить швидко відшукав через linmodem.org сторінку з драйверами під Linux. На той час це були ltmodem-8.31b. Скоро (за два-три тижні) мені способом спроб і невдач вдалося їх зібрати і встановити. Втім, зворотній виклик у kppp спершу не запрацював, виявилося, що автори Mandriva все передбачили, вони чомусь наклали на KDE таку латку, яка змінювала вірний параметр (callback) на невірний (+callback) і pppd (Якщо у технічному тексті Вам зустрілося незрозуміле слово, читайте текст далі, він зберігає свій сенс і без цього слова, -- закон Мерфі) падав з кодом помилки 16. Довелось вручну правити бінарник програми, вставивши замість + пробіл.
Ну і зрештою все запрацювало...
Я був щасливий!
Настрій псували лише повідомлення у /var/log/messages: ltserial: module license 'Proprietary' taints kernel...
2. Нові часи
Пройшло два роки і мені захотілося нових вражень: я купив у Lafox Mandriva 2008.0. І що ж я бачу? Та те саме: вступіть у клуб і отримаєте ltmodem... (no comments)
Я спробував повторити свій шлях: облом, драйвери не збиралися. Почав шуквти у Інтернеті і знайшов латку до AltLinux пакунку (для тих хто сидить на ядрах до 2.6.20 -- має допомогти
http://alt.linux.kiev.ua/srpm/kernel-source-ltmodem-8.26a9/patches/0 (якщо знайдете вихідний код -- хі-хі). Отже прихильники da oldskool мають зробити таке:
1) Знайти у Інтернеті (виканючити у друзів, попросити у мене, скачати з посилання поряд з латкою) пакунок ltmodem.
2) Розпакувати пакунок (вітаються всі пропозиції від Ark до tar -xvzf ltmodem-8.26a9.tar.gz (альтова версія)). Розпакувати source.tar.gz (те саме).
3) Внести зміни до файлів у source згідно з латкою (можна ручками, навіть корисно, будете знати як виглядають нутрощі кодів програм). Поміняти у ltmodem.spec.in слово Copyright на License.
4) Запакувати файли назад у source.tar.gz (gzip -f -9 /Ваш/шлях/source).
5) Встановити файли з заголовками ядра для Вашого дистрибутиву (kernel-desktop-devel-2.6.22.9-1mdv -- Mandriva 2008.0) і компілятор (будете збирати модуль ядра (так, так, не треба ховатися під ліжко -- буде майже не боляче і не довго)) (gcc у Mandriva 2008.0). Треба брати саме ті заголовки та компілятор, які відповідають Вашому ядру.
6) Виконати від імені адміністратора у консолі у теці ltmodem: su (треба ввести пароль) ./build_module (або для дебі... (ну як там називають користувачів Debian/Ubuntu?) sudo ./build_module (критики одразу скажуть, а чому не build_rpm, або build_deb? -- Дам відповідь: так надійніше (в такому разі мені дорікнуть, що я не сказав, що слід встановити rpm-build або dpkg)).
7) Якщо все гаразд, не було помилок, Вам вдалося те, що не вдалося мені -- зібрати модулі ltmodem.ko та ltserial.ko на сучасному ядрі (уважуха!). Тепер почитайте у каталозі ltmodem файл README (а якже, саме зараз і час!), щоб дізнатись як їх встановити...
P.S. Цікаво, де розробники Mandriva беруть пакунки для роздачі членам свого клубу любителів ltmodem?
3. Нові шляхи
Ну от і все про сексуальні способи встановити старі драйвери на нове ядро.
Поговоримо тепер про менш екзотичні вправи...
Справа ltmodem, як виявилося, живе і перемагає. Існує два шляхи змусити працювати Ваш модем:
1) Старий перевірений шлях з ядерними модулями, на які саме ядро матюкається. Драйвери прогресуєть, але тепер називаються на штиб agrsm-20070804.tar.gz і валяються на
http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6/ і дають два модулі ядра agrmodem.ko та argserial.ko. Слід
0) Переконатися, що у Вас не модем Genius (кажуть, може не спрацювати).
а) Завантажити пакет.
б) Розпакувати його.
в) Виконати у розпакованій теці в консолі (Konsole, xterm або щось інше): su (ввести пароль адміністратора) make install (sudo make install).
г) Якщо все пройшло вдало (і мені це вдалося (ядро 2.6.22.9)), почитати README і додати рядок з agrserial до /etc/modules.preload (чи як там воно називається у Debian?), щоб не розважатися завантаженням драйвера модема, кожного разу як захочете позвонити.
2) Драйвер, розроблений Олексієм Ченцовим (Олексій -- бох!!!) martian. Якраз нещодавно (11.10.2007) вийшла нова версія, яку можна завантажити з
http://linmodems.technion.ac.il/packages/ltmodem/kernel-2.6/martian/martian-full-20071011.tar.gzСлід
а) Завантажити пакет.
б) Розпакувати його.
в) Виконати у розпакованій теці в консолі (Konsole, xterm або щось інше): su (ввести пароль адміністратора) make install (sudo make install).
г) Якщо все пройшло вдало... виконати від імені адміністратора сценарій scripts/automate.sh (su (ввести пароль адміністратора) ./automate.sh (sudo ./automate.sh), щоб не розважатися завантаженням драйвера модема, кожного разу як захочете позвонити.
3. Martian. Полірування.
Перевагою martian є те, і це безперечно оцінять дебі... (ну, користувачі Ubuntu/Debian), що пропрієтарна частина (Agere засекретила страшенні таємниці у бінарному форматі частини драйвера) знаходиться не в ядрі, а на користувацькій частині (user-space). Тому ядро більше не матюкатиметься. З іншого боку пропрієтарщина нікуди не ділася, вона і досі сидить у драйвері (тому творці Debian, Столлмен та інші великі бохи ніколи не схвалять включення цього пакунку в основне дерево).
Так, ну добре, встановили ми драйвер, але... зворотний виклик (callback) не працюватиме, kppp не бачитиме екзотичного пристрою /dev/ttySM0
Та нічого, все це легко виправити. Оскільки я не знайомий зі специфікою всіх дистрибутивів, далі опишу, що слід зробити у Mandriva, Fedora, etc.
Редагуємо /etc/rc.d/init.d/martian (< означає "прибрати", > означає додати, циферки -- номери рядків):
17a18
> . /etc/rc.d/init.d/functions
48,51c45,51
< /usr/sbin/martian_modem --daemon ${ARGDEV}
< [ -d /var/lock/subsys ] && touch /var/lock/subsys/martian
< echo "Done"
---
> /usr/sbin/martian_modem --daemon --hide-pty ${ARGDEV}
> [ -d /var/lock/subsys ] && touch /var/lock/subsys/martian
> success; echo
> ln -s /dev/ttySM0 /dev/modem
---
< echo "Done"
---
> success; echo
Перезавантажуємося.
P.S. Я мав на увазі, що пристроєм модему тепер буде /dev/modem
4. Супутні граблі
Ага, думали все? Ні, не все... Вдячні захисники авторських прав подумали і про той варіант, коли Ви дочитаєте цю графоманську інструкцію не до кінця.
По-перше, для активізації можливості зворотного виклику у програмах додзвону (kppp -- мій скарб!!!) потрібно знайти завантажити і зібрати програми pppd з прапорцем "CBCP=y" (див. чудову інструкцію на цьому сайті)
По-друге, для набирання номеру Вам потрібно буде провести відповідну ініціалізацію модему: додати рядок до команд модему (у kppp це Налаштувати > Модеми > Новий (або Редагувати, якщо він у Вас уже налаштований ) > Модем > Команди модема > Рядок ініціалізації 2)
ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Щоб дізнатися більше про команди модема, почитайте підручник з команд Вашого модема (його досить легко знайти у мережі).
По-третє, якщо у Вас працює лише пульсовий набір номеру (це коли не "ту-ту-ту-ту-ту", а "тррр-тррррр"), команду набору номеру слід змінити на (у kppp це Налаштувати > Модеми > Новий (або Редагувати, якщо він у Вас уже налаштований ) > Модем > Команди модема > Рядок додзвону) (Господи, як же я у свій час про це не здогадався -- тупив зо три місяці)
ATDP
По-четверте, не забудьте внести себе до групи, якій дозволено дзвінки з модема tty (у Debian це, здається dialout).
Ну, от, здається, і все. Швидких Вам ліній і малих рахунків від Укртелекома.
КІНЕЦЬ