Raspberry Pi 初期設定


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 でインストール可能

もし、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カードへの書き込み

  1. Raspberry Pi Imager を起動する
  2. [CHOOSE OS] をクリックして利用するイメージを選択する
  3. [CHOOSE SD CARD] をクリックして書き込み先のSDカードを選択する
  4. そして[WRITE]ボタンをクリックして書き込み

以下は Raspberry Pi Imager によるイメージ書き込み時の設定を使わずに設定する手順を記載する。

SSHサーバの有効化

  1. Raspberry Pi Imagerによる書き込みが終わったら、自動的にアンマウントされるので、再度SDカードをマウントする。
  2. 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での接続

電源を入れて数分後には立ち上がっているので、次のコマンドで接続する。

初期パスワードは raspberry となっている。

WiFiパスワードの書き換え

SDカードに書き込んだ wpa_supplicant.conf はRaspberry Pi内の /etc/wpa_supplicant/wpa_supplicant.conf に転写されている。
パスワードを平文のままにしておくのは良くないので書き換える。

  1. 次の様に wpa_passphrase コマンドを実行し、<ハッシュ化されたパスワード>を求める。

    pi@raspberrypi:~ $ sudo sh -c 'wpa_passphrase "<接続先のSSID>" "<平文のパスワード>"'
    network={
        ssid="<接続先のSSID>"
        #psk="<平文のパスワード>"
        psk=<ハッシュ化されたパスワード>
    }
    
  2. /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 [email protected]
/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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
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カードで設定してすでに接続しているだろうが、接続先を変更する場合のためにコマンドでの設定方法を記しておく。

  1. ifconfig コマンドを使って、無線LAN IFのインターフェース名を調べる。
    • RasPi3の内蔵のものだと wlan0 になっていると思う。
    • 無線LANのアクセスポイント側でMACアドレス制限している場合にはMACアドレスも出力されているので控えて、アクセスポイントでMACアドレスで制限してあれば設定しておく
  2. 次のコマンドで接続先のSSIDを調べる。
    無線AP側でステルス設定していると見えないのでスキップしてもよい。

    pi@raspberrypi:~ $ sudo iwlist wlan0 scan|grep ESSID
    
  3. wpa_passphraseコマンドを使って接続設定する。
    以下は testing というSSIDにパスフレーズtetingpassで接続する例。

    pi@raspberrypi:~ $ sudo sh -c 'wpa_passphrase "testing" "tetingpass" >> /etc/wpa_supplicant/wpa_supplicant.conf'
    
  4. nano エディタ等を使って/etc/wpa_supplicant/wpa_supplicant.confを開いてnetwork={...}の部分を編集する

    • コメントアウトされている平文のパスフレーズは削除しておく。
    • 接続先がステルスSSIDの場合はscan_ssid=1を追記しておくと良いらしい
    network={
        ssid="testing"
        #psk="tetingpass" <-- 平文のパスフレーズが書き込まれているのでこの行を削除
        scan_ssid=1  # 接続先がステルスSSIDの場合は追加する
        psk=f85fad981d229fa28876626c1c9b9a1f9b43df8c228cdfb2883c061d50da2547
    }
    
  5. 再起動してifconfig等で接続を確認する。IPアドレスが取れていれば成功。

参考


  1. 以前はEtcherを使っていた