вторник, 13 ноября 2007 г.

wi-fi via D-link G520 + ndiswrapper HOWTO

Итак, сегодня наша задача - научить игуану (openSuSE 10.2 на базе ядра 2.6.18.2-34) работать с сетевой беспроводной картой D-Link Air-Plus G520, что построена на чипе RaLink RT61. Вроде в начальных условиях не соврал. Дальше проверим.
Считаем что карточка у нас успешна подключена в свободный PCI-слот и приветливо подмигивает одним из двух своих зеленых глазков. Замигает второй - задача решена. Сразу хочу сказать, что ядро 2.6.18.2-34 можно дополнить модулем wlan-ng-kmp, которые можно отыскать в репозитории openSuSE для соответствующих версий ядра. Этот модуль содержит свободные реализации драйверов для ралинковских чипсетов. В принципе, их можно найти в инете и скопмилить самостоятельно. Хотя бы вот по этому примеру.
Честно говоря, у меня они компилиться не захотели принципиально. Пробовал и модуль для ядра на их основе ставить - система работала до первого обращения к устройству - потом все зависало намертво. Более того, загрузить потом ее тоже было весьма проблематично, из-за того же первого обращения к сетевухе ;) Короче говоря, из всех решений наиболее оперативное, надежное и адекватно работающее - это настройка с использованием родных win-драйверов и разработки проекта ndiswrapper. Правда не знаю, как у них обстоят дела с прикручиванием wep/wpa/wpa2 шифрования (пока не занимался этим вопросом), но вроде можно ;). Но приступим... Для начала убедимся, что сетевка у нас рабочая и на аппаратном уровне системой видится (требуются права суперпользователя). Ага, есть, и именно то, что нужно. Теперь со спокойной душой топаем на хоумпагу проекта ndiswrapper и загружаем исходники. Или - в любимый репозиторий пакетов и там ищем уже готовую rpm-ку. Неважно. Тут одна небольшая ремарка. Проект достаточно быстро развивается, и некоторые релизы, в которых к примеру объявлена поддержка свежих версий ядраили еще какие новшества или исправления, на каких-то системах будут собираться, на каких-то нет. По крайней мере я перепробовал несколько версий, и остановился на 1,81 (на момент написания статьи актуальна 1,89). Так что если сорцы не компилятся или пакет не хочет устанавливаться, требуя непонятные зависимости и конфликтуя с половиной системы - есть резон попробовать другую сборку. Итак, скачали распаковали и make install && make clean или rpm -i ... В первом случае (я его использовал) выйдет что-то вроде этого: Как видно из скрина, whereis отдает нам местоположение ndiswrapper'a, значит все установилось хорошо. Далее нам потребуется .inf-файл драйвера сетевки. У меня он находится на CD (netrt61g.inf), шедшем в комплекте с девайсом. Устанавливаем драйвер командой
ndiswrapper -i /path/to/your/inf-file
(ключи можно посмотреть с помощью ndiswrapper -h). Далее проверяем корректность установки:
# ndiswrapper -l netrt61g : driver installed device (1814:0302) present
Усе гут! Теперь подгрузим модуль ядра и запишем в modprobe конфигурацию установленного драйвера.
# modprobe ndiswrapper # ndiswrapper -m adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper
Все, теперь ОС вполне может работать с картой. Осталось лишь "ввести ее на параллельную работу с сетью". Отрываем YaST - Сетевые устройства - Сетевая плата и наблюдаем пока следующую картину Жмем добавить и попадаем в меню ручного добавления сетевого устройства. Заполняем нужные поля согласно скриншоту Затем Далее, и попадаем в окно уже специфических настроек wi-fi карточки. Тут остановлюсь подробнее. Доступно 3 режима работы wi-fi модуля в системе - Главная (ваш модуль работает как точка доступа), Управляемая (или режим инфраструктуры, когда есть внешная АР, то есть точка доступа) или Ad-hoc (так называемая одноранговая сеть без АР). Как раз третий нам и нужен, ибо точки доступа поблизости нет, а режим Главный ndiswrapper'ом не поддерживается. Ставим Ad-hoc. ESSID - уникальное имя вашей wi-fi сети, не зная его, к сети не подключиться. Методы аутенфикации доступны как с шифрованием (wpa/wep), так и без него, но с общим ключом (значение которого нужно знать для допуска в сеть, он вводится в следующей строке) или с открытым (то бишь - велкам все). Берем общий ключ, ставим режим его ввода ASCII и вводим 5 или 13 (ограничения режима) символов. Настройки Эксперта в принципе можно не изменять, для умолчального запуска устроит.
Ну и все. Теперь применяем все изменения и получаем на выходе вполне функционирующий беспроводной интерфейс wlan0 c заданными параметрами. Что и требовалось получить. Теперь, чтобы соединиться с данным компьютером по wi-fi с другой машины, нужно лишь просканить окружающее пространство на наличие сети и подключиться к ней, введя соответствующие ключ и essid и прописав в настройках сетевой карты IP-адрес той же подсети. Ну а если поднять DHCP-сервер, то последнее действие будет не нужно. ;) Но это уже совсем другая история, которую я расскажу в следующий раз.

2 комментария:

torrhalten комментирует...

Вот, вот ! Меня такая индивидуальность настройки wi-fi в сочетании сетевая карта+дистрибутив и отпугивает до сих пор в установке Linux.. Не все ж умеют драйвера прописывать. Вот это вот в закладки, спасибо за подробности!

delayer комментирует...

ну что тут скажешь... Если не существует сегодня нормальной поддержки производителей периферийного железа linux_систем, приходитс извращаться с "прокладками". Однако, если в винде бы эта же карточка не поддерживалась...что бы делать стали? ;) А тут всегда возможны варианты. Это раз.
А во-вторых, индивидуальности особой нет - почти любая карта (список стопудово совместимых доступен на wiki проекта ndiswrapper) на почти любом дистрибе (пакеты для всех основных, плюс исходники). Рекоендаций тоже немало...и сообщество если что поможет. Так что не так страшен черт, как его малюют. Кстати, если не свезло с ndiswarapper'ом, есть еще схожий проект madwifi, тоже активно развивающийся. ;)

][a-][a c башорга