お気持ちの表明

思考を雑に外出していきます

Raspberry Pi Zero Wのセットアップ

あらまし

最近、リモート勤務が多くなって、自宅にいる時間が長くなってきたので、家環境をいい感じにしたい気がしていました。 冬休みを長めに取ったし、冬休みのお勉強がてら、おうちハックをキメてこうと思って、Raspberry PiのZero Wと3を買いました。

今日はとりあえず、Zeroのほうのセットアップをしたので、忘備録として書いとこうと思います。

やったこと

  • 家に既にあったRaspberry Piのホスト名を変えておく
  • はんだ付けする
  • イメージをSDに書き込む
  • Host名を書き換える

家に既にあったRaspberry Piのホスト名を変えておく

私の家には、家に既にRaspberry Pi Model Bがある。
電源を入れてsshしようとすると、avahi-daemonで使っているホスト名が被って繋がらなさそうな気がした。

とりあえず、今稼働中のRaspberry Piのホスト名を変更する。 ホスト名を変更したければ、/etc/hosts/etc/hostnameに記載されているraspberrypiという名前の箇所を任意に書き換えればいいので、書き換える。 今そのRaspberry Piは、低温調理機以外の運用をしていないので、sous-vide-cooker-piと命名しといた。

以下、元あったRaspberry Piの書き換えたファイル

$ cat /etc/hostname
sous-vide-cooker-pi

$ 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   sous-vide-cooker-pi

はんだ付けする

各種センサーを買ったりしたら、こいつを介して操作なり、値取得したいと思ったので、自前でピンをはんだ付けしとく。

f:id:symmt9302:20180101021043j:plain

はんだ付け最中に、カメラのコネクタ的な箇所を折ってしまった様子..........。
まあ、カメラつかわないと思うので、気にしないことにしておく。

f:id:symmt9302:20180101021016j:plain

イメージをSDに書き込む

とりあえず、本家からイメージをとってきます

デスクトップ環境はいらないので、LITEのほうを落としました

f:id:symmt9302:20180101020717p:plain

落としたイメージはEtcherという便利ツールでSDに書き込みます。 OSXでSDのイメージ焼くのダルかった印象あるんですけど、これつかうとサクッといけて最高でした。

セットアップを進める際に、OTGという機能を使ってUSB経由でRaspberry Piの設定をいじりたいので、書き込んだSDの中にある2ファイルを書き換えておく。

cmdline.txt

rootwaitquiet の間に modules-load=dwc2,g_ether を追記する

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=37665771-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait modules-load=dwc2,g_ether quiet init=/usr/lib/raspi-config/init_resize.sh

config.txt

末尾にdtoverlay=dwc2を追加する

$ echo "dtoverlay=dwc2" >> /Volumes/boot/config.txt

ssh

sshできるようにするために、中身は空で良いのでsshというファイルを作っておく

$ pwd
/Volumes/boot

$ touch ssh

$ ls
COPYING.linux          bcm2708-rpi-0-w.dtb    bcm2708-rpi-cm.dtb     bcm2710-rpi-cm3.dtb    config.txt             fixup_db.dat           kernel.img             ssh                    start_db.elf
LICENCE.broadcom       bcm2708-rpi-b-plus.dtb bcm2709-rpi-2-b.dtb    bootcode.bin           fixup.dat              fixup_x.dat            kernel7.img            start.elf              start_x.elf
LICENSE.oracle         bcm2708-rpi-b.dtb      bcm2710-rpi-3-b.dtb    cmdline.txt            fixup_cd.dat           issue.txt              overlays               start_cd.elf

wifiの設定

wpa_supplicant.confというファイルにWiFiの設定を記述する このファイルを作成しておくと、OS起動時に/etc/wpa_supplicant/wpa_supplicant.confを上書きしてくれるとのこと

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="自分ちのWiFiのSSID"
    psk="対応するPW"
}

ここまでできたら、Zero本体にSDカードをセットし、micro USBデータポートとPCのUSBポートを接続する
(ついでに購入していたケースに収めた)

f:id:symmt9302:20180101020649j:plain

OSXの「共有」の設定画面から「インターネット共有」を選択しRNDIS/Ethernet Gadgetをオンにして、「インターネット共有」をオンにする

f:id:symmt9302:20180101020705p:plain

ここまで一通り終えて何も問題なければ、USB経由でRaspberry Piにアクセスできるようになっている。
raspberrypi.localpingを飛ばすと、疎通が取れることを確認できる。

$ ping raspberrypi.local
PING raspberrypi.local (192.168.2.2): 56 data bytes
64 bytes from 192.168.2.2: icmp_seq=0 ttl=64 time=0.418 ms
64 bytes from 192.168.2.2: icmp_seq=1 ttl=64 time=0.437 ms
64 bytes from 192.168.2.2: icmp_seq=2 ttl=64 time=0.367 ms
64 bytes from 192.168.2.2: icmp_seq=3 ttl=64 time=0.334 ms
64 bytes from 192.168.2.2: icmp_seq=4 ttl=64 time=0.421 ms
64 bytes from 192.168.2.2: icmp_seq=5 ttl=64 time=0.317 ms
^C
--- raspberrypi.local ping statistics ---
6 packets transmitted, 6 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.317/0.382/0.437/0.046 ms

で、疎通が確認できたのでSSHしてみる
が、前のRaspberry Piの設定が残ってて怒られた\(^o^)/

$ ssh pi@raspberrypi.local
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The ECDSA host key for raspberrypi.local has changed,
and the key for the corresponding IP address 192.168.2.3
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:OKg7/purvgRAstmPcBClMoguGxtTq/fYEXgsncrr+uA.
Please contact your system administrator.
Add correct host key in /Users/symmt/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /Users/symmt/.ssh/known_hosts:12
ECDSA host key for raspberrypi.local has changed and you have requested strict checking.
Host key verification failed.

こうやって、以前のキーを無効にしておく

$ ssh-keygen -R raspberrypi.local
# Host raspberrypi.local found: line 12
/Users/symmt/.ssh/known_hosts updated.
Original contents retained as /Users/symmt/.ssh/known_hosts.old

これで、sshすると接続できるはず ifconfigして、WiFiもつながっていることを確認する

$ ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

usb0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether be:00:90:c1:b0:26  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.105  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::213:71d8:461d:dc5d  prefixlen 64  scopeid 0x20<link>
        ether b8:27:eb:d3:1a:24  txqueuelen 1000  (Ethernet)
        RX packets 408  bytes 63330 (61.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 122  bytes 21324 (20.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Host名を書き換える

ホスト名が他のRaspberry Piと被らないように変更しておく

$ cat /etc/hostname
raspberry-pi-zero

$ 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   raspberry-pi-zero

変更したホスト名でpingできることを確認する

$ ping raspberry-pi-zero.local
PING raspberry-pi-zero.local (192.168.2.7): 56 data bytes
64 bytes from 192.168.2.7: icmp_seq=0 ttl=64 time=0.694 ms
64 bytes from 192.168.2.7: icmp_seq=1 ttl=64 time=0.319 ms
^C
--- raspberry-pi-zero.local ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.319/0.506/0.694/0.188 ms

これで一通りの設定はできたと思うので、おしまい そのうち電子工作したらまた書く

参考