Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Аппаратное обеспечение

Беспроводная сеть в Linux

Оригинал: "Linux Wireless Networking"
Автор: Петер Харрисон (Peter Harrison)
Перевод: Н.Ромоданов
Дата перевода: 10.09.2009 г.

Конфигурирование Linux с несовместимыми беспроводными сетевыми платами

Не все беспроводные платы работают с Linux, особенно новые модели плат стандарта 54 Mbps 802.11g/n. К счастью имеется ряд способов преодолеть это очевидное ограничение. Они рассматриваются ниже.

Использование ndiswrapper

Windows в качестве стандартизированного метода взаимодействия операционной системы с драйверами сетевых плат различных производителей использует спецификацию интерфейса сетевого драйвера (Network Driver Interface Specification - NDIS). Пакет ndiswrapper для Linux, который можно получить с сайта ndiswrapper.sourceforge.net, позволит вам запускать под Linux драйвера Windows вашей сетевой платы. Для этого вокруг драйвера Windows создается программная обвертка, заставляющая его думать, что он общается с Windows, а не с Linux. Диапазон совместимости таким образом расширяется, а для случаев, когда вам может потребоваться перекомпиляция ядра, на сайте проекта имеются ссылки на RPM пакеты стандартных ядер с поддержкой ndiswrapper. Инструкции по установке на сайте проекта достаточно ясные и профессиональный пользователь Linux в состоянии сделать свою сетевую плату работоспособной в течение часа или двух от момента первой попытки.

Пакет ndiswrapper также имеет некоторые ограничения. Он работает только на архитектуре, поддерживающей Windows, не поддерживается очень полезная команда iwspy (см. обсуждение ниже), а обвертка добавляет слой сложности программного взаимодействия, который в нормальных условиях отсутвует. У пакета ndiswrapper имеется коммерческий конкурент, называемый DriverLoader, созданный корпорацией Linuxant, который, возможно, Вы также захотите рассмотреть.

Установка и конфигурирование ndiswrapper

1. Пакет ndiswrapper использует многие возможности ядра. В новых версиях of Fedora вам следует сначала установить RPM пакет ядра, предназначенный для разработки (kernel-devel). Пакет RPM должен быть на ваших установочных компакт дисках. Если Вы новичок в установке программного обеспечения Linux, не волнуйтесь. Скачать и установить пакеты RPM несложно. Если вам нужно вспомнить, как это делается, смотрите Главу 6 "Установка программного обеспечения Linux", где это подробно описано.

2. Остановите систему, установите вашу сетевую плату и перезагрузитесь. Скачайте tar файл ndiswrapper и распакуйте его содержимое. Войдите в директорию ndiswrapper и в файле INSTALL прочитайте инструкции по установке конкретной версии. В версии ndiswrapper-1.16, используемой в этом примере , для завершения процесса установки требуется выполнить команды make distclean, make и make install.

[root@bigboy tmp]# tar -xvzf ndiswrapper-1.16.tar.gz
[root@bigboy tmp]# cd ndiswrapper-1.16
[root@bigboy ndiswrapper-1.16]# make distclean
[root@bigboy ndiswrapper-1.16]# make
[root@bigboy ndiswrapper-1.16]# make install

Замечание: В дистрибутивах, основанных на Debian, таких как Ubuntu, ndiswrapper можно установить с помощью команды apt-get.

3. Далее мы должны определить PCI ID вашей вновь установленной сетевой платы. Сначала используйте команду lspci для того, чтобы найти номер IRQ сетевой платы. Значения IRQ будут указаны в первом столбце. В нашем случае IRQ равно 01:08.0.

[root@bigboy ndiswrapper-1.16]# lspci
...
...
01:08.0 Network controller: Intersil Corporation Prism 2.5 Wavelan
chipset (rev 01)
...
...
[root@bigboy ndiswrapper-1.16]#

4. Затем можно использовать команду lspci –n для того, чтобы получить PCI ID, который имеет формат xxxx:xxxx. Наша сетевая плата имеет ID, равный 1260:3873.

[root@bigboy ndiswrapper-1.16]# lspci -n
...
...
01:08.0 Class 0280: 1260:3873 (rev 01)
...
...
[root@bigboy ndiswrapper-1.16]#

5. На сайте ndiswrapper по ссылке, приведенной ниже, имеется таблица идентификаторов PCI ID и подходящих для них драйверов Windows. http://ndiswrapper.sourceforge.net/mediawiki/index.php/List

Замечание: Используйте эту информацию для того, чтобы загрузить правильный драйвер для вашей сетевой платы. Не используйте драйвера Windows с компакт диска вашей сетевой платы, поскольку они, возможно, не были проверены разработчиками пакета ndiswrapper. В списке на сайте указаны названия драйверов, о которых известно, что они работают.

6. После загрузки извлеките файлы драйверов. Внутри главной директории, как правило, имеются поддиректории, соответствующие различным версиям Windows. Войдите в подкаталог, соответствующий самой последней версии.

[root@bigboy tmp]# unzip mzq345v25_xp_certd.zip
Archive:  mzq345v25_xp_certd.zip
  inflating: mzq345v25_xp_certd_no_doc/autorun.exe  
  inflating: mzq345v25_xp_certd_no_doc/autorun.inf  
...
...
...
  inflating: mzq345v25_xp_certd_no_doc/winxp/NETMZQ345.INF  
  inflating: MZQ345v25_Release_Note.TXT  
[root@bigboy tmp]# cd mzq345v25_xp_certd_no_doc/winxp
[root@bigboy winxp]#

7. Основной файл драйвера Windows будет иметь расширение .INF . Установите этот драйвер при помощи команды ndiswrapper с опцией –i, за которой укажите имя файла драйвера.

[root@bigboy winxp]# ls
 mzq345n51.sys  NETMZQ345.INF
 [root@bigboy winxp]# ndiswrapper -i NETMZQ345.INF 
 Installing netmzq345
 [root@bigboy winxp]#

8. Используйте команду ndiswrapper снова с опцией –l для того, чтобы проверить, что установка была выполнена успешно.

[root@bigboy winxp]# ndiswrapper -l
 Installed drivers:
 netmzq345                driver installed, hardware present 
 [root@bigboy winxp]#

Замечание: Если Вы получили другое сообщение о драйвере, подобное тому, что мы видим ниже, то нужно будет выполнить дополнительные шаги, поскольку сообщение указывает, что Linux загрузил свой собственный драйвер для вашего устройства и это помешает работе ndiswrapper.

 [root@bigboy winxp]# ndiswrapper -l
 bcmwl5 : driver installed
       device (14E4:4320) present (alternate driver: bcm43xx)
 [root@bigboy winxp]#

- Сначала вам нужно удалить из памяти драйвер Linux. В данном случае драйвер ndiswrapper обнаружил bcm43xx и его можно удалить с помощью команды rmmod. В некоторых случаях Вы можете получить сообщение о том, что драйвер зависит от другого драйвера – удалите оба драйвера с помощью команды rmmod.

[root@bigboy winxp]# rmmod bcm43xx 

- Далее вам нужно предотвратить загрузку Linux-версии драйвера, когда Вы будете перезагружать систему. Добавьте запись для этого драйвера в черный список в файлы /etc/modprobe.d/blacklist-compat and /etc/modprobe.d/blacklist .

#
#
# File: /etc/modprobe.d/blacklist AND 
#       /etc/modprobe.d/blacklist-compat
# 

blacklist bcm43xx

Если вам потребуется использовать команду rmmod более одного раза, то не забудьте добавить в черные списки все драйвера, которые Вы удалили.

- Теперь вам нужно с помощью команды rmmod с флагами -r и –I переустановить драйвер Windows так, как это показано ниже.

[root@bigboy winxp]# ndiswrapper -r Bcmwl5.inf
[root@bigboy winxp]# ndiswrapper -i Bcmwl5.inf

9. Далее следует модифицировать таблицы модулей ядра Linux с тем, чтобы добавить модуль ndiswrapper. Это делается с помощью команды depmod с флагом -a.

[root@bigboy winxp]# depmod -a
[root@bigboy winxp]#

10. Когда ndiswrapper будет загружен, вашей сетевой плате нужно будет назначить имя. Это делается с помощью команды ndiswrapper с флагом -m. Ниже показано, что имя нового устройства будет wlan0.

[root@bigboy winxp]# ndiswrapper -m
Adding "alias wlan0 ndiswrapper" to /etc/modprobe.d/ndiswrapper
[root@bigboy winxp]#

11. Теперь настало время с помощью команды modprobe загрузить модуль ядра ndiswrapper. Вы также можете проверить успешность выполнения этой операции, увидев в конце файла /var/log/messages сообщение о правильном выполнении команды.

[root@bigboy winxp]# modprobe ndiswrapper
[root@bigboy winxp]# tail /var/log/messages
...
...
Mar 17 23:25:21 bigboy kernel: ndiswrapper version 1.6 
loaded  (preempt=no,smp=no)
[root@bigboy winxp]# 

Команда dmesg выдаст сообщения о статусе загрузки как драйвера вашей сетевой платы, так и для модуля ndiswrapper. Ошибок быть не должно. Если они имеются, то, возможно, Вы использовали драйвер, не рекомендованый на сайте ndiswrapper, возможно, ваша сетевая плата неисправна, возможно, ваша сетевая плата совместима с Linux, либо, возможно, ваша установка ndiswrapper или ядра были сделаны неправильно. Пожалуйста, смотрите подробности в разделе "Устранение проблем в вашей беспроводной сети" в этой главе.

[root@bigboy tmp]# dmesg
...
...
...
ndiswrapper version 1.16 loaded (preempt=no,smp=no)
ndiswrapper: driver mzq345 (Broadcom,04/21/2005, 3.100.65.1) loaded
ACPI: PCI Interrupt 0000:01:08.0[A] -> Link [LNKB] -> GSI 10
(level, low) -> IRQ 10
ndiswrapper: using irq 10
wlan0: vendor: 
wlan0: ndiswrapper ethernet device 00:06:25:1b:b2:a9 using
driver mzq345, 14E4:4301.5.conf
wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2,
WPA2PSK, WPA2, WPA2PSK
[root@bigboy tmp]#

12. Для того, чтобы приложение работало корректно, Вам всегда нужно иметь ядро, совместимое с ndiswrapper. Для того, чтобы сохранить текущее ядро во время модификации ядра, выполняемой с помощью команды yum, отредактируйте файл /etc/yum.conf и в опции exclude запретите обновление ядра.

#
# File: /etc/yum.conf
#

exclude=kernel

13. Используйте обычный пакет wireless tools для Linux, чтобы для интерфейса wlan0 сконфигурировать IP адрес, идентификатор ESSID и, если это необходимо, задать шифрование. Для дистрибутива Fedora Вы можете указать скорость до 54 Мбайт/сек для 802.11g, добавив для этого в файл /etc/sysconfig/network-scripts/ifcfg-wlan0 указанную ниже инструкцию. Оставите файл пустым, если Вы используете стандарт 802.11b.

RATE=54Mb/s

14. Теперь Вы можете воспользоваться командой ifup для того, чтобы активировать сетевую плату, и командой iwconfig, которая покажет, что интерфейс подключен правильно к точке доступа на скорости 54 Мбит/сек.

[root@bigboy winxp]# ifup wlan0
[root@bigboy winxp]# iwconfig
...
...
wlan0     IEEE 802.11g  ESSID:"johncr0w"  Nickname:"bigboy"
          Mode:Managed  Frequency:2.462GHz  Access Point:
          00:09:5B:C9:19:22  
          Bit Rate=54Mb/s   Tx-Power:32 dBm   
         RTS thr=2347 B   Fragment thr=2346 B   
         Encryption key:98D1-26D5-AC   Security mode:restricted
         Power Management:off
         Link Quality:88/100  Signal level:-55 dBm  Noise level:-
         256 dBm
         Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
         Tx excessive retries:96  Invalid misc:1157
         Missed beacon:0
...
...
[root@bigboy winxp]#

Мой опыт использования пакета дома был очень хорошим, но вам следует переустанавливать пакет каждый раз, когда вы модифицируете ваше ядро. Это неприемлемо в критически важных условиях ведения бизнеса, где простои, связанные с обслуживанием, должны быть сведены к минимуму и где для обеспечения стабильности работы все программное обеспечение должно быть на 100% совместимо с Linux.

Когда технология 802.11g WiFi станет более зрелой, она, несомненно, будет непосредственно поддерживаться пакетом Wireless Tools для Linux и не потребуется использовать дополнительное программное обеспечение, однако всегда будут сетевые платы, которые не поддерживаются Linux, и знание пакета ndiswrapper будет всегда ценно.

 Назад   <<  Страницы:  1   2   3   4   5   >>   Продолжение