无线设置 (简体中文)

From ArchWiki

Jump to: navigation, search


i18n
English
Italiano
Nederlands
German
简体中文


Contents

[edit] 说明

在Arch Linux(或其他Linux发行版)下配置无线网络一般分两步.第一步是识别您的硬件并为您的硬件安装驱动程序,第二步是选择一种方式来管理您的无线连接。这篇文章涵盖了这两方面,并提供了无线管理工具的连接地址。

[edit] Part I: 无线设备驱动

[edit] 第一步

  1. 检查Linux是否兼容你的硬件.你可以用'hwdetect --show-net' 或者'lshwd',来检测你的无线网卡。
    • 以zd1201为基础的无线卡,像ZyXEL B-220
    • wlan-ng 支持相当多的芯片;详情请点击前边的网址。
    • madwifi 支持Atheros的芯片(包括AR5210, AR5211, AR5212 and AR5213)
    • rt2x00 project Ralink 的rt2400, rt2500, rt2570等芯片的通用驱动(测试版).
    • Ralink Linux 官方支持网站 直接从 Ralink 的官方网站下载芯片驱动.
    • rt2x00 项目 有一些现在仍被维护的Ralink的以前发布的驱动

(这里有一些"老驱动"可能效果不错).

    • ipw2100 支持 Intel Pro/Wireless 2100 Mini PCI
    • ipw2200 支持 Intel Pro/Wireless 2200 Mini PCI
    • ipw3945 支持 Intel Pro/Wireless 3945 AB/G Mini PCI-E
    • orinoco 支持一些基于 Prism 2的网卡。
    • prism54 支持一些基于 Prism 54 的网卡
    • bcm43xx 支持基于Broadcom 43xx 的网卡(老的)。
    • b43 for Broadcom 43xx-based cards
    • Linux无线支持页面中寻找你的硬件,或者查看在Linux Questions中的硬件兼容列表 (HCL), 这两个地方也有比较详尽的Linux兼容的硬件列表。
  1. 如果你的硬件只有在windows下的驱动
    • ndiswrapper可以帮助你使用只提供下Windows下驱动的硬件。(一些 Broadcom, 3com, 等的芯片)
    • 你需要从你的Windows驱动下提取用到的.inf文件与.sys文件 -点击这里
  2. 如果你的硬件不在上述列表中
    • 想办法在google或者baidu中查找吧,用你硬件的模块名加Linux作为关键词。或者去论坛 求助吧
    • 如果还不行,那就可能是你的硬件根本没法在Linux下工作:-( (当然, 这是很罕见的)

[edit] 安装

首先,确保你用pacman安装了 wireless-tools

pacman -S wireless_tools

如果你没有安装这个工具包,你将无法初始化你的无线卡。

[edit] 驱动

这里包含如何获取你的网卡驱动的细节。或许你有好几种驱动可以选择,你可以访问HCL来帮助你获取最佳驱动。

[edit] wlan-ng

pacman -S wlan-ng24
或者
pacman -S wlan-ng26

[edit] rt2x00

Ralink 芯片的通用驱动 (替代 rt2500,rt61,rt73 etc). 使用wext驱动程序接口,兼容 wpa_supplicant.这个驱动现在已经集成到 2.6.24内核中。可以用下边的方法手动加载...

modprobe rt2500pci

(用rt2500pci来代替你的硬件,例如rt2400pci, rt2500usb, rt61pci, rt73usb) 有些芯片需要一个firmware文件. 请查看 rt2x00 wiki 页面.

[edit] RT2500

对于基于Ralink的PCI/PCMCIA的rt2500系列芯片(Ralink的支持802.11g的第一代芯片):

pacman -S rt2500

支持标准的未加密和WEP的链接的iwconfig工具,尽管它可能对于命令的顺序非常敏感。

在使用标准wext接口时wpa_supplicant是不被支持的。驱动支持WPA(使用硬件加密),但是用的是一种不标准方式。一些主要的wpa_supplicant(0.6.x)版本可能包含对于这个驱动的特殊支持,而且能用iwpriv命令手动链接到WPA

详情请见 these instructions。 这对于下面的RT61和RT73一样适用.

[edit] RT61

基于PCI/PCMCIA卡的Ralink的后来的802.11g的芯片(包括那些支持转悠的MIMO模式的芯片)。

详见RT61的wiki页面.

[edit] RT73

基于USB设备的Ralink的后一代的802.11g的芯片(包括那些支持受限的MIMO模式的)。 详见RT73的wiki页面.

[edit] madwifi

pacman -S madwifi

这个模块叫做 ath_pci. 为了能够使用所在国家制定的关于channels和transmit power settings, 你可能需要在加载MadWifi驱动的时候添加一个countrycode的配置项. 例如, 在荷兰的时候, 你可能需要用如下的代码来加载MadWifi驱动:

modprobe ath_pci countrycode=528

你可以使用 iwlist 命令来检查你的设置, 可以从 man iwlist 或者 CountryCode page on the MadWifi wiki 上面得到更多的信息. 为了让系统启动的时候就能够自动应用上那些设置, 可以把它们放到 /etc/modprobe.conf 文件中去:

options ath_pci countrycode=528

注意: 我不得不完全移除那些countrycode的选项否则ath0设备不被创建(andyrtr, kernel 2.6.21)!

[edit] ipw2100 与 ipw2200

根据你的芯片型号,执行:

pacman -S ipw2100-fw

或者:

pacman -S ipw2200-fw

然后重新启动来加载驱动。

[edit] iwl3945 与 iwl4965

Intel的新iwlwifi 项目 驱动同时支持这两款芯片,该驱动已集成到Linux内核2.6.24以上的内核中。可以用下边的命令轻松安装你的芯片驱动:

pacman -S iwlwifi-3945-ucode

或者:

pacman -S iwlwifi-4965-ucode

如果你的rc.conf中的MOD_AUTOLOAD 设置成了yes(默认就是yes),恭喜你,你的驱动已经安装完毕了. 重新启动并且在终端下运行ifconfig来检查你的驱动是否正常工作了.运行结果中应该包含一个wlan0的项.(译者注:lsmod |grep iwl可以查看驱动是否已经加载了)


如果你喜欢手动加载驱动(就是MOD_AUTOLOAD设成no的情况), 你可以把它加到MODULES 组里边去:

nano /etc/rc.conf

在MODULES=()的列表中添加 iwl3945或者iwl4965, 当然,这取决于你是3945ABG还是4965AGN的网卡

用CTRL + X, Y 退出nano并保存(译者废话两句:当然,你用gedit,kwrite等纯文本编辑器来编辑也完全没问题,但是千万别用windows下的写字板来编辑,这个家伙会把换行'0a'改成'0a 0d'而让你的配置文件坏掉).

这样,重启后就可以自动加载了。在终端中运行'ifconfig'会发现一个名字叫wlan0的新网络接口。


提示:如果iwlwifi驱动经测试没法使用(据译者的测试,iwlwifi就能用),不妨用windows下的NETw4x32驱动配合ndiswrapper来试试,可能会工作得很好。

[edit] ipw3945 (不推荐的方法)

注意: ipw3945驱动已经停止开发了. 上边提到的iwlwifi应该工作的很好

你应该安装 ipw3945-ucode, ipw3945, and ipw3945d (daemon).

# pacman -S ipw3945 ipw3945-ucode ipw3945d


为了能够启动的时候正确初始化驱动, 需要修改 /etc/rc.conf 文件(需要root权限)...

nano /etc/rc.conf

在modules=()那一行里面, 把ipw3945添加进去

MODULES=(... mii ipw3945 snd-mixer-oss ...)

在daemons()那一行里面, 把ipw3945d添加进去(ipw3945d必须在network和dhcdbd/networkmanager前面)

DAEMONS=(syslog-ng ipw3945d network ...)

用CTRL + X, Y来保存并退出

在"Loading Modules..."阶段ipw3945模块应该被加载进来, 并且在daemon初始化的时候, 你应该可以看到"Starting IPW3945d"之类的字样, 而且ehtX接口也应该存在了

更新: 在某人的HP nc6320机器上, 除非卸载了ipw3945这个模块, 否则蓝牙是无法连接的.

[edit] orinoco

这应当是内核的一部分,是已经被安装的。

[edit] ndiswrapper

Ndiswrapper并不是一个真正的驱动,但是如果你无法找到适合你的无线网卡驱动的适合, 它就派上用场了.有的时候, 它是非常有用的.为了使用Ndiswrapper, 你需要Windows驱动中的*.inf文件(*.sys文件应该和*.info在同一个目录中).下面是安装ndiswrapper的几个步骤:

用pacman来安装ndiswrapper:

pacman -Sy ndiswrapper ndiswrapper-utils

注意: 较早版本的内核需要安装的是ndiswrapper-beyond,而不是ndiswrapper!

注意: 如果你的Arch无法联网的话, 可以从ftp://ftp.archlinux.org/core/os/i686/下载ndiswrapper到本地硬盘来进行安装.需要下载的是ndiswrapper(或者ndiswrapper-beyond)和ndiswrapper-utils软件包.你也能也需要下载最新的内核kernel26(或者更早版本的内核),因为CD上面提供的内核版本可能不是最新的.

一旦安装好了ndiswrapper,就要开始配置的步骤了.

ndiswrapper -i filename.inf
ndiswrapper -l
ndiswrapper -m
depmod -a

现在基本上就要安装完ndiswrapper了; 剩下的工作就是更新一下/ect/rc.conf文件去设置当启动的时候加载这个模块(下面是一个简单的例子, 你的可能有些区别的):

MODULES=(ndiswrapper snd-intel8x0 !usbserial)

最主要的是要把ndiswrapper加到MODULES这一行里面去. 最好通过如下的命令测试一下ndiswrapper是否已经加载了:

modprobe ndiswrapper
iwconfig

如果正常的话, 你应该可以看到wlan0接口了. 如果有问题的话, 你可以从 Ndiswrapper installation wiki上面得到更多的信息.

[edit] prism54

这里下载与你的网卡匹配的固件驱动。将文件重命名为'isl3890'。如果不存在/lib/firmware那么创建之,然后将'isl3890'放进去。这应该有效。(forum source)

[edit] ACX100/111

从[unstable]库中下载并安装'tiacx'包。

pacman -S tiacx

注意:如果你发现kernel log中全是关于驱动的废话,很有可能是以为你正同时运行着Kismet和channel-hopping,你应当在/etc/modprobe.conf中添加

options acx debug=0

[edit] BCM43XX

Broadcom 43xx系列芯片的使用者有一种使用ndiswrapper的方法。 在2.6.17以上的内核中最好使用bcm43xx驱动.

  1. 运行
    iwconfig
    或者
    hwd -s
    来检查你是否有一个合适的网卡。我运行hwd -s的输出结果如下
    Network    : Broadcom Corp.|BCM94306 802.11g NIC module: unknown
    查看哪种支持设备,请看 here.
  2. 运行
    pacman -Sy bcm43xx-fwcutter
    安装firmware cutter application.
  3. 下载网卡的windows 驱动,要从中解压出 firmware.
  4. 如果是从戴尔官网下载,需要在windows或者wine下运行,(因为下载的是.exe文件,点击安装会自动解压到C:\Dell\[driver numbers])) 或者可以尝试这两个 [1] 或者[2]. 只要把下载到的文件保存到桌面,这样就不需要上面一步了。
  5. 运行
    bcm43xx-fwcutter -w /lib/firmware /home/<user>/Desktop/wl_apsta.o
    需要在运行之前新建文件夹 /lib/firmware 。
  6. 重启,确认运行正常。 把 bcm43xx 加入到rc.conf的 modules section里。 Good luck!

[edit] b43

相对于bcm43xx,这驱动相对较好解决,而且驱动已经包含在2.6.24及以上的内核中了.

  1. 运行
    hwd -s
    来检验你是否有一块合适的网卡。我运行hwd -s输出的结果如下:
    Network    : BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller module: unknown
    被支持的设备列表见这里.#重新安装固件驱动。名字是b43-fwcutter。
  2. 下载Broadcom的4.80.53.0版本的受限制的驱动:
    wget http://downloads.openwrt.org/sources/broadcom-wl-4.80.53.0.tar.bz2
  3. 解压缩.
    tar xjf broadcom-wl-4.80.53.0.tar.bz2
  4. 将当前目录变为一个刚建立的目录,再进入kmod目录:
    cd broadcom-wl-4.80.53.0/kmod
  5. 如果你没有/lib/firmware目录那么就建立一个,然后运行
    b43-fwcutter -w "/lib/firmware/" wl_apsta.o
  6. 重启,将你的设备正确配置一下。把b43加入配置文件/etc/rc.conf的modules段!

[edit] rtl8187

参见rtl8187的wiki页面.

[edit] zd1211rw

zd1211rw 是ZyDAS ZD1211 802.11b/g USB WLAN芯片的驱动,最近的版本的内核已经包括了。[3]有被支持的设备列表。 你只需要这样安装固件驱动:
pacman -Sy zd1211-firmware

[edit] Part II: 无线网络管理

为了管理已经安装好的无线驱动,并且使无线能正常工作,需要安装一个无线连接管理工具。 The following subsections will help you decide the best way to do just that.

[edit] 基于Arch 的无线网络管理

Arch Linux 为管理无线连接提供了多种解决方案。你可以根据需要选择一种最适合你自己的方案。

[edit] 在/etc/rc.conf中设置

  • /etc/rc.conf 文件中的网络部分是“网络脚本”的配置文件. 因此,你可以利用/etc/rc.conf这个文件定义并配置一个简单的无线连接,例如:
# /etc/rc.conf
eth0="dhcp"
wlan0="dhcp"
wlan_wlan0="wlan0 essid MyEssid"
#wlan_wlan0="wlan0 essid MyEssid key 12345678"
#wlan_wlan0="wlan0 essid MyEssid key s:wirelesspassword"
INTERFACES=(eth0 wlan0)

(并不是所有的无线网卡都是wlan0. 这取决于你的网络接口配置,你可以用ifconfig -a来查看你的网络接口。举个例子:如果你的无线网络接口是ath0的话,你就应该把wlan_wlan0改成wlan_ath0:

# /etc/rc.conf
eth0="dhcp"
ath0="dhcp"
wlan_ath0="ath0 essid MyEssid"
……
INTERFACES=(eth0 ath0)

)

  • 当然,你也可以在/etc/conf.d/wireless中设置你的无线网络(这个文件也是“网络脚本”的配置文件), 举个例子:
# /etc/conf.d/wireless
wlan_wlan0="wlan0 essid MyEssid"

[edit] Netcfg2

Netcfg2是一个多功能的网络管理器,这个更好用也更通用,可能是你首选的管理方式, 除非你想在多个网络中漫游(netcfg2没有漫游功能).

文档: Netcfg2网络攻略

更多资料在这里: Network Scripts

[edit] wireless-tools

这些强大的控制台工具十分有效而且能够实现完全的、手工的控制。这些例子假设你的无线设备是wlan0。将wlan0换成你自己的设备名称。 很多网卡需要你的核心接口是打开的,这样你才能使用无线工具:

ifconfig wlan0 up

扫描可用接入口:

iwlist wlan0 scan

利用扫描结果,告诉你的无线设备去用哪一个接入口。例如:

iwconfig wlan0 essid linksys

然后像平时一样设置网络接口。简单的例子如下:

dhcpcd wlan0

或者

ifconfig wlan0 192.168.0.2
route add default gw 192.168.0.1

[edit] 第三方无线管理工具

有众多的无线管理方式可以取代上面所说的脚本方式。

[edit] NetworkManager

除了能管理有限链接,NetworkManager还提供了一个易于使用的图形界面程序来选择你想要的的无线移动链接。

详情请见 NetworkManager

[edit] Wicd

Wicd 是一个网络管理工具,能够同时管理无线和有线连接。程序是用Python 和 Gtk写的,比NetworkManager对依赖的要求 更少, 非常适合轻量级桌面用户。 Wicd 现在已经被放在extra里面,有适合 i686和x86_64的版本。

想了解更多,请阅读 Wicd 的wiki.

[edit] Wifi Radar

WiFi Radar是一个Python/PyGTK2的管理无线配置的程序(只有无线的)。它能够扫描可用的网络、为你所选择的网络创建新的配置。

详情请见Wifi Radar

[edit] Wlassistant

Wlassistant是一个非常简单直观的图形界面无线网连接管理程序。 安装方法如下:

pacman -S wlassistant

Wlassistant必须以root权限运行:

sudo wlassistant

一种使用wlassistant管理/etc/rc.conf里面有的无线网卡的方法是指出你经常使用的链连接点。开机后你的网卡就会自动连接到这个essid,但是如果其他的无线网络是需要的/可用的,wlassistant在那时会请求连入它们。通过在名称前加一个@来后台运行/etc/rc.conf中的network守护程序来减少开机等待时间。

[edit] 其他资源

Personal tools