Hummingboard をつかってみるよ!

その4 wifi を使うまで

xbmc がちょっと残念だったので、 せっかくだから買っておいた wifi アダプタで無線LAN できるようにしてみます。 勿体ないしね・・・w

(1) 固定 IPアドレスで wifi を使えるようにする!

(a) netctl をつかってみる

有線 LAN の時は、systemd-networkd というものを使用しましたが、 今回は netctl を使用してみます。

詳細は・・・
netctl (日本語)

(a) wifi アダプタを USB に接続する

私と同じアダプタならば問題なく認識されるはずです。逆にうまくいかない方は・・・すいません私では力不足でわかりませんw

どのように認識されたかは ip addr show で確認できます。

[ntaka@alarm ~]$ ip add show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether d0:63:b4:00:52:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.62/24 brd 192.168.24.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2001:a089:6264:0:d263:b4ff:fe00:52ef/64 scope global mngtmpaddr dynamic
       valid_lft 6517sec preferred_lft 5617sec
    inet6 fe80::d263:b4ff:fe00:52ef/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether b0:c7:45:ee:8e:44 brd ff:ff:ff:ff:ff:ff
		

wlan0 というデバイスらしいです。これを覚えておいてください。

(b) 必要ならば netctl をインストールする
[ntaka@alarm ~]$ sudo pacman -S netctl
warning: netctl-1.9-1 is up to date -- reinstalling
resolving dependencies...
looking for inter-conflicts...

Packages (1): netctl-1.9-1

Total Download Size:    0.03 MiB
Total Installed Size:   0.18 MiB
Net Upgrade Size:       0.00 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages ...
 netctl-1.9-1-any          35.3 KiB  97.0K/s 00:00 [######################] 100%
(1/1) checking keys in keyring                     [######################] 100%
(1/1) checking package integrity                   [######################] 100%
(1/1) loading package files                        [######################] 100%
(1/1) checking for file conflicts                  [######################] 100%
(1/1) checking available disk space                [######################] 100%
(1/1) reinstalling netctl                          [######################] 100%
		

ん? 勢い余ってインストールしましたが、すでに入っている模様です。 もし入ってないようでしたら、インストールすれば良いと思います。

(c) wpa_supplicant をインストールする

説明書にキーを暗号化するためには wpa_passphrase を使用するとの説明があります。 そこで wpa_supplicant をインストールします。

パスワードを平文で保存したくない場合、256-bit Encrypted PSK を生成するという方法があります。 これはパスフレーズと SSID から標準アルゴリズムを使って計算します。

省略・・・

wpa_passphrase を使ってあなたの 256-bit Encrypted PSK を生成してください:
[ntaka@alarm ~]$ sudo pacman -S wpa_supplicant
resolving dependencies...
looking for inter-conflicts...

Packages (2): libnl-3.2.25-1  wpa_supplicant-2.3-1

Total Download Size:    0.70 MiB
Total Installed Size:   2.47 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages ...
 libnl-3.2.25-1-armv7h                        219.2 KiB   190K/s 00:01 [#######################################] 100%
 wpa_supplicant-2.3-1-armv7h                  496.5 KiB   566K/s 00:01 [#######################################] 100%
(2/2) checking keys in keyring                                         [#######################################] 100%
(2/2) checking package integrity                                       [#######################################] 100%
(2/2) loading package files                                            [#######################################] 100%
(2/2) checking for file conflicts                                      [#######################################] 100%
(2/2) checking available disk space                                    [#######################################] 100%
(1/2) installing libnl                                                 [#######################################] 100%
(2/2) installing wpa_supplicant                                        [#######################################] 100%
Optional dependencies for wpa_supplicant
    wpa_supplicant_gui: wpa_gui program
		
(c) 設定

設定を行います。説明書通りサンプルからコピーすれば良いでしょう。まず、サンプルを確認してみます。

[ntaka@alarm ~]$ ls /etc/netctl/examples
bonding          mobile_ppp      wireless-open
bridge           openvswitch     wireless-wep
ethernet-custom  pppoe           wireless-wep-string-key
ethernet-dhcp    tunnel-he-ipv6  wireless-wpa
ethernet-static  tuntap          wireless-wpa-config
macvlan-dhcp     vlan-dhcp       wireless-wpa-configsection
macvlan-static   vlan-static     wireless-wpa-static
		

今回も固定IPで設定しますので、wireless-wpa-static を使用します。 /etc/netctl へ wlan と名前を変えてコピーします。 (wlan は任意です。長いとややこしいので短くしました)

[ntaka@alarm examples]$ sudo cp /etc/netctl/examples/wireless-wpa-static /etc/netctl/wlan
		

中身を nano で見てみます。

[ntaka@alarm ~]$ sudo nano -w /etc/netctl/wlan
		
Description='A simple WPA encrypted wireless connection using a static IP'
Interface=wlan0
Connection=wireless
Security=wpa
ESSID='MyNetwork'
Key='WirelessKey'
IP=static
Address='192.168.1.23/24'
Gateway='192.168.1.1'
DNS=('192.168.1.1')
# Uncomment this if your ssid is hidden
#Hidden=yes
		

ここにいろいろ書いていけば良いわけですね。 nano をいったん終了して、キーを平文で保存したくないので暗号化します。 といっても、人間が読めなくなるだけなので、暗号化されたキーをパクられたらお仕舞いですけどね。 まあ、こんな長い文字列瞬間で暗記できる人はいないでしょうし、気休めにはなるでしょ。

手順は説明書通りで OK です。事前に SSID と ご自身の無線ルータの設定を確認しておいてくださいね。 ここでは、以下のように設定されているとします。

  • セキュリティは WPA2-PSK
  • SSID testssid
  • 事前共有キー 123456789
[ntaka@alarm ~]$ wpa_passphrase testssid 123456789
network={
        ssid="testssid"
        #psk="123456789"
        psk=8ebcd15c88a7ccc0f30b2277fc35ef21b40229c2232953700c698b5c7e9424a0
}
		

この psk=8ebcd15c88a7ccc0f30b2277fc35ef21b40229c2232953700c698b5c7e9424a0 というのが、暗号化されたキーとなります。 どっかにコピーしておくか、SSH で新しいウインドウを開き直して作業を続行します(何個でも開けます)。

再度、nano で設定ファイルを開いて、先ほどのキーを入力します。その際に注意があるのですが、 先ほどのキーの先頭へ ¥” を付加する必要があります。また、以下のように設定するとします。

  • IPアドレス 192.168.24.63
  • サブネットマスク 255.255.255.0
  • ゲートウェイ 192.168.24.1
  • DNS 192.168.21.1
[ntaka@alarm ~]$ sudo nano -w /etc/netctl/wlan
		
Description='A simple WPA encrypted wireless connection using a static IP'
Interface=wlan0
Connection=wireless
Security=wpa
ESSID=testssid
Key=\"8ebcd15c88a7ccc0f30b2277fc35ef21b40229c2232953700c698b5c7e9424a0
IP=static
Address='192.168.24.63/24'
Gateway='192.168.24.1'
DNS=('192.168.24.1')
# Uncomment this if your ssid is hidden
Hidden=yes ← ステルスの場合は # を外してコメントアウトします。
ExecUpPost='/usr/bin/ntpd -gq || true' ← 時刻サーバーと同期する設定
		
(d) netctl をスタートしたいけど結構大変だった・・・

で、ですね netctl をこのままスタートすると失敗します。

うーん、説明書には systemd-networkd は netctl と共存できるとあるのですが、 どうもうまくいきませんでした。

そこで、systemd-networkd を無効化してしまいます。 別に消すわけじゃなく、いつでも元に戻せるのでご心配なく。

systemd-networkd を無効化
[ntaka@alarm ~]$ sudo systemctl disable systemd-networkd

再起動
[ntaka@alarm ~]$ sudo reboot

再起動後はもちろんSSH は使えなくなるので注意!
		

再起動後、netctl を有効にします。

[ntaka@alarm ~]$ sudo netctl start wlan
		

設定が合っていれば、接続できるはずです。 ip addr show で確認してみます。

[ntaka@alarm ~]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether d0:63:b4:00:52:ef brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether b0:c7:45:ee:8e:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.63/24 brd 192.168.24.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 2001:a089:6264:0:b2c7:45ff:feee:8e44/64 scope global mngtmpaddr dynamic
       valid_lft 6750sec preferred_lft 5850sec
    inet6 fe80::b2c7:45ff:feee:8e44/64 scope link
       valid_lft forever preferred_lft forever
		

きちんと接続できているようですね。正常であれば、永続化しておきましょう。

[ntaka@alarm ~]$ sudo netctl enable wlan
		

元の有線LANに戻したいのなら、

netctl を無効化
[ntaka@alarm ~]$ sudo netctl disable wlan

systemd-networkd を有効化
[ntaka@alarm ~]$ sudo systemctl enable systemd-networkd

再起動
[ntaka@alarm ~]$ sudo reboot
		

で良いと思います。

次回へすすむ