Использование Windows драйверов D-Link DWL-G520+ под FreeBSD
NDIS wi-fi проект_evil и DWL-G520+
Благодарен за помощь "Madzhara" ака "OF462M-2".
Нужно было мне настроить dwl-g520+, как извесно во FreeBSD начиная с 5 ветки имеет такую вещь как NDIS (для тех кто не в курсе это эмулятор для Windows драйверов, из *.sys & *.ini фаилов ...)
Поставил я FreeBSD-5.3-generic, и взял диск D-Link DWL-G520+ c набором XP-шных драйверов в составе:
FwRad16.bin FwRad17.bin GPLUS.inf GPLUS.sys
скопировал в /usr/src/d-link (или куда хотите, это не имеет значение)
// заходим в каталог с NDIS - файлами для компиляции #cd /usr/src/sys/dev/if_ndis/
правим файлы
if_ndis.c if_ndis_pccard.c if_ndis_pci.c
на предмет замены в них строчки
#include "ndis_driver_data.h" на #include "/usr/src/sys/modules/if_ndis/ndis_driver_data.h" // путь до фаила
В конфиге ядра прописываем: (по совету Madzhara, правда я этого не делал)
options NDISAPI device ndis device wlan
(я так не делал .... я поше написал скрипт в rc.d он ниже)
#cd /usr/local/etc/rc.d #ee ndis_run.sh
дальше пишем скрипт
#!/bin/sh sleep 5 #только если нет в ядре "options NDISAPI" и "device ndis" , # а если есть то не пишите эту строчку kldload ndis sleep 5 ifconfig 172.16.0.2 netmask 255.255.255.0 ssid mu_ssid up sleep 5 route add default 172.16.0.1
Возможно, что можно запускать как-то еще, однако и так ничего.
Когда начинает подгружаться скрипт, то пишется что нет *.bin и не могу загрузить. Решение
#mkdir /compat/ndis (тут мне подсказал "Madzhara" ака "OF462M-2") #cp /usr/src/d-link/FwRad16.bin /compat/ndis #cp /usr/src/d-link/FwRad17.bin /compat/ndis
#reboot //перезагрузка
#kldstat -v|grep ndis должен выдать:
112 ndisapi 119 pci/ndis 120 cardbus/ndis
Если все прошло нормально, то дальше ifconfig отдаст устроиство как ndis0
МИНУСЫ ПОДХОДА (думаю, легко устраняем, после внимательного изучения процесса загрузки и сборки ядра):
1. Скрипт /etc/rc.network отрабатывается раньше, чем запустится драйвер ndis0, что мешает конфигурить логические составляющие интерфейса типа SSID и IP-адреса посредством прописывания оных в /etc/rc.conf.
Выход - настраивать все в /etc/rc.local, что не есть правильно. (C)"Madzhara" ака "OF462M-2"
(мне это не понадобилось за счёт скрипта и я даже ядро не пересобирал, ну кроме как в целях включения NAT)
2. Неупорядоченность самого процесса сборки. Думаю, при правильном размещении ndis_driver_data.h и\или написании добротного патчика к соответствующим Makefile'ам все будет гораздо изящнее. (C)"Madzhara" ака "OF462M-2"