(2023/02/25追記)この記事の内容は古いです。本記事をリライトした「Raspberry Pi 4 と docker-mirakurun-epgstation で録画サーバーを構築する (2023年2月版)」をご覧ください。
(2021/04/06追記)この記事の内容は古いです。本記事をリライトした「Raspberry Pi 4とdocker-mirakurun-epgstationで録画サーバーを構築する (2021年4月版)」をご覧ください。
本記事は「2021年3月版録画サーバー構築シリーズ」の第2回目です。前の話は「録画サーバー構築① 先行例の調査と機材の購入」をご覧ください。次の話は「録画サーバー構築③ Dockerを利用してMirakurunとEPGStationをインストールする」をご覧ください。
Amazonにしては珍しく遅く発送まで2日かかった。ようやくRaspberry Pi 4 Model B 4GB(以下、ラズパイ)が届いたので、ラズパイの設定を進めていくことにした。
録画サーバーを構築するにあたり、基本的に以下の2記事を読みながらそのまま進めていった。
- https://blog.ishmz.com/post/rapsberry-pi-4-px-s1ud/
- Raspberry Pi 4 で録画サーバーを作った (Mirakurun + EPGStation) - Hiroto's diary
しかし、これらの記事の執筆時点とはソフトのバージョンなど環境が異なるためかそのまま適用できなかった箇所があった。
特にEPGStationは2021年1月にv2がリリースされて設定方法が変わっていたりする。本記事はさくさん自身のために書いた記事なので説明不足が多い点、また2021年3月に書かれたものであることに留意して欲しい。
- Raspberry Pi OS Lite のインストール
- ラズパイの設定:sshの有効化
- ラズパイの設定:WiFiの有効化
- ローカルPCとラズパイの疎通確認
- ラズパイの設定:ライブラリのアップデート
- ラズパイの設定:Vimのインストール
- ラズパイの設定:ハードウェアエンコードの有効化
- ラズパイの設定:スワップの無効化
- ラズパイの設定:ログの最小化
- PX-S1UD V2.0 チューナーのドライバのインストール
- ラズパイの設定:外付けHDDの設定をマウントする
- カードリーダーのドライバは不要
- 次回予告
- 関連記事
Raspberry Pi OS Lite のインストール
ラズパイはmicroSDに書き込まれたOSで動く。このOSの構築がかなり面倒だった記憶があるが、現在ではボタンをクリックするだけで簡単に構築できるようになっている。少なくともこの時点で躓くことはない。
Raspberry Pi Imagerを公式ページからダウンロードする。2021年3月時点では v1.3 が最新となっている。
Raspberry Pi Imagerを起動して[CHOOSE OS]ボタンをクリックする。
デスクトップ機能は不要なので「Raspberry Pi OS (other)」を選択する。
OSには「Raspberry Pi OS Lite (32bit)」を選択する。
あとは適切なmicroSDカードを選択して、[WRITE]ボタンをクリックするだけである。
[WRITE]ボタンをクリックすると書き込みが開始する。Lite版なので容量も少なく10分くらいで書き込みは完了する。
ラズパイの設定:sshの有効化
macOS側で対応。
boot直下にssh
という名前の空ファイルがあると、起動後にssh接続できるようになる。
$ touch /Volumes/boot/ssh
ラズパイの設定:WiFiの有効化
macOS側で対応。
有線LANを接続するのが面倒くさいので最初から無線LANが使えるように「新規購入した Raspberry Pi をセットアップする - Hiroto's diary」を参考にして、ローカルPC側であらかじめ設定しておく。
$ touch /Volumes/boot/wpa_supplicant.conf
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="ルーターの SSID" psk="ルーターのパスワード" }
macOS側から直接microSDを触るのはこれで終わり。
ローカルPCとラズパイの疎通確認
初回起動時は何か処理が動いているのかすごく時間がかかる。しばらくしたらWi-Fiルーター側から新規デバイスの接続通知がきた。
ラズパイが起動したのは確認したので、次はローカルPCからssh接続して繋がるか疎通確認をおこなう。ネットワーク内にラズパイが1台だけだった場合は raspberrypi.local
で接続できる。超便利。
$ ssh pi@raspberrypi.local
ラズパイがWi-Fiに接続されていてもsshdが起動していなかったのか1回目は接続できなかった。
$ ssh pi@raspberrypi.local ssh: connect to host raspberrypi.local port 22: Connection refused
さらに2分くらい経ったらアクセスできるようになった。途中パスワードを聞かれるので raspberry
と入力したらログインできた。AWSのEC2に繋ぐ時よりも簡単で嬉しい。
$ ssh pi@raspberrypi.local The authenticity of host 'raspberrypi.local' can't be established. ... (中略) pi@raspberrypi:~ $
これでWi-Fi経由でラズパイにアクセスできるようになった。
ラズパイの設定:ライブラリのアップデート
すでにインストールされているライブラリ等が古くなっているのでまとめてアップデートする。
apt
と apt-get
コマンドの違いがわからない。参考にした記事がバラバラなのでそれに追従してこの記事でもバラバラになっている。
sudo timedatectl set-timezone 'Asia/Tokyo' sudo apt update && sudo apt upgrade -y sudo apt install locales-all sudo localectl set-locale 'LANG=ja_JP.UTF-8'
ロケールは日本語(日本)にしておいた。英語にする場合は
sudo localectl set-locale 'LANG=en_US.UTF-8'
ラズパイの設定:Vimのインストール
vim-tinyという謎なやつが入ってるので、vimを入れる。
dpkg -l | grep vi sudo apt --purge remove vim-common vim-tiny sudo apt autoremove sudo apt install vim
さくさんはviの使い方がわからないのだ。
ラズパイの設定:ハードウェアエンコードの有効化
Raspberry Pi 4は、H.264のハードウェアエンコードを利用できるらしい。
echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0666"' | sudo tee /etc/udev/rules.d/10-vchiq-permissions.rules
ラズパイの設定:スワップの無効化
microSDを保護するためにスワップによるアクセスを最小化させる。
sudo swapoff --all sudo apt remove dphys-swapfile sudo sed -i 's/$/ coherent_pool=4M dwc_otg.host_rx_fifo_size=2048/' /boot/cmdline.txt sudo sed -i 's/^CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/' /etc/dphys-swapfile
ラズパイの設定:ログの最小化
microSDを保護するためにログによるアクセスを最小化させる。
sudo vim /etc/rsyslog.conf
rsyslog.conf
を編集してコメントアウトする。
############### #### RULES #### ############### # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log
↓
############### #### RULES #### ############### # # First some standard log files. Log by facility. # auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log #daemon.* -/var/log/daemon.log #kern.* -/var/log/kern.log #lpr.* -/var/log/lpr.log #mail.* -/var/log/mail.log #user.* -/var/log/user.log
PX-S1UD V2.0 チューナーのドライバのインストール
地上波チューナーとして「PX-S1UD」を採用している。
ドライバをインストールする。
wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip unzip PX-S1UD_driver_Ver.1.0.1.zip sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/ rm PX-S1UD_driver_Ver.1.0.1.zip rm -rf PX-S1UD_driver_Ver.1.0.1
本来このタイミングで再起動して認識しているか確認するが、手間を省くために外付けHDDの設定と一緒に実施しよう。
再起動後に以下のコマンドを実行すれば、チューナーデバイスを正しく認識しているかどうか確認することができる。
$ dmesg | grep PX-S1UD [ 2.454637] usb 1-1.1: Product: PX-S1UD Digital TV Tuner
ラズパイの設定:外付けHDDの設定をマウントする
録画したデータを保存するため、ラズパイにはすでに外付けHDDをUSB接続している。ラズパイでHDDが接続されていることを認識しているか調べる。
$sudo fdisk -l (中略) Device Start End Sectors Size Type /dev/sda1 40 409639 409600 200M EFI System /dev/sda2 411648 250443775 250032128 119.2G Microsoft basic data
外付けHDDは /dev/sda2
として接続されていることがわかったのでマウントしておく。
sudo mkfs.ext4 /dev/sda2
sudo mkdir /data
sudo mount /dev/sda2 /data
これで /data
で、外付けHDDにアクセスできる。録画サーバー構築の第3回ではgit clone
したりdocker-compose
でビルドしたりとファイルアクセス回数が増える。
(2021/03/21追記) 外付けHDDのパーティションをpi:piに変更する
/data
で外付けHDDにアクセスできるようになったが、このままでは所有者が root:root となってしまう。第3回でh264_omxでビルドするにあたりffmpegを動かすようにするのに支障が出る。
ユーザーが/data
にアクセスできるように変更しておく。
sudo chown 1000:1000 /data
起動時に外付けHDDを自動マウントさせる
ラズパイの起動時に外付けHDDが自動でマウントさせるように設定する。まずは /dev/sda2
の UUID または PARTUUID を調べる。
$ sudo blkid /dev/sda2 /dev/sda2: UUID="xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx" TYPE="ext4" PARTUUID="xxxxxxxx-xxxxx-xxxxx-xxxx-xxxxxx950"
PARTUUIDが xxxxxxxx-xxxxx-xxxxx-xxxx-xxxxxx950
であると判明した。これを自動でマウントさせる。
sudo vim /etc/fstab
すでにいくつかデバイスが登録されているかもしれないので一番下の方に追記しておく。
PARTUUID=xxxxxxxx-xxxxx-xxxxx-xxxx-xxxxxx950 /data ext4 defaults,nofail 0 0
ラズパイを再起動して、再度きちんとマウントされるか確認する。
sudo reboot
カードリーダーのドライバは不要
録画サーバー構築の記事を読んでいると必ずカードリーダーのドライバをインストールしてから Japanese Chijou Digital B-CAS Card (pay TV)
が表示されれば成功!と書いているが、Dockerを使ってMirakurun + EPGStationをインストールするのでカードリーダーのドライバはインストールしない。すでにインストールしていたらアンインストールしておく。
l3tnun/docker-mirakurun-epgstationを利用するためカードリーダーのドライバは不要だ。
次回予告
文量が多くなったのでMirakurun + EPGStationのインストールは別に書く。
Dockerを使ってMirakurun + EPGStationをインストールしていく。l3tnun/docker-mirakurun-epgstation を利用する予定だ。