📝

Raspberry Pi 初期設定まとめ

2021/04/05に公開

はじめに

2020/5/28 に 最新モデルRaspberry Pi 4 Model B (8GB)が発売されたよーということで、4年ぶりに KSYさんでスターターキットを購入しちゃいました。前買ったのは 3Bですが届いたまま箱すら空けずメルカリさんで売却したので今回は久しぶりに組み立てて色々と弄ってみました。
※まあ、いつものいまさら感たっぷりですけどね

スターターキットが便利

こだわりなければ「Pi4 B 8GB スターターキット V1 32GB 透明」を購入するのが便利だと思います。個別に注文するのも楽しいが、まず始めてみる環境があったほうがいいと思う。

IMG_5553.png

起動メディアは、まだ SDカード だが

Pi 4 で USB-SSD から起動できるというのは、もうすぐらしい。(FWで正式対応っていう意味で)

Raspberry Pi 4でUSBブートに対応間近

動作保証はしないがやり方はある
1 2 3 4 5 6

OSインストール、初期設定など

microSDカードが壊れたのもあり結局3回?最初からやり直した訳で、その都度googlesで検索するのが面倒なので手順を列挙しときます。(自分メモ)

SDカードに書き込み

Raspberry Pi Imager ツールを使うと簡単。win/mac/ubuntu が対応している。

Raspberry Pi Imagerを試してみる

RasbianOS(Raspberry PI Desktop) 初期設定

折角なので Rasbian Full(Desktop)を入れる。単に毎回パッケージが足りなくて指定するのが面倒なだけです。OS起動するとDesktopが表示されるけど、個人的な趣味でVNC⇒SSH⇒Desktopは最終的にOFFす手順で進めます。

黒い画面を使うよ

ターミナル(黒い画面)での操作です、苦手な方も覚えておいたほうがいい。
しかしroot,pi にパスワードかかっていないのか…用途を考えればそうなるね。

root,piパスワードを設定する

$ sudo passwd root
$ sudo passwd pi

ipアドレス固定化

rasberrypi.local で Raspberry のアドレスを参照できるが、ip固定の方がなにかと便利なので設定しときます。/etc/dhcpcd.conf を編集して再起動します。

# Example static IP configuration:
interface eth0
static ip_address=192.168.0.xxx/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1

VNC,sshを有効化

VNC&ssh経由でアクセスするので VNC ssh を有効化する。
sshは、デフォルト設定のままなので、パスワード認証となっているが後で変更するので今回このまま。Rlogin/TeraTermなどのターミナルから ssh 経由で "pi" ユーザでアクセスできることを確認しときます。

$ sudo raspi-config nonint do_vnc 0
$ sudo raspi-config nonint do_ssh 0
$ sudo raspi-config nonint get_ssh    # sshの状態を確認(0:Enable 1:Disable)

ssh の最低設定

デフォルトで「パスワードでのログイン」となっているのはOKとしても、rootでのsshアクセスは禁止しておく。本来は接続先port番号、公開鍵認証などしておいたほうがいいが、非武装地帯にいるのであればOKとしとく。/etc/ssh/sshd_config に下記を有効化する。

PermitRootLogin no

VNCで接続してみる

PCに 「VNC Viewer」をインストールして、Raspberry にアクセスしてみる。"pi" ユーザでログインできることを確認する。

VNCでPCからデスクトップ画面操作

もし接続して「cannot currently show the desktop」と表示されたら。というか多分なるので下記のようにする。

hdmi_force_hotplug=1

Locale, Timezone の設定

こちらもコマンドから実行します。

$ sudo raspi-config nonint do_change_locale ja_JP.UTF-8
$ sudo raspi-config nonint do_change_timezone Asia/Tokyo

キーボードレイアウトの設定

コマンドからは指定できなかったんで、"Raspberry Piの設定" ⇒ ローカライゼーション ⇒ キーボード で設定する。

Model : Generic 105-Key PC (intl.)
layout : Japanese
Variant : Japanese

swap領域を無効化

8GBもメモリがあるのでswapを削除します。2GB以上メモリあればやっとくのがいいでしょうね。

$ free -h
$ sudo swapoff --all
$ sudo apt-get purge -y --auto-remove dphys-swapfile
$ sudo rm -fr /var/swap
$ free -h

ホスト名の変更

GUIを使えば簡単だけど、あえてコマンドから。下記2ファイルを変更して再起動する。
ホスト名の確認は uname -a で確認できる。

$ sudo vi /etc/hosts
$ sudo vi /etc/hostname

電源 LED 点滅の設定

これ結構いいかもと思った。電源が ON ⇒ 赤LED 点滅、OFF ⇒ 赤LED 消灯。赤LED で ON/OFF を判別できる。
モニターつないでないので電源抜くタイミングがわからんかったのよね。

// 以下を追記 して再起動
# turn power LED into heartbeat
dtparam=pwr_led_trigger=heartbeat

vimのインストール

ある程度の年代だと nano より vim が好きなはず。
デフォルトだと OSC52 が有効になるのでうざければ ~/.vimrc を作っとく。

sudo apt-get install vim

新規ユーザを追加

セキュリティ強化のため "pi" ユーザーとは別のユーザーを作成する。
ついでに sudo 使えるようにもしておく。※hoge は例ですよ

$ sudo adduser hoge
$ sudo gpasswd -a hoge sudo
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio hoge

Desktop 自動ログインの無効化

"pi"ユーザで自動ログインするのをこれで無効化できます。
#autologin-user=pi コメントアウトするだけ。再起動するとログイン画面がでます。

#autologin-user=pi

Desktop 自動ログインの無効化 もういっこ

こちらも "pi" ユーザから hoge に変更しとく。

# the VT is cleared by TTYVTDisallocate
ExecStart=-/sbin/agetty --autologin hoge --noclear %I $TERM

piユーザ削除すると面倒なことになるので無効化

ユーザを削除するのを推奨しているが pi ユーザでの定義が結構あるため無効化しておいたほうがいいと判断した。

$ sudo usermod --expiredate 1 pi

sudoers(piユーザ用)の削除

pi ユーザで sudo するときにパスワード聞いてこないし /etc/sudoers 定義にも書いてないし…と思ったらそういうことなのね、こういう定義は止めて欲しいな。

$ sudo rm /etc/sudoers.d/010_pi-nopasswd

VNCで接続してみる

VNC Viewer」から、Raspberry にアクセスしてみる。"pi" ユーザでログインできないことを確認できれば、まずOK。

pi4_01_02.png

NTPの設定(確認)

たぶん初期値のままで問題ないですが、問い合わせ ntpサーバが海外なので国内にしたい。
timedatectl status コマンド結果で NTP service の状態が active 以外だったら設定する必要あります

$ vi /etc/systemd/timesyncd.conf
[Time]
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com

サービスの再起動

$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-timesyncd.service

systemctl status systemd-timesyncd.service コマンドで確認すると、"debian.pool.ntp.org(192.33.96.102)" から "ntp.jst.mfeed.ad.jp(210.173.160.27)" に変更されていることがわかる。※例なのでこのipと同一になるとは限らない

/etc/fstab に mountポイント指定してもエラーとなる

どうやらブートオプションを変更する必要があるようだ。 raspi-config を起動して設定を変更してあげる。

$ sudo raspi-config

① 3 Boot Options Configure options for start-up
② B2 Wait for Network at Boot Choose whether to wait for network
③ Would you like boot to wait until a network connection is established?、<yes>
④ Waiting for network on boot is enabled、<enter>
⑤ <Finish>

パッケージの最新化とファームウエアの更新

割と頻繁にパッケージが更新されている模様です。セキュリティ的にあれなので適度に更新するのがよいと思う。

パッケージ,OSの更新

apt-get と apt なにが違うのだろ。。まあいいか。

$ sudo apt-get update       # パッケージリストの更新
$ sudo apt-get upgrade      # パッケージの更新
$ sudo apt-get dist-upgrade # OSのアップグレード

パッケージ自動化

unattended-upgrades パッケージを導入すればパッケージの自動化ができる。
インストール後に /etc/apt/apt.conf.d/50unattended-upgrades を開き、Unattended-Upgrade::Origins-Pattern セクション最後の行がコメントになっていないことを確認するらしい。※コメントされることあるんだろうか

$ sudo apt install -y unattended-upgrades

確認点

$ sudo vi /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Origins-Pattern {
    ・
    ・
        "origin=Debian,codename=${distro_codename},label=Debian-Security"; 

そのあとに unattended-upgrades を有効化する必要がある。

$ sudo dpkg-reconfigure -plow unattended-upgrades

自動アップデート設定

ファームウェアの更新

気軽にしない方がいいらしいですよ。調べてみると「標準のRaspbianの update/upgrade プロセスを使用すると、自動的にカーネルが最新の安定版に更新されます。これが推奨される手順です。」らしいので、そもそも?サービス運用しているならしない方がいいですね。

そう言われてもわたしはするけどね~

$ sudo apt-get install rpi-update # インストール
$ sudo rpi-update                 # 更新実行
$ sudo reboot                     # 反映のための再起動

Raspberry Pi ファームウェアのアップデート方法

参考にして頂いたサイト様

Raspbian初期設定(RaspberryPi4)
raspi-configをコマンドラインで実行する。
ラズパイダ

次回予告

とりあえず数台設定するのだったら面白いかもしれん。つか手作業が多すぎなのがあるので一括登録できないもんかね。と感じです。

次回、ラズパイがあっついのと色々グッツを買ってみたのでそれを記事にしてみる。

GitHubで編集を提案

Discussion