# 追記
Raspberry Pi ヘッドレスセットアップという記事がRaspberry Pi Imager
を使ってのヘッドレス設定について解説しています。何枚もOS入りsdカード作らないならRaspberry Pi ヘッドレスセットアップの方が絶対楽です。
目的
久しぶりにRaspberry Piを使って何かしようと思い、Raspiの設定をしようと思ったところいろいろと状況が変わったようなので調査がてら、自分向けにまとめていきます。
目標
Raspiに接続するディスプレイとキーボードを使わずに、ssh
で接続可能にする。
使用したもの
- OSをsdカードに焼いたり、sshを接続するためのPC(Mac Pro M1チップのものを使いました)
- Rasberri Pi 本体(Raspberri Pi 3 model Bを使いました)
- SDカード(32GB)
どちらの機器で操作しているか分かりやすくするために、1
をPC、2
をRasberry PiまたはRaspiと表現します。
OSの準備
Raspberry Piを動かすためのOSの準備をします。用意したSDカードにOSを焼きます。Raspberri PiはSDカードからOSを読み込んで動作します。1このとき使用するOSは以前はRaspbian
と呼ばれていましたが、現在はRaspberry Pi OS
と呼ぶそうです。2
Raspberri Pi公式からRaspberri Pi Imager
という、sdカードに焼くためのsoftwareが用意されています。また、このソフトウェアからOSを選択できるので別個にOSをダウンロードする必要はありません。
Raspberry Pi Imager のインストール
Rasberry Piの公式ページのSoftware
からインストールできます。個人的にはパッケージ管理ソフトを使って入れたいのので、Macのパッケージ管理ソフトbrew
を使って入れています。3
brew install --cask raspberry-pi-imager
Ubuntuなどでapt
を使う場合はこちらです。
sudo apt install rpi-imager
これで、OSを焼く準備が完了しました。
Raspberry Pi OS をSDカードに焼く
OSを焼くSDカードをPCに接続し、Raspberry PI Imager
を立ち上げてください。
Operating System
の項目のCHOOSE OS
からRaspberry Pi OS (32-bit)
を選択、Storage
の項目のCHOOSE STORAGE
から接続したSDカードを選択します。
WRITE
が押せるようになっていると思いますので、WRITE
を押して書き込みます。
SSHで接続をするための設定
通常の手順では、この時点でSDカードをPCから取り外しますが、今回はそのままネットワークに接続するための設定をしていきます。
raspi用のディスプレイやキーボードを用意していないので、最低限ネットワークに接続できるようにして、sshを有効化してPCから接続できるようにしていきます。
ネットワークへ接続するための設定
ここでの、ネットワークへの接続はwi-fi
の使用を想定しています。有線LANを使用する場合はそのまま次の項目へ進んでくださの使用を想定しています。有線LANを使用する場合はそのまま次の項目へ進んでください 。
wi-fi
の設定はwpa_supplicant.conf
というファイルに記述されます。SDカードの直下(ルートディレクトリ)にこの名前のファイルを作成し、ファイルの中身を以下のようにして保存します。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="【接続したいSSIDの名前】"
psk=【wifiのパスワード】
}
- 【接続したいSSIDの名前】は接続したいSSIDの名前に変更してください。
"
で囲んでください。 - 【wifiのパスワード】は
"
で囲むことで平文で記述することもできますが、パスワードを平文で書くのは非常に気持ちが悪いので、こちらのサイトなどでWPA key
を計算して"
で囲まずに記述してください。
SSHの有効化
デフォルトの状態ではSSH
は無効化されています4。有効化は簡単です。SDカードの直下(ルートディレクトリ)に、ssh
という名前のファイルを作成するだけです。
sshで接続
Raspiを立ち上げていきます。PCからSDカードを取り外して、Raspiに入れ電源を繋げてください。
IPアドレスの検索
現状では、RaspiのIPアドレスがわかりません。
まずは、デフォルトで割り振られるホスト名raspberrypi.local
で試してみてください。
ssh pi@raspberrypi.local
複数のraspiを接続していない場合はこれで接続できると思います。pi
の部分がユーザー名、raspberrypi.local
がホスト名を表しています。
しかし、複数のRaspiを接続していて、かつホスト名をraspberrypi
から変更していない場合は、この方法では検索できません。そこでarp
5というコマンドを使って調べたいと思います。
arp -a |grep -e b8 -e dc -e e4
arp -a
は現在のネットワーク内で使用されているIPアドレスとMACアドレスの対応を表示してくれます。grep
は指定して単語が含まれる行のみ表示してくれます。 -e
オプションはor検索をしてくれます。b8
、dc
、e4
はRaspiのMACアドレスの冒頭の2文字です。以前はb8:~
のみでしたが最近追加されたようです。こちらを確認してください。
ここで表示されたIPアドレスがraspiのIPアドレスになります。複数のraspiを繋げていると当然複数表示されるので、適切なものを選んでください。
仮に192.168.X.XXX
が繋げたいraspiのIPアドレスだったとします。
SSHで接続
PCからsshで接続します。PCのターミナルで
ssh pi@192.168.X.XXX
入力してください。パスワードはraspberry
です。これでssh
で接続できます。
raspiの設定
sshでraspiに接続できたと思います。最後にraspi上での設定をします。
パスワードの変更
Raspberry Pi OSのsshのデフォルトのユーザーとパスワードはpi
、raspberry
であるのは有名なので必ず変更しましょう。sshで繋げたraspi上で
sudo raspi-config
と入力してください。
この画面が表示されます。1 System Options
-> S3 Password
で変更することができます。
タイムゾーンの設定
タイムゾーンを日本に変更します。
raspi-config
で5 Localisation Options
-> L2 Timezone
-> Asia
-> Tokyo
で変更できます。
-
設定をすることで、USBからのOSの起動も可能なようです。https://jyn.jp/raspberrypi-usb-only-boot/ ↩
-
他のOSをインストールすることが可能です。実際
Raspberry Pi Imager
では様々なOSが選択できます。ですが、Rasberry Pi OS
がデファクトスタンダードとなっており、特定の目的がない場合はこれこれを使います。 ↩ -
初期のユーザ名が
pi
、パスワードがraspberry
となっていることは検索すればすぐに出てくるのでセキュリティ上の問題だと思います。 ↩ -
arp
はAddress Resolution Protocol
の略です。IPアドレス(ネットワーク上で割り振られる識別子)からMACアドレス(機器に固有の識別子)を調べるプロトコルです。 ↩