Raspbianで使う場合の最低限の初期設定のメモ
たまにしかやらなくて覚えてられないのでメモ。
MacOS上でのモニター不要な手順を記す。
この手順は、一応次で試している。
- RASPBERRY PI 1 MODEL B+
- RASPBERRY PI 2 MODEL B
- RASPBERRY PI 3 MODEL B
- RASPBERRY PI 4 MODEL B
- RASPBERRY PI ZERO W
boot イメージの作成
準備
- bootイメージを書き込むMicroSDカードを用意する。
- 8GB、Class4以上が推奨スペック。
-
Raspberry Pi Imagerをダウンロードしてインストールしておく1。
- MacOSだと
brew cask install raspberry-pi-imager
でインストール可能
- MacOSだと
もし、Raspiに直接キーボード、モニタを接続して設定するなら次も用意する。
- USBキーボード
- HDMIケーブル(特にRaspi4はまだあまり一般的でないmicro-HDMIなので注意)
- HDMIで接続できるモニタ(テレビでOK)
64bit のPiOSを利用する場合には次のURLからさがしてダウンロードしておく
Raspberry Pi Imager による設定
Raspberry Pi Imager がアップデートされ書き込みと同時に SSH や Wifi の設定も行えるようになった。
Raspberry Pi Imager を開いて Ctrl + Shit + X
を同時押しすると設定ダイアログが開く。
設定できるのは次の項目。
- Disable ovewrscan
- Set hostname
- Enable SSH
- pi user のパスワード
- pi user の authorized_key
- Configure wifi
- SSID
- Password
- Wifi country
- Set locale settings
これだけ設定できれば十分というのであればこれで済ませてしまうほうがお手軽。
BootイメージのSDカードへの書き込み
- Raspberry Pi Imager を起動する
- [CHOOSE OS] をクリックして利用するイメージを選択する
- [CHOOSE SD CARD] をクリックして書き込み先のSDカードを選択する
- そして*[WRITE]*ボタンをクリックして書き込み
以下は Raspberry Pi Imager によるイメージ書き込み時の設定を使わずに設定する手順を記載する。
SSHサーバの有効化
- Raspberry Pi Imagerによる書き込みが終わったら、自動的にアンマウントされるので、再度SDカードをマウントする。
- SSHを有効にするために次のコマンドを実行して、ルートフォルダにssh(中身は空)ファイルを作る
> touch /Volumes/boot/ssh
WiFi接続の有効化
もし、いきなりWiFiで接続したいのなら、SDカードをマウントした状態で次の内容のファイルをSDカードのルート(MacOSだと /Volumes/boot) にファイル wpa_supplicant.conf を作る
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="<接続先のSSID>"
psk="<平文のパスワード>"
}
平文のパスワードは後ほどハッシュ化した値に書き換える。
ここまで設定したら、SDカードをRaspberry Piに挿入して起動する。
SSHでの接続
電源を入れて数分後には立ち上がっているので、次のコマンドで接続する。
$ ssh pi@raspberrypi.local
初期パスワードは raspberry
となっている。
WiFiパスワードの書き換え
SDカードに書き込んだ wpa_supplicant.conf はRaspberry Pi内の /etc/wpa_supplicant/wpa_supplicant.conf に転写されている。
パスワードを平文のままにしておくのは良くないので書き換える。
-
次の様に
wpa_passphrase
コマンドを実行し、<ハッシュ化されたパスワード>
を求める。pi@raspberrypi:~ $ sudo sh -c 'wpa_passphrase "<接続先のSSID>" "<平文のパスワード>"' network={ ssid="<接続先のSSID>" #psk="<平文のパスワード>" psk=<ハッシュ化されたパスワード> }
-
/etc/wpa_supplicant/wpa_supplicant.conf を vim などで開いて、
"<平文のパスワード>"
を削除して<ハッシュ化されたパスワード>
に書き換える。
<ハッシュ化されたパスワード>
はクオテーション""
で囲わないように注意
raspi-config による設定
次のコマンドでRaspbianの設定ツール、raspi-configを起動する。
pi@raspberrypi:~ $ sudo raspi-config
すると次のようなキャラクタベースのUIが起動する
raspi-config自体の更新
初設定の前にツール自体を最新にしておく。
8 Update
を選択する。すると更新処理が始まる。
終了すると、raspi-config にもどる。
ホスト名の変更
複数のRasPiを接続する可能性のある環境だとホスト名、ひいてはAvahiがネットワークにブロードキャストする名前がかぶるので変更しておく。
raspi-configのメニューから 2 Network Options
- Hostname
を選択する。
ascii文字の
a
からz
、数字の0
から9
、-
(ハイフン)を使って名前をつけてね、ただし、最初と終わりはハイフン以外で。他の記号やスペースを使っちゃダメだよ
という表示が出るので、「OK」を選択する。次の画面で指示に従ったホスト名を設定する。
ホスト名変更後はSSH接続の接続先が<付け替えたホスト名>.local
と変わるので注意。
ファイルシステムの拡張
7 Advanced Options
- A1 Expand Filesystem
を選択する。
次回のboot時に反映するというメッセージが出れば成功。
これで、MicroSDの全容量を利用できるようになる。
ロケール等の変更
4 Localisation Options
を選択して、そのサブ設定を変更していく。
日本語で使いたいならI1 Change Locale
を選択してロケール ja_JP.UTF-8 UTF-8
を選択する。
さらにシステム全体のデフォルトロケールを尋ねられるので ja_JP.UTF-8
を選択する。
I2 Change Timezone
を選択してタイムゾーン Asia
を選択して更に Tokyo
を選択する
I4 Change WLAN Country
を選択して
JP Japan
を選択。
パスワードの変更
必要に応じて変更する。
というか、デフォルトのママ SSHサーバを有効にするとパスワード変えろと警告が出たりするので変更しておいたほうがいいだろう。
SSH serverの有効化/無効化
すでにSDカードで有効化していると思うが、raspi-config
を使っても sshd をON/OFFできる。
sshd を設定するには次の手順。
raspi-configのメニューから 5 Interfacing Options
- P2 SSH
を選択する。
Would you like the SSH Server to be enabled?
と聞いてくるので Yes
と答える。
No
と答えればsshdが無効となる。
Wifi設定
raspi-configのメニューから 2 Network Options
- N2 Wi-fi
でWifi設定が可能となっている。
簡単に設定できるようになったのは結構なのだが、この結果作成される設定ファイル /etc/wpa_supplicant/wpa_supplicant.conf にpassphraseが平文のみで記録されるので利用はおすすめできない。
後述の コマンドによるWi-Fi設定 で示すようにハッシュ化された値で設定するほうが良い。
公開鍵認証でSSH接続する
そこそこ強度のあるパスワードは長くなるし、入力が面倒なのでさっさと鍵認証にしておいたほうがいいだろう。
キーペアの生成
ここで書くまでのない気がするけど、ssh-keygen
コマンドでサクッと作る。
以下の例では raspi
という名前を指定して、raspi(秘密鍵) と raspi.pub(公開鍵)のキーペアを作っている。
❯ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/hoge/.ssh/id_rsa): raspi
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in raspi.
Your public key has been saved in raspi.pub.
〜略〜
Raspberry Piへの公開鍵の登録
次の様にssh-copy-id
で簡単に公開鍵を登録できる。
> ssh-copy-id -i ~/.ssh/raspi.pub pi@raspberrypi.local
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/Users/hoge/.ssh/raspi.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
pi@raspberrypi.local's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'pi@raspberrypi.local'"
and check to make sure that only the key(s) you wanted were added.
で、実際に秘密鍵を使ってログインできるか確認して入れればOK。
ssh -i ~/.ssh/raspi pi@<ホスト名>.local
パッケージとOSの更新
次のコマンドを実行する。
pi@raspberrypi:~ $ sudo apt-get update # パッケージリストの更新
pi@raspberrypi:~ $ sudo apt-get upgrade # パッケージの更新
pi@raspberrypi:~ $ sudo apt-get dist-upgrade # OSのアップグレード
ファームウェアの更新
rpi-update
コマンドを使って更新する。再起動して反映。
pi@raspberrypi:~ $ sudo rpi-update # ファームウェア更新実行
pi@raspberrypi:~ $ sudo reboot # 反映のための再起動
実行途中で次の様なメッセージが表示される。頻繁に行う様なものではないのでご注意を。
'rpi-update' should only be used if there is a specific
reason to do so - for example, a request by a Raspberry Pi
engineer or if you want to help the testing effort
and are comfortable with restoring if there are regressions.DO NOT use 'rpi-update' as part of a regular update process.
コマンドによるWi-Fi設定
SDカードで設定してすでに接続しているだろうが、接続先を変更する場合のためにコマンドでの設定方法を記しておく。
-
ifconfig
コマンドを使って、無線LAN IFのインターフェース名を調べる。- RasPi3の内蔵のものだと wlan0 になっていると思う。
- 無線LANのアクセスポイント側でMACアドレス制限している場合にはMACアドレスも出力されているので控えて、アクセスポイントでMACアドレスで制限してあれば設定しておく
-
次のコマンドで接続先のSSIDを調べる。
無線AP側でステルス設定していると見えないのでスキップしてもよい。pi@raspberrypi:~ $ sudo iwlist wlan0 scan|grep ESSID
-
wpa_passphrase
コマンドを使って接続設定する。
以下はtesting
というSSIDにパスフレーズtetingpass
で接続する例。pi@raspberrypi:~ $ sudo sh -c 'wpa_passphrase "testing" "tetingpass" >> /etc/wpa_supplicant/wpa_supplicant.conf'
-
nano
エディタ等を使って/etc/wpa_supplicant/wpa_supplicant.conf
を開いてnetwork={...}
の部分を編集する- コメントアウトされている平文のパスフレーズは削除しておく。
- 接続先がステルスSSIDの場合は
scan_ssid=1
を追記しておくと良いらしい
network={ ssid="testing" #psk="tetingpass" <-- 平文のパスフレーズが書き込まれているのでこの行を削除 scan_ssid=1 # 接続先がステルスSSIDの場合は追加する psk=f85fad981d229fa28876626c1c9b9a1f9b43df8c228cdfb2883c061d50da2547 }
-
再起動して
ifconfig
等で接続を確認する。IPアドレスが取れていれば成功。
参考
- Raspberry Pi - Teach, Learn, and Make with Raspberry Pi
- Hexxeh/rpi-update: An easier way to update the firmware of your Raspberry Pi
- Setting WiFi up via the command line - Raspberry Pi Documentation
- Raspberry PiをHeadlessでセットアップする - Qiita