俺様サーバー構築記 - Arch Linux + ZFS の無線LAN設定@ノートパソコン2台目(BIOS)

「[俺様サーバー構築記 - 基本方針](https://qiita.com/katz_engineer/items/dbabcff4e14e9db2b10f)」に基づいて自宅サーバーの構築を進め、[ノートパソコンにも Arch Linux + ZFS をインストール](https://qiita.com/katz_engineer/items/9d177766baf95c1e2674)しました。

が、このノートパソコン lenovo R500 2714-CTO は無線LANが使えないようです…:sob:

そこで掘り出してきた、更に古いノートパソコン。相当昔にカミさんが廃棄処分にして、私が部屋の隅に転がしておいた奴。これに Arch Linux を入れて再生します。

# 前書き：マシンスペック

機種：lenovo 3000 V100 (TYPE: 0763-5XJ)
CPU: Intel Core Duo T5500
クロック: 1.66GHz
メモリ: 1GB
HDD: 150GB

元は Windows Vista が入っていました。それでもCPUは、一応64ビットなんですね。メモリが1GBしかなくてZFSにはギリギリですが、やるだけやってみます。いずれは2GB以上にしないとですね…

# インストール

前回までのノートパソコンと全く同じインストールをしました。

[俺様サーバー構築記 - ZFS の上に Arch Linux をインストール@ノートパソコン(BIOS)](https://qiita.com/katz_engineer/items/9d177766baf95c1e2674)
[俺様サーバー構築記 - Arch Linux + ZFS に Xfce をインストール →回復術とやり直し@ノートパソコン(BIOS)](https://qiita.com/katz_engineer/items/f42a2536c74b9123bc33)
[俺様サーバー構築記 - Arch Linux + ZFS + Xfce に入れた物などの覚書@ノートパソコン](https://qiita.com/katz_engineer/items/dba7305d802c71053610)
[俺様サーバー構築記 - Arch Linux + ZFS + GRUB に緊急起動メニューを付ける@ノートパソコン(BIOS)](https://qiita.com/katz_engineer/items/d7d3e039832c95a584cc)

# スナップショット

何はともあれスナップショット。

（2019/03/25 修正ここから）
スナップショットの更新日時は /.zfs/snapshot/ には反映されないようです。そのためスナップショット名に日時を付けるように変更しました。

```
$ su
パスワード:
# zfs snapshot tank/main@$(date +%Y%m%d_%H%M%S)_before_wifi
# exit
exit
```
（2019/03/25 修正ここまで）

# 無線LAN

参考文献: [ワイヤレス設定 - ArchWiki](https://wiki.archlinux.jp/index.php/%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%AC%E3%82%B9%E8%A8%AD%E5%AE%9A)

## ドライバーの状態を確認する

```
$ lspci -k | grep -i wireless
04:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
	Subsystem: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection
$ lspci -ks 04:00.0
04:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
	Subsystem: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection
	Kernel driver in use: iwl3945
	Kernel modules: iwl3945
```

無線インターフェイスが作成されているか確認。

```
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp10s7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:af brd ff:ff:ff:ff:ff:ff
3: wlp4s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:5f brd ff:ff:ff:ff:ff:ff
```

wlp4s0 が無線インターフェイスですね。UPしていないので、下記コマンドを実行します。

```
$ su
パスワード:
# ip link set wlp4s0 up
```

それから無線インターフェイスがUPした事を確認。

```
# ip link show wlp4s0
3: wlp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:11:22:33:44:5f brd ff:ff:ff:ff:ff:ff
```

実は、最初、何度やってもUPしなかったんです。```Operation not possible due to RF-kill``` というエラーが出ました。これが何度やっても収まらない。色々と散々やって最終的にわかった事は、物理的な接触不良。やられました。裏蓋を開けて無線インターフェイスカードを抜き差ししたら直りました…

## ワイヤレス管理

ArchWikiに従って、まずは手動セットアップを試してみます。実際にやってみると、それほど難しくはありませんでした。

### 手動セットアップ

#### ツールのインストール

```
# pacman -Syy
:: パッケージデータベースの同期中...
〈省略〉
# pacman -S iw wpa_supplicant
〈省略〉
```

#### 情報を取得する

```
# iw dev
phy#0
	Interface wlp4s0
		ifindex 3
		wdev 0x1
		addr 00:19:d2:97:fa:5f
		type managed
		txpower 15.00 dBm
# iw dev wlp4s0 link
Not connected.
```

#### アクセスポイント検索

```
# iw dev wlp4s0 scan | grep SSID
	SSID: 〈我が家のアクセスポイントのSSID〉
	〈以下省略〉
```

#### 関連付け

参考文献：[WPA supplicant - ArchWiki](https://wiki.archlinux.jp/index.php/WPA_supplicant)

```/etc/wpa_supplicant/wpa_supplicant.conf``` は存在しません。

```
# ls -a /etc/wpa_supplicant/
.  ..
```

必要な内容で作成し、コマンドを実行します。
無線インターフェイスが1つしか無い場合は、オプション ```-i wlp4s0``` は省略できるようです。

```
# cat >/etc/wpa_supplicant/wpa_supplicant.conf <<___
> ctrl_interface=/run/wpa_supplicant
> update_config=1
> ___
# wpa_supplicant -B -i wlp4s0 -c /etc/wpa_supplicant/wpa_supplicant.conf 
Successfully initialized wpa_supplicant
```

```wpa_cli``` コマンドを使って操作します。

```
# wpa_cli
wpa_cli v2.6
Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi> and contributors

This software may be distributed under the terms of the BSD license.
See README for more details.


Selected interface 'wlp4s0'

Interactive mode

> scan
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>CTRL-EVENT-NETWORK-NOT-FOUND 
> scan_results
bssid / frequency / signal level / flags / ssid
aa:bb:cc:dd:6e:f4	5180	-37	[WPA2-PSK-CCMP][ESS]	〈我が家のSSID〉
aa:bb:cc:dd:6e:f3	2462	-36	[WPA2-PSK-CCMP][ESS]	〈我が家のSSID〉
11:22:33:44:d0:86	2412	-81	[WPA-PSK-CCMP][WPA2-PSK-CCMP][ESS]	〈知らないSSID〉
> add_network
0
> set_network 0 ssid "〈我が家のSSID〉"
OK
> set_network 0 psk "〈我が家のSSIDのパスワード〉"
OK
> enable_network 0
OK
<3>CTRL-EVENT-SCAN-STARTED 
<3>CTRL-EVENT-SCAN-RESULTS 
<3>WPS-AP-AVAILABLE 
<3>CTRL-EVENT-SSID-REENABLED id=0 ssid="〈我が家のSSID〉"
<3>SME: Trying to authenticate with aa:bb:cc:dd:6e:f3 (SSID='〈我が家のSSID〉' freq=2462 MHz)
<3>Trying to associate with aa:bb:cc:dd:6e:f3 (SSID='〈我が家のSSID〉' freq=2462 MHz)
<3>Associated with aa:bb:cc:dd:6e:f3
<3>CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
<3>WPA: Key negotiation completed with aa:bb:cc:dd:6e:f3 [PTK=CCMP GTK=CCMP]
<3>CTRL-EVENT-CONNECTED - Connection to aa:bb:cc:dd:6e:f3 completed [id=0 id_str=]
> save_config
OK
> quit
```

ここでLANケーブルを抜いて、ブラウザで今までに開いた事の無いWebサイトでも表示してみましょう。今まで一度も検索した事の無い出鱈目な文字列を検索すればいいと思います。それで表示に成功すれば、無線LANが使えるようになりました！

…なんて事をせずに、コマンド ```ip addr``` でも確認できるんですが。

上手く接続できたら、その状態で起動時に自動接続されるようにします。

```
# cd /etc/wpa_supplicant/
# mv -v wpa_supplicant.conf wpa_supplicant-wlp4s0.conf
renamed 'wpa_supplicant.conf' -> 'wpa_supplicant-wlp4s0.conf'
# systemctl enable wpa_supplicant@wlp4s0
Created symlink /etc/systemd/system/multi-user.target.wants/wpa_supplicant@wlp4s0.service -> /usr/lib/systemd/system/wpa_supplicant@.service.
```

確認します。

```
# reboot
```

再起動後に ```ip addr``` します。

```
$ ip addr show wlp4s0
3: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:11:22:33:44:5f brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.225/24 brd 10.0.1.255 scope global dynamic wlp4s0
       valid_lft 86281sec preferred_lft 86281sec
    inet6 fe80::219:d2ff:fe97:fa5f/64 scope link 
       valid_lft forever preferred_lft forever
```

つながりました！

# スナップショットの破棄

ここまで出来たら、スナップショットを残しておく意味は無いでしょう。

（2019/03/25 修正ここから）

```
# zfs list -t snapshot -o name -s name | tail -n1 | xargs -t zfs destroy
zfs destroy tank/main@20190325_012050_before_wifi
# zfs list -t snapshot
NAME                                    USED  AVAIL  REFER  MOUNTPOINT
tank/main@20190324_145207_before_Xfce  16.7M      -  1.91G  -
tank/main@20190324_150434_before_nkf   20.0M      -  3.58G  -
```
（2019/03/25 修正ここまで）

これで全部完了です。
やったね:thumbsup_tone1: