ラズパイ奮闘記 〜導入編〜


以前買ったラズパイが壊れていたので、新しく購入しました。
最近は RedHat 系の Linux を触ることがおおく、Debian 系との違いに苦労しています。

## インストール
raspbian 公式サイトから .img を落として SD カードにそのまま焼きました。
昔使っていた SD カードだとブートローダの立ち上げで失敗して起動しませんでしたが、新しく買い直したら行けました。
相性問題でしょうか。

買った SD カードは SanDisk の 16 GB のクラス 10 です。

## 初期設定
### GUI 初期設定
GUI でインストールしたので、以下のようなもろもろの初期設定は GUI でやってくれました。

* ロケーション・タイムゾーン
* キーボードタイプ
* Wifi 設定
* pi ユーザのパスワード
* パッケージのアップデート

### root のパスワード
パスワードを設定します。

```
root@raspberrypi:~# passwd root
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
```

### パッケージインストール
以降の手順で tcpdump や dig を使いたかったのでインストールしました。

```
# sudo apt install dnsutils
# sudo apt install tcpdump
```

### ホスト名
ホスト名を確認しました。このままで良いでしょう。

```
root@raspberrypi:~# hostname
raspberrypi
root@raspberrypi:~# cat /etc/hostname
raspberrypi
root@raspberrypi:~# cat /etc/hosts
127.0.0.1	localhost
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

127.0.1.1	raspberrypi
```

### 固定 IP アドレス
とりあえず現状以下の IP アドレスが振られていました。
DHCP がいい感じにしてくれたんでしょうか。
eth0 が物理ケーブル、wlan0 が wifi のようです。

````
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:75:e0:b2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.12/24 brd 192.168.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 2402:6b00:363a:ae00:****:****:123:a1dd/64 scope global mngtmpaddr noprefixroute dynamic 
       valid_lft 274sec preferred_lft 274sec
    inet6 fe80::****:****:1cc6:2140/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether b8:27:eb:20:b5:e7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.13/24 brd 192.168.0.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 2402:6b00:363a:ae00:****:****:a9f2:f2cc/64 scope global mngtmpaddr noprefixroute dynamic 
       valid_lft 152sec preferred_lft 152sec
    inet6 fe80::****:****:1ec7:2ae6/64 scope link 
       valid_lft forever preferred_lft forever
```

DNS サーバ設定はされており、名前解決できます。
/etc/resolv.conf は resolvconf とやらに自動生成されてます。

```
root@raspberrypi:~# dig google.com | grep "ANSWER SEC" -A1
;; ANSWER SECTION:
google.com.		230	IN	A	172.217.161.206

root@raspberrypi:~# cat /etc/resolv.conf
# Generated by resolvconf
nameserver 192.168.0.1
nameserver 2402:****:****:****:****:****:****:e8f0
```

/etc/sysconfig もなく、NetworkManager もなく困惑しました。
/etc/dhcpcd.conf で設定するそうです。

```bash:dhcpcd.conf
interface wlan0
static ip_address=192.168.0.13/24
#static ip6_address=fd51:****:****:d92e::ff/64
static routers=192.168.0.1
domain_name_servers=192.168.0.1 2402:****:****:****:****:****:****:e8f0
```

### sshd 設定
とりあえず Basic 認証でログインできれば良いので、以下のコメントを外しました。

\# 初期設定では HostKey が全てコメントになっていました。
\# どうやって SSH ハンドシェイクするんでしょう……？

```bash:/etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
PermitRootLogin yes
```

自動起動を有効にしつつ、sshd を起動します。

```
root@raspberrypi:~# systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
root@raspberrypi:~# systemctl start ssh
```

ソケットオープンしました。

```
root@raspberrypi:~# ss -aneop |grep ssh|grep :22
tcp    LISTEN     0      0         *:22                    *:*                   users:(("sshd",pid=16482,fd=3)) ino:44581 sk:aa88abc0
```

ssh 接続できました。

```
$ ssh root@192.168.0.13 -p 22
The authenticity of host '192.168.0.13 (192.168.0.13)' can't be established.
RSA key fingerprint is SHA256:l3zTU3PFKPFYyZ0W4OUm63wXn8eAuU5LT3NCC/FGPuU.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.13' (RSA) to the list of known hosts.
root@192.168.0.13's password: 
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Jun 22 23:56:05 2019 from 192.168.0.11
```

### OS 再起動
めちゃくちゃ早い。体感 10 秒くらいで再起動できたのでは。
びっくりした。

```
root@raspberrypi:~# systemctl reboot
```

問題なく ssh 接続できたので今日はこれでおしまい。

# 感想
構築しておしまい、動いたからOK、ではなんの勉強にもならないなと思った。
疑問に思ったことを一個一個深掘りして勉強していきたい。

# 今後の目標
dpkg コマンドの使い方を覚えよう。
/etc/dhcpcd.conf を勉強しよう。

# 参考
https://qiita.com/BearcubThaw/items/cde2494556d609115fb6