今更ながら「Raspberry Pi 3 model B+」の環境構築をしたので、その作業内容を備忘録として残していきます。
このラズパイ自体は2019年末頃購入して、一度環境構築済みでした。
しかしその後全く触っておらず、どんな設定したのかも忘れてしまったので、思い出すのも兼ねて最初から行なっていきました。
なお、以下のPC側の作業はMac環境を記載しています。
また、最初からSSHで接続する前提ですので、Raspberry Pi側はwifiに接続するのみで、キーボードやディスプレイ等は接続しません。
Table of Contents
以前はRaspbianという名称でしたが、「Raspberry Pi OS」に変わったんですね。
下記のサイトよりダウンロードが可能です。
OSの種類は従来と同じ3種類ですね。
特にVNCで繋いだりディスプレイに接続する予定もないので、今回はLiteを導入しています。
- Raspberry Pi OS with desktop and recommended software
→全部入りバージョン - Raspberry Pi OS with desktop
→最低限のソフトウェア+デスクトップ環境 - Raspberry Pi OS Lite
→CUI環境のみ
Raspbianの時はあったかな?
OSの書き込み用のツールも公開されているんですね。
今回はこれを使用したいと思います。
SDカードの初期化から書き込みまでこれ一つでOKみたいです。簡単!
起動後、ダウンロードしたOSイメージを選択して、「WRITE」をクリックするのみ。
その後のダイアログで「YES」を選択すれば、あとは待つだけです。
SDカードをラズパイにセットする前に、先にwifiの設定を書き込んでおきます。
ラズパイにはキーボードもディスプレイも繋がないので、起動後すぐにネットワークに接続して欲しいからです。
何もしなくても有線LANであればつなげてくれますが、ここではwifiで繋ぐように設定しておきます。
ラズパイOSをインストールしたSDカードの直下で作業を行います。
接続先のSSIDとパスフレーズを下記のように入力した「wpa_supplicant.conf」を作成すればOK。
ここではパスフレーズは平文のままです。
必要であれば暗号化をしてください。
$ touch wpa_supplicant.conf ★ファイルを新規作成する
$ vi wpa_supplicant.conf ★viを起動し、以下の記述を行う
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1
network={
ssid="設定するSSIDの名称"
psk="接続用のパスフレーズ"
}
以下の手順でラズパイにwifi経由でSSHで繋ぎます。
- OSイメージを書き込んだSDカードをラズパイにセットする
- ラズパイを起動する(USBを接続する)
- PC(Mac)側で以下を実行し、ラズパイのipアドレスを確認して接続する
- ラズパイのMacアドレスはこれまで「b8:27:eb:**:**:**」だったのですが、ラズパイ4が出てから種類が増えたようですね。
- うちのラズパイはb8〜なので、そのMacアドレスを持つipアドレスをarpコマンドで探します
$ arp -a
(ipアドレス) at b8:27:eb:**:**:** ・・・・
$ ssh pi@arpで調べたipアドレス
SSHでログイン後、設定のためにviを起動するのですが、どうも動作がおかしい。
症状としてはこんな感じです。
- 矢印キーを入力するとA,B,C,Dのような入力がされてしまう
- “i”を入力してもINSERTモードに切り替わらない
調べてみたところ、vi互換として動作するとこうなるとか。。。
あまりこの辺がよく分かっていませんが、互換ではなくために以下の作業を行います。
$ vi .vimrc
(以下は.vimrcの記載内容)
set nocompatible
ルートでファイル編集する必要がある場合もあるので、root側の.vimrcも記載しておく必要があります。
ここからは外から繋いだりしない限り不要かもしれませんが、一応やっておきます。
実施内容は下記。
ここではpiユーザーを削除していますが、削除しない方が良いという方もいるようですね。
この辺は自己判断で。。。
- ルートパスワードの変更
- 新規ユーザーの追加
- pi(デフォルトユーザー)の削除
- ホスト名の変更
- SSHでのrootログイン禁止
新しいパスワードを2回入力するだけ。
古いパスワードの入力は必要ない。
$ sudo passwd root
New password:
Retype new password:
passwd: password updated successfully
ここでは新規のユーザー名を”USERNAME“としています。
途中でユーザー情報を入力するようい言われますが、特に何も入力しなくてもOKです。
pi@raspberrypi:~ $ sudo adduser USERNAME
Adding user `USERNAME' ...
Adding new group `USERNAME' (1001) ...
Adding new user `USERNAME' (1001) with group `USERNAME' ...
Creating home directory `/home/USERNAME' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for USERNAME
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
後々piユーザーを削除する前提なので、新規ユーザーをpiユーザーの属するグループと同じにしておく必要があります。
$ groups pi
pi : pi adm ・・・(piの属すグループが全て表示される)
$ sudo usermod -G pi,・・・(上記グループを全て,区切りで入力) USERNAME
起動直後だから何もない気はしますが、下記を実行。
$ sudo cp -r /home/pi/. home/USERNAME/.
書いてて思ったけど、これCUIでも必要なのかな?
$ sudo vi /etc/systemd/system/autologin@.service
★以下の行のpiをUSERNAMEに変更する(元々は"pi")
ExecStart=-/sbin/agetty --autologin USERNAME --noclear %I $TERM
$ sudo reboot
〜リブート後〜
$ who
USERNAME ・・・
$ sudo userdel -r pi
セキュリティというのもありますが、今後台数が増えたりするかもしれませんので、そのためにもホスト名を変えておきます。
$ sudo vi /etc/hostname
HOSTNAME
$ sudo vi /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 HOSTNAME
ホスト名が変更されたので、以降はSSHで接続する際も ssh USERNAME@HOSTNAME.local
で実行できます。
$ sudo vi /etc/ssh/sshd_config
〜〜〜
★以下のように変更
#PermitRootLogin prohibit-password
PermitRootLogin no
〜〜〜
※Mac側の作業です※
$ ssh-keygen -t rsa ★公開鍵を作成する
$ scp .ssh/id_rsapub USERNAME@HOSTNAME.local:
★ラズパイに公開鍵をscpで転送する
ssh-keygenで公開鍵を作成するとき、パスフレーズの入力を求められます。
セキュリティ的にはもちろん入力した方が良いですが、未入力でエンターでも作成できます。
外から繋ぐとか出ないのであれば、SSHのたびにパスフレーズを入れるのは面倒なので入力しないのも良いかもしれませんね。
※ラズパイ側の作業です※
$ mkdir .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys ★scpした公開鍵の内容を転記
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa.pub ★不要になった公開鍵を削除
$ sudo vi /etc/ssh/sshd_config
〜〜〜
★以下のように変更
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
〜〜〜
$ sudo reboot
※Mac側の作業です※
公開鍵方式でSSHするようにした場合、オプションでポート番号や鍵の名称の入力が必要になります。
.ssh/configに設定を記載しておけば、入力内容を省くことができるので便利です。
以下の内容まで記載しておけば、SSHする際にはホスト名のみ入れれば接続できます。
$ vi .ssh/config
Host 任意の接続名称
HostName HOSTNAME.local
User USERNAME
Port ポート番号
IdentityFile ~/.ssh/id_rsa
$ ssh 任意の接続名称
ラズパイ側にSSHで接続した際に、コンソール(Macのターミナル)の表示色が白一色になってしまいました。
原因はどうやら下記の2点。
- .bash_profileの所有権がrootになっているため、sshしても読み込まれなかった
- ssh接続時、.bashrcが読み込まれていなかった
なので下記の操作を実施。
$ chown USERNAME:GROUPNAME .bash_profile
$ echo "source ~/.bashrc" >> ~/.bash_profile
これでSSHを接続した時に、.bashrcの内容が反映されるようになりました。
終わりに
この記事では、Raspberry Pi OSをインストールしてからおよそ必要な設定をするまでの作業を列挙してみました。
作業する際の参考になれば幸いです。