此更新是個較為簡單的方法令 wifi 界面在開機的過程中自動連接。原有的版本已收錄在下文供參考。
為何要有更新版?
執行 iwconfig 來找出 wifi 設備。在這個樣例輸出,wlan0 是唯一支持 wifi 的設備。
# iwconfig lo no wireless extensions. wlan0 IEEE 802.11bgn ESSID:"NETWORKSSID" Mode:Managed Frequency:2.462 GHz Access Point: 68:7F:74:AD:F3:3C Bit Rate=54 Mb/s Tx-Power=16 dBm Retry long limit:7 RTS thr:off Fragment thr:off Encryption key:off Power Management:on Link Quality=50/70 Signal level=-60 dBm Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:90 Missed beacon:0 eth0 no wireless extensions. pan0 no wireless extensions. virbr0 no wireless extensions. virbr0-nic no wireless extensions. #
編輯這個界面的 ifcfg。就以 wlan0 為例:
/etc/sysconfig/network-scripts/ifcfg-wlan0
確保 ONBOOT 這個選擇已被啟用。
ONBOOT="yes"
請確保你的設備已包含在此文件的 INTERFACES 行內。在這個例子中,wlan0 是唯一獲 wpasupplicant 支持的設備。
# Use the flag "-i" before each of your interfaces, like so: # INTERFACES="-ieth1 -iwlan0" INTERFACES="-iwlan0"
你多數的網絡都需要在 wpa_supplicant.conf 內擁有如下的設置一則。請為每個網絡填入相屬的 NETWORKSSID 及 NETWORKPSK 數值。請以你選用它們的優先次序來進行排序。
network={ ssid="NETWORKSSID" scan_ssid=1 key_mgmt=WPA-PSK psk="NETWORKPSK" }
以下樣例是一個不采用預先共享金鑰的網絡。要是它被放置於 any 網絡之前,它會比其它公開網絡獲優先選用。
network={ ssid="PUBLIC" key_mgmt=NONE }
最後一個選項(你或許不想選用它)可讓你連接至任何公開網絡。這個選項在酒店很奏效,但可能會連接至不理想的網絡。
network={ key_mgmt=NONE }
貼入以下文字來創建一個新文件,它會執行 wifi 連接所須的後台服務。
cat > /etc/init.d/prepnet <<EoT #!/bin/sh /etc/init.d/messagebus start /etc/init.d/wpa_supplicant start killall dhclient >/dev/null 2>&1 EoT chmod a+rx /etc/init.d/prepnet ln -s /etc/init.d/prepnet /etc/rc3.d/S09prepnet ln -s /etc/init.d/prepnet /etc/rc5.d/S09prepnet
Paste the following commands to configure services.
chkconfig messagebus off chkconfig wpa_supplicant off chkconfig NetworkManager off chkconfig network on
下次重新開機的時候,你的 wifi 連接在網絡服務引導時便會被啟用。
如果你需要新增或編輯 wifi 網絡,請改動 wpa_supplilcant.conf。
/etc/wpa_supplicant/wpa_supplicant.conf
接著重新引導 wpa_supplicant 及 network 服務。
service wpa_supplicant restart service network restart
如果你像我一般,只會進出數個受 WPA 保護的無線網絡,而且想筆記本在開機時連接到本地的無線網絡,這裡有一個簡單的方法。
請注意你可以利用 NetworkManager 來達成目的,但它缺省不會在開機時連接到一個網絡 —— NetworkManager 需要一位用戶登錄,並將金鑰環的訪問權賦予它,好讓它能取回 WPA 金鑰。
這裡是一個啟用 wpa_supplicant 而不需要 NetworkManager 的方法,並且令計算機在開機時連接。你有必要編輯配置文件,因此假若你不太樂意這樣做,你應該考慮采用 NetworkManager。
你多數的網絡都會需要在 wpa_supplicant.conf 內擁有一個如此的記錄:
network={ ssid="MYNETWORKSSID" scan_ssid=1 key_mgmt=WPA-PSK psk="MYNETWORKPSK" }
明顯地,你必須以你想連接的網絡的 SSID 及 PSK 來取代 MYNETWORKSSID 及 MYNETWORKPSK。
請在這個文件的底部加入下列內容:
if [ "$WPA" = "yes" -a -x /etc/init.d/wpa_supplicant ]; then /sbin/service wpa_supplicant start fi
在 /etc/sysconfig/network-scripts 內有數個描述網絡界面的文件,例如 ifcfg-eth0(大概是你的乙太網絡),及一個名叫 ifcfg-wlan0 或 ifcfg-eth1 的文件,用來描述你的無線網絡。
用來描述你的無線網絡界面的文件應該含有以下一行:
TYPE=Wireless
請在這個文件的底部加入以下一行:
WPA=yes
我 們現在已經設置 wpa_supplicant 在你的無線網絡界面引導時一起引導。很不幸地,CentOS 的腳本引導次序並不正確 —— 它會嘗試在 DBUS 引導前引導無線網絡(並帶動 wpa_supplicant),然而 wpa_supplicant 需要 DBUS 才能連作。
最簡單快捷的解決方法就是在 /etc/rc.d/rc.local 的底部加入下面這行,讓你的無線網絡最遲引導:
/sbin/ifup eth1
(如果你的無線界面是 wlan0,這便是 /sbin/ifup wlan0)。
這樣做會讓所需的程序預先執行,然後在開機過程結束時引導無線界面及 wpa_supplicant。
由於我們在相關的網絡界面 ifup 腳本裡直接引導 wpa_supplicant,我們無需在開機時利用 init 引導它。請這樣停止它:
chkconfig wpa_supplicant off你亦可以通過 Network Device Control 應用程序來阻止無線網絡界面(eth1 或 wlan0)於開機時自動引導,這是由於我們在 rc.local 所做的改動會自行引導這個界面。