概要
これまでもRaspberry PiをTV録画機として活用してきた。
運用にかかる負担を、これまでよりも軽くするために再構築を試みる。
この記事ではRapberry Pi4のOSを設定し終えるところまでを記載する。
全体の構成図
※ 赤枠部が本記事での対象
最終的に達成したい内容
- Raspberry PiのmicroSDカードを不要として故障を予防
- HDDをSSDに変更して騒音を減らす
- Mirakurun/EPGStationをDockerでコンテナ化
ハードウェア一覧
ソフトウェア一覧
- OS:
- Raspberry Pi OS Lite
- Release date: April 4th 2022
- System: 64-bit
- Kernel version: 5.15
- Debian version: 11 (bullseye)
- Raspberry Pi OS Lite
作業の流れ
既存環境をバックアップ(記事では省略)
- 設定ファイル
- /etc/samba/smb.conf
- systemd/system/の下
- (変更量が少ないものは手動で変更)
- 共有フォルダー
- SFTP
- Macとの共有
- 録画ファイル
- TimeMachine
- 自作プログラム
- .sh系(MySh)
- .py系(Code)
- 設定ファイル
SSDからOSを起動する設定
Raspberry Pi OSの設定
SSDからOSを起動する設定
ファームウェアをアップデート
# 現在のバージョンを確認 vcgencmd bootloader_version # Sep 10 2019 10:41:50 # version f626c772b15ba1b7e0532a8d50a761b3ccbdf3bb (release) # timestamp 1568112110
# OSのパッケージをアップデート sudo apt update # アップデートの対象を表示する sudo apt list --upgradable # grep rpi-ee* した結果 # rpi-eeprom-images/oldstable 13.12-1~buster all [1.3-1 からアップグレード可] # rpi-eeprom/oldstable 13.12-1~buster all [1.3-1 からアップグレード可] # eepromに関連するパッケージのみインストール sudo apt install rpi-eeprom-images rpi-eeprom # ブートローダーの確認 ls /lib/firmware/raspberrypi/bootloader/stable/ # ブートローダーをアップデート sudo rpi-eeprom-update -a *** INSTALLING EEPROM UPDATES *** BOOTLOADER: update available CURRENT: 2019年 9月 10日 火曜日 10:41:50 UTC (1568112110) LATEST: 2022年 1月 25日 火曜日 14:30:41 UTC (1643121041) RELEASE: default (/lib/firmware/raspberrypi/bootloader/default) Use raspi-config to change the release. VL805_FW: Dedicated VL805 EEPROM VL805: update available CURRENT: 00013701 LATEST: 000138a1 CURRENT: 2019年 9月 10日 火曜日 10:41:50 UTC (1568112110) UPDATE: 2022年 1月 25日 火曜日 14:30:41 UTC (1643121041) BOOTFS: /boot # 再起動 sudo reboot # アップデート後のバージョンを確認 vcgencmd bootloader_version 2022/01/25 14:30:41 version 6efe41bd9d1e5546fa3715e72e1775b7bd813237 (release) timestamp 1643121041 # 設定画面を起動 sudo raspi-config # 設定 設定画面で以下の順に行う 7. Advanced Option Configure advanced settings -> A7. Bootloader Version Select latest or default boot ROM Software -> E1. Latest Use the latest version boot ROM software Configの先頭画面に戻るので Bootを行うDeviceを選択 6.Advanced Option Configure advanced settings -> A6. Boot Order Choose network or USB device boot -> B2. USB Boot Boot from USB if available, otherwise boot from SD Card を選択 もし、これらの選択項目が出てこない場合、raspi-configが古いことが原因として考えられる。 その場合は、メニューの8. Updateを選択して、raspi-configを最新版にすることで解決できる。
SSDにOSをインストール
Raspberry Pi Imagerをインストール
Raspberry Pi OSのダウンロードとmicroSDカードへ書き込むために使うRaspberry Pi Imagerをインストールする
Raspberry Pi公式サイト(https://www.raspberrypi.com/)を開く。
上部メニューからSoftwareを選択
"Install Raspberry Pi OS using Raspberry Pi Imager" の部分で Download for macOSを選択
ダウンロードしたRaspberry Pi Imager(imager_1.7.2.dmg)をダブルクリックして実行
新規ウィンドウが開いた中で、Raspberry Pi Imager.app(左側)をApplication(右側)へドラッグアンドドロップ
LaunchPadからアプリケーションを実行する
「開いてもよろしいですか?」の確認画面で、開くを選択
以下のように入力
- OS: RASPBERRY PI OS LITE(64-BIT)
- ストレージ: Crucial_CT525MX300SSD1(525GB USB接続)
右下の歯車:
WRITEボタンを選択すると、削除してしまうことの確認(Imagerのアプリ)とパスワード入力(OSによる確認)とが2回出るので確認をして続行する
正常に完了したことが表示される(1分もかからないくらい)
Rapberry Pi OSの設定
Raspberry Piをシャットダウンし、USB-SSDを接続しMicroSDカードを外して、電源をONにする
ログイン
Macの場合
$ cd ~ $ vi .ssh/config Host RP4 HostName [ホスト名/IPアドレス] User [ユーザー名] # IdentityFile [秘密鍵があるファイルへのフルパス]
HostNameのところは通常IPアドレスを設定しているが、このタイミングではDHCPで割り振られるのでわからない。
raspberrypi.localとしていったん接続すると良い。
また、このタイミングでは、公開鍵認証を使えないのでIdentityFileの行をコメントアウト。
ターミナルから以下のようにして接続
$ ssh RP4
raspi-configをアップデート
$ sudo raspi-config
8 Updateを選択して最新版へとアップデートする。
ロケールの設定
$ sudo raspi-config
5 Localisation Options -> Locale -> ja_JP.UTF-8を選択(2回選択)
タイムゾーンの確認
インストール時に可能となったため、設定は不要。確認事項のみ。
$ timedatectl status # @raspberrypi:~ $ timedatectl status # Local time: Sun 2022-08-14 16:40:26 JST # Universal time: Sun 2022-08-14 07:40:26 UTC # RTC time: n/a # Time zone: Asia/Tokyo (JST, +0900) #System clock synchronized: yes # NTP service: active # RTC in local TZ: no
Local timeがJSTとなっていることと、Time zoneがAsia/Tokyoになっていることを確認
時刻同期
/etc/systemd/timesyncd.conf をviで開く(sudoが必要)
以下のように設定する
$ sudo vi /etc/systemd/timesyncd.conf [Time] NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
デーモンを再起動
$ sudo systemctl restart systemd-timesyncd
同期されていることを再確認
$ timedatectl status
セキュリティ設定
パスワード無しでのsudoを禁止する
$ sudo vi /etc/sudoers.d/010_pi-nopasswd
1行しかないファイルが表示される。コメントアウトする。
readonlyのファイルとなっている。
viで終了する際に、「:w !sudo tee %」コマンドを入力して強制的に保存する。
以下参考
Raspbianでpiユーザ名とパスワードをうまいこと変更する
sudoの有効化
$ groups [ユーザー名] [ユーザー名] : [所属しているグループの一覧]
sudoグループに所属していなかったら、ユーザーをsudoグループへ追加する
$ sudo gpasswd -a [ユーザー名] sudo Adding user [ユーザー名] to group sudo
有線LANにIPアドレスを固定設定
/etc/dhcpcd.conf で設定
$ sudo vi /etc/dhcpcd.conf
以下の4行を追加
interface eth0 static ip_address=192.168.1.3/24 static routers=192.168.1.1 static domain_name_servers=8.8.4.4 8.8.8.8
dhcpcdをリロード
$ sudo service dhcpcd reload
公開鍵を登録する
事前にクライアント側でSFTPができるように設定し、SFTPを使ってRaspberry Piへ公開鍵を転送する。
# ホームディレクトリに専用のフォルダを作成 $ cd ~ $ mkdir .ssh # 公開鍵を移動してリネーム $ mv id_rsa_openssh.pub .ssh/authorized_keys # 権限を設定 $ chmod 700 .ssh $ chmod 600 .ssh/authorized_keys # sshd_configを編集 $ sudo vi /etc/ssh/sshd_config # 以下の2つをコメントイン `#PubkeyAuthentication yes` `#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2` # sshdを再起動 $ sudo systemctl restart sshd.service
このタイミングで、公開鍵認証によるsshログインが成功することを確認する。
成功したことを確認した上で、以下のパスワード認証の無効化を実施する。
パスワード認証の無効化
# sshd_configを編集 $ sudo vi /etc/ssh/sshd_config # パスワード認証を無効にする #PasswordAuthentication yes ↓ PasswordAuthentication no これを行うと、秘密鍵なしでログインできなくなる。 # sshdを再起動 $ sudo systemctl restart sshd.service
パスワード認証でログインを試みて、失敗することを確認する。
クライアント側の設定(Mac)
sshクライアントのコンフィグを作成
$ vi ~/.ssh/config Host [ホスト名] HostName [IPアドレス] User [ユーザー名] IdentityFile ~/.ssh/[秘密鍵のファイル名].ppk
以下の省略したコマンドでRaspberryPiへ接続可能になる。
$ ssh [ホスト名]
実際のコマンドは以下のとおり。
$ ssh -i [IdentityFile] [User]@[Host]