技術メモ

プログラミングとか電子工作とか

Raspberry Pi Zero Wのセットアップ

防備録も兼ねてRaspberry Pi Zero Wのセットアップ方法をかいておきます。
後で気づいたんですが多分IPの固定もheadless setupが可能だと思います。(時間があればどっかでチャレンジします)

必要なモノ

細々したのがめんどくさいという人はスターターキットを買ってしまうのも手でしょう。

amzn.to

セットアップ

OSのインストール

Raspberry Pi Imagerのセットアップ

今はRaspberry Pi Imagerという便利ツールがあるのでソレを利用すると簡単にSDカードのセットアップが出来ます。
Raspberry Piのサイトから該当のインストーラーをダウンロードしてインストールして下さい。

f:id:ysmn_deus:20210415142740p:plain

f:id:ysmn_deus:20210415142931p:plain
起動するとこんなかんじ

SDカードのセットアップ

Raspberry Pi Zeroは基本GUIは使わないと思うのでLite版をインストールします。Operating Systemの項目はPi OS LITEを選択します。

f:id:ysmn_deus:20210415143209p:plain f:id:ysmn_deus:20210415143218p:plain

Storageは各々のSDカードを指定してください。

上記が完了すればWRITEというボタンが押せると思うので書き込み開始してください。

f:id:ysmn_deus:20210415143407p:plain

f:id:ysmn_deus:20210415143502p:plain
SDの中身消えるけどほんまにええんやな?という確認

暫く待つと完了すると思います。

無線LANのセットアップ

画面とキーボードを接続してセットアップしても良いんですが、基本的にminiHDMIやmicroUSB A→USB Aみたいな気持ち悪い変換を普通は持っていないと思います。
なので画面など無しでセットアップ(headlessみたいなワードで検索すると色々出てくると思います)します。

SSHの有効化

公式ドキュメントに従い、SDカードのルートディレクトリ(一番上)に'ssh'という空ファイルを作ります。
どんな方法でも良いですが、Windowsならファイルパスを利用するバーを利用するのが手軽でいいです。
SDカードのディレクトリ(自分の場合はH: でした)にエクスプローラーで移動して、パスのバーに

cmd /C copy nul ssh

と入力してEnterを押すと、開いているディレクトリにsshという名前の空ファイルが作成されます。

f:id:ysmn_deus:20210416183337p:plain

ファイルが出来てればOKです。

WiFiの設定

公式ドキュメントに従いますが、bootフォルダを作成してくれと書かれていますがたぶんSD名がbootなのでこれは無視してカード直下にwpa_supplicant.confというファイルを作成します。このファイルに設定を記載します。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
 ssid="<WiFiのSSID>"
 psk="<WiFiのパスワード>"
}

上記で設定は完了です。
電源を入れてしばらく待ちます(たぶん5分以内ぐらいだったと思います。)

初期設定

SSHでログイン

初期設定を行う為、SSHでログインします。
上記までのセットアップでssh pi@raspberrypi.localでログインできる筈です。
デフォルトのパスワードはraspberryです。

raspi-config

基本的な初期設定はsudo raspi-configで行えるようになっています。

f:id:ysmn_deus:20210417184216p:plain

raspi-configでは

を調整します。

パスワード変更

raspi-configの画面は矢印キーとEnterで操作できますが、一番上の1 System OptionsでEnterを押します。
その次にS3 PasswordをEnterで選択します。

f:id:ysmn_deus:20210417184644p:plain

ウィザードに従ってパスワードを設定します。

f:id:ysmn_deus:20210417184738p:plain
二度パスワードを入力させられる

これで次回以降ログイン時にはパスワードが今決めたものになります。
あとでSSHの公開鍵認証に変更しようと思うので、ログインで使う事は無いかもしれませんが念のため変更しておくことをお薦めします。

地域情報の設定

sudo raspi-configで対話式の設定項目を出した後に5 Localisation Optionsに入ります。

f:id:ysmn_deus:20210420172128p:plain

次にL1 Localeを選択します。

f:id:ysmn_deus:20210420172933p:plain

そうするとConfigureing localesという画面に切り替わります。
キー操作で上下に移動出来ると思います。デフォルトではen_GB.UTF-8 UTF-8が選択されていますが、一般的なen_US.UTF-8 UTF-8も追加しておきます。
日本語が使いたい人はja_JP.UTF-8 UTF-8も選択しても良いかもしれません。

f:id:ysmn_deus:20210420173038p:plain

default localeをen_US.UTF-8 UTF-8にして完了

f:id:ysmn_deus:20210420173824p:plain

次にタイムゾーンを変更します。
先ほどの5 Localisation Optionsに入ったあとで次はL2 Timezoneを選択します。

f:id:ysmn_deus:20210420173834p:plain

自分は日本に合わせたいのでAsiaを選択します。

f:id:ysmn_deus:20210420173841p:plain

町の一覧が出てくるのでTokyoを選択します。

f:id:ysmn_deus:20210420173845p:plain

これで完了です。一応時間がちゃんと設定されているか確認するにはdateコマンドなどを使ってみるのも良いでしょう。

IPの固定

今はDHCPでIPが降ってきてるだけなので固定しておきます。
公式サイトに従い、/etc/dhcpcd.confの最後に追記します。

interface wlan0
static ip_address=192.168.0.4/24    
static routers=192.168.0.254
static domain_name_servers=192.168.0.254

(この辺の設定は適宜変えて下さい。)

IPは適当なモノか、思いつかなければ降ってきてるIPを固定するのでも良いでしょう。
自分はip addr showコマンドで確認してそれを利用しました。

WiFiの追加設定

一応WiFiのパスワードを平文で入力しているのでハッシュ化しておきます。
wpa_passphraseコマンドで必要情報が出力できるので、コレを利用します。

sudo sh -c 'wpa_passphrase "SSHD名" "パスワード" >> /etc/wpa_supplicant/wpa_supplicant.conf'

以前のWiFiの設定やパスワードなどが記載された状態なので、適宜/etc/wpa_supplicant/wpa_supplicant.confを編集して下さい。
たぶん

network={
 ssid="<WiFiのSSID>"
 psk="<WiFiのパスワード>"
}
network={
 ssid="<WiFiのSSID>"
 #psk="<WiFiのパスワード>"
 psk=ハッシュ値
}

みたいになってるので、

network={
 ssid="<WiFiのSSID>"
 psk=ハッシュ値
}

にしてあげて下さい。

公開鍵認証の設定

ここは通常のLinuxと変わらないと思いますので割愛します。

パッケージなどの更新

この辺まできたら大体完了なのでパッケージの更新などをしておきます。

sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade

速度を気にされる方はリポジトリを日本にしてから更新した方が早いと思います。
pipのインストールあたりでたぶん悪さするので推奨しません。

sudo sh -c 'mv /etc/apt/sources.list /etc/apt/sources_old.list; echo "deb http://ftp.jaist.ac.jp/raspbian stretch main contrib non-free rpi" > /etc/apt/sources.list'