IBM T20 CPU P3-700 MEM 256M PCCARD/PCMCIA 插槽支持
IBM R51e CPU 赛扬 1.6G MEM 512M PCCARD/PCMCIA 插槽支持
TP-LINK TL-WN510G 54M 无线笔记本网卡 cardbus
TP-LINK DWL-G650 108M 无线笔记本网卡 cardbus
FreeBSD 6.2-RELEASE
自定义的内核,已经支持PCCARD (PCMCIA) ,但是没有在内核里加入无线网卡的驱动。
# PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus
将TP-LINK无线网卡插入PCMCIA插槽,系统认出来是一块网卡。但是没有找到驱动来支持。提示如下信息:
cardbus0: <network, ethernet> at device 0.0 (no driver attached)
也可以用dmesg命令来查看到这个信息。
# dmesg | grep network cardbus0: <network, ethernet> at device 0.0 (no driver attached)
既然系统能够认出来是一块网卡,那么很有可能是内核里没有相应的驱动支持。我开始尝试着加载了wlan.ko,if_wl.ko 等模块,仍然无效。
后来上网搜索,得知这块TP-LINK网卡,需要ath模块支持。于是依次加载相应的模块后,就认出来了。
加载模块的命令:
# kldload wlan.ko # kldload if_ath.ko # kldload wlan_wep.ko # kldload wlan_ccmp.ko # kldload wlan_tkip.ko
下面是我的电脑上,加载完模块后的模块列表:
# kldstat Id Refs Address Size Name 1 13 0xc0400000 411068 kernel 2 1 0xc0812000 64180 acpi.ko 3 1 0xc26b1000 2000 rtc.ko 9 6 0xc2d30000 1f000 wlan.ko 10 1 0xc2d5b000 f000 if_ath.ko 11 1 0xc2d6a000 4000 ath_rate.ko 12 2 0xc2d9c000 2e000 ath_hal.ko 13 1 0xc2d93000 3000 wlan_wep.ko 14 1 0xc2dd0000 7000 wlan_ccmp.ko 15 1 0xc2dd7000 4000 wlan_tkip.ko
当加载完,并且看到上述模块后。就可以进行接下来的检查网卡和网络的工作了。
我们先来看看系统是否已经能够驱动网卡了。
# dmesg ...... ath_hal: 0.9.17.2 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413) ath0: <Atheros 5212> mem 0x88000000-0x8800ffff irq 11 at device 0.0 on cardbus0 ath0: Ethernet address: 00:19:e0:17:40:a7 ath0: mac 7.8 phy 4.5 radio 5.6
如果能够看到上面的信息,说明已经可以驱动这块无线网卡了。不过,我们还可以使用ifconfig命令来确认一下。
# ifconfig ath0 ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 ether 00:19:e0:17:40:a7 media: IEEE 802.11 Wireless Ethernet autoselect status: no carrier ssid "" channel 1 authmode OPEN privacy OFF txpowmax 100 bmiss 7 protmode CTS burst
至此,说明网卡已经完全被系统支持,并且已经准备好,就差连接网络了。
我们在连接无线网络之前,需要检查下,在我们的周围是否存在无线热点。
# ifconfig ath0 up scan SSID BSSID CHAN RATE S:N INT CAPS xxxxx 00:bb:86:aa:aa:xx 11 54M 15:0 100 E
看到这些信息,说明我们周围有一个名称为 xxxxx(您搜索到的,也许是其他名称) 的热点。如果没有这些信息,也许您的周围没有热点。多试几次,实在找不到,就放弃吧。呵呵
在开始连接之前,我们需要在/etc/rc.conf里做个设置。
# vi /etc/rc.conf ifconfig_ath0="DHCP" ifconfig_ath0="ssid xxxxx DHCP"
# vi /etc/rc.conf ifconfig_ath0="inet 192.168.1.100 netmask 255.255.255.0 ssid xxxxx"
其中 “xxxxx“是检查网络时找到的热点名称,一定要设置正确。
在做好前面的准备后,可以开始连接网络了。
# /etc/rc.d/netif start
没有报错的话,赶紧检查下,是否已经连接好了。
# ifconfig ath0 ath0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::211:95ff:fed5:4362%ath0 prefixlen 64 scopeid 0x1 inet 192.168.1.100 netmask 0xffffff00 broadcast 192.168.1.255 ether 00:11:95:d5:43:62 media: IEEE 802.11 Wireless Ethernet autoselect (OFDM/54Mbps) status: associated ssid dlinkap channel 6 bssid 00:13:46:49:41:76 authmode OPEN privacy OFF txpowmax 36 protmode CTS bintval 100
其中 status: associated 表示您已经连接到了无线网络 (在这个例子中, 这个网络的名字是 xxxxx)。 bssid 00:0b:86:a1:a1:91 是指您所用无线访问点的 MAC 地址; authmode 这行指出您所做的通讯将不进行加密 (OPEN)。
然后 ping 163.com 试试,网络是否真的通了。
# ping 163.com PING 163.com (220.181.29.154): 56 data bytes 64 bytes from 220.181.29.154: icmp_seq=0 ttl=44 time=626.841 ms 64 bytes from 220.181.29.154: icmp_seq=1 ttl=44 time=623.016 ms
怎么样,通了吧?呵呵
因为我之前没有将无线网络支持这块编译到内核里,现在又懒得重新编译内核。怎么办呢?总不能每次都手工加载内核模块吧,那多累人啊。
不怕,我们可以将这些模块放到/boot/loader.conf 里,每次启动的时候,就会自动加载这些模块了。
# vi /boot/loader.conf if_ath_load="YES" wlan_load="YES" wlan_wep_load="YES" wlan_ccmp_load="YES" wlan_tkip_load="YES"
加入这些模块后,启动系统的时候,就会自动加载了。
以前一直担心,用FreeBSD作为日常工作桌面系统会不会给我带来什么麻烦。但是真正使用后,才发现,并没有给我带来什么特别大的麻烦。反而给我的工作带来了很多便利。比如说,调试一些服务,调试一些程序等等。
16hot ( Jonsen Yang、 杨明茂 ) http://16hot.blog.isyi.com 喜欢FreeBSD/Linux,从事多年的Unix/Linux系统管理和PHP开发工作。