Thursday, 11 August 2005

無線上网 之 FreeBSD

現在的电脑,沒有网絡是不行的。我家現在接的是512K的宽带。因為有NB的原故,索性設了無線网絡。ADSL modem + Router用的是D-Link DSL-G604T,給兩台Desktop配了最便宜的WIFI卡,D-Link DWL-G510(rev B),NB上帶有 Intel802.11a/b/g WLAN。

FreeBSD和CentOS的机子,用的是D-Link DWL-G510(rev B)。FreeBSD 5.4有Ath的驅動,但并不支持G510,只好用Ndis模塊加上G510附帶的Windows驅動。先將Windows驅動文件 (NetA3AB.inf和A3AB.sys)复制到/sys/modules/if_ndis目錄下。然后,
#/usr/sbin/ndiscvt -i NetA3AB.inf -s A3AB.sys -o ndis_driver_data.h
#make
#make install

編譯好的if_ndis模塊將被安裝到/boot/kernel里。編輯/boot/loader.conf文件,添加
ndis_load="YES"
if_ndis_load="YES"

以便在系統起動的時候,自動裝載Ndis模塊。

無線网絡的參數在/etc/rc.conf中設置,
defaultrouter="10.1.1.1"
hostname="server.onezstudio.com.au"
ifconfig_ndis0="inet 10.1.1.102 netmask 255.0.0.0 ssid OneZStudio channel 1 wepmode on wepkey xxxxxxxxxxxxx"

對于固定IP,/etc/hosts也要有相應的設置,
10.1.1.102 server.onezstudio.com.au server

對于動態IP,沒有第三行設置。在/usr/local/etc/rc.d下,建一個wireless.sh文件,內容如下:
#!/bin/sh

case "$1" in
start)
echo
echo "Starting the wireless network by DHCP..."

ifconfig ndis0 up

wicontrol -i ndis0 -n OneZStudio 2>/dev/null
wicontrol -i ndis0 -f 1 2>/dev/null
wicontrol -i ndis0 -e 1 2>/dev/null
wicontrol -i ndis0 -k xxxxxxxxxxxxx 2>/dev/null

ifconfig ndis0 ssid OneZStudio

dhclient ndis0 &
;;
stop)
ifconfig ndis0 down
/usr/bin/killall dhclient
;;
esac

exit 0

編輯好以后,要添加可執行屬性。這樣,系統在起動的時候,就可以自動獲取IP地址了。

据其他人的消息,現在Ndis的用法已有所變化,改用ndisgen命令產生驅動模塊,不必自己ndiscvt生成頭文件,再編譯if_ndis模塊了。我還沒試。應該會更方便些吧。

FreeBSD 5.4用G510無線网卡,不是特別的穩定。經常會看到link up、link down的系統消息出現。另外就是,系統起動的時候,需要花較長的時間去完成和Router的握手。期望即將到來的FreeBSD 6.0,其對Wifi的支持,能有所提高。

1 Comments:

At 26 September, 2005 00:56, Anonymous worren said...

您好,
請問您系統中的 /compat 下是否有 ndis 目錄? 小弟我的網卡也是 DWL-G510 REV:B , 也是用您這方法! 但是在 ndiscvt 這個步驟就已經fail 了, 說是在 row 422 有error , 我就把該行 mark 起來! 然後就可以順利做下去了!
but 在 kldload if_ndis 這步驟時, 說是找不到 /compat/ndis/regAdd.txt 這個檔...@@a ...不曉得您的系統下是否也有這個檔? ...
不過 ifconfig 是可順利看到 ndis0 這個 device , 但無法讓它 up 起來! ..不曉得到底情況是為何.....煩請指教! tks! 若可以, 請來信!...^_^

worren@worren.net

 

Post a Comment

<< Home