自動で wifi に繋がるようにしてみた

ももんが Advent Calendar 2012 ニ日目
一日目は さっちゃん(@ne_sachirou)で、二時間でももんがを作るヾ(〃l _ l)ノ゙ でした。

1 はじめに

やっぱり Advent Calendar 2012 のネタが思いつかなかったので今朝やったことを書いておくね。

引越しの時に、MobileCube を買ってそれでネットに繋いでいたんだけど、パソコンを起動する毎に、毎回:

% ~/bin/wireless-up.zsh

してた。
wireless-up.zsh の中身はこんな感じ:

#!/bin/zsh

sudo /sbin/ifconfig wlan0 up
sudo /usr/sbin/wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
sudo /usr/sbin/dhcpcd wlan0

マジでうざいんでこれを、自動でやって欲しかった。

2 手作業でつなげてみる

まずは、dhcpcd と wpa_supplicant をインストールしよう。

% yaourt -S dhcpcd wpa_supplicant

yaourt が無かったら、pacman でもいいよ。
aur じゃないから。
まずは、wpa_passphrase コマンドを打って /etc/wpa_supplicant.conf に書く設定を確認しなきゃいけないんだけど、 ${ssid} と ${secret_passphrase} があって分かりにくいと思ったので、MomongaCube っていう架空の WiMAX Wifi ルーターを登場させよう。 MomongaCube の裏にシールが貼ってあって、シールの表面にこう書いてある:

SSID: (momongacube)420666
KEY: momongamomonga

下で打ってる ${ssid} と ${secret_passphrase} はそれぞれ、(momongacube)420666 と momongamomonga に脳内置換してね。

% sudo wpa_passphrase '${ssid}' '${secret_passphrase}'

すると、

network={
        ssid="${ssid}"
        #psk="${secret_passphrase}"
        psk="......................"
}

って標準出力に表示されるので、これを /etc/wpa_supplicant.conf に目コピするか、コピーするかしてファイルの末尾に書いとこう。
または:

% sudo wpa_passphrase '${ssid}' '${secret_passphrase}' >> /etc/wpa_supplicant.conf

ってやると、末尾に追加されるので、楽だね。
これで wireless-up.zsh が使えるようになるよ。

3 自動でやってみる

今度は 2 を自動でやってくれるようにしよう。
netcfg をインストールするよ:

% yaourt -S netcfg

/etc/network.d っていうディレクトリができるので、/etc/network.d/examples の設定のお手本ファイルを /etc/network.d/ にコピーしとこう。
名前は何でもいいんだけど、momongacube にしておこうね。

% sudo cp /etc/network.d/examples/wireless_wpa /etc/network.d/momongacube

使うのは WiMAX Wifi ルーターなので、お手本にするのは wireless_wpa だね☆
wireless_wpa の中身はこんな感じ:

CONNECTION='wireless'
DESCRIPTION='A simple WPA encrypted wireless connection'
INTERFACE='wlan0'
SECURITY='wpa'

ESSID='MyNetwork'
## Uncomment if the supplied ESSID is hexadecimal
#ESSID_TYPE='hex'
KEY='WirelessKey'

IP='dhcp' 

# Uncomment this if your ssid is hidden
#HIDDEN=yes

変更するところは、ESSID と KEY だから、他のところはいじらないでね。
ESSID に ${ssid} を、KEY に ${secret_passphrase} を書いて保存。
こうするとこんな風になるんじゃないかな:

CONNECTION='wireless'
DESCRIPTION='A simple WPA encrypted wireless connection'
INTERFACE='wlan0'
SECURITY='wpa'

ESSID='${ssid}'
## Uncomment if the supplied ESSID is hexadecimal
#ESSID_TYPE='hex'
KEY='${secret_passphrase}'

IP='dhcp' 

# Uncomment this if your ssid is hidden
#HIDDEN=yes

後は:

% sudo systemctl enable netcfg

って打ったり、/etc/conf.d/netcfg の NETWORKS の括弧の中に momongacube って書いたり、

NETWORKS=(momongacube)

/etc/rc.conf の DAEMONS のとこに:

DAEMONS=(... net-auto-wireless ...)

って書いとけばおっけー。

明日は宝条みちる(@hojyo_michiru)さんです。   三(〃l _ l)ノ

4 参照