https://naba-san.hatenablog.com/


Raspberry Pi 3(b+) で mirakurun (Ubuntu 20.04 Server編)

備忘録。

前提

ラズパイ一式

数年単位で死蔵してあった Raspberry Pi 3B (3B+?)。
放熱性の良さそうなケースに入れて、適当なUSB ACアダプタからmicroUSBを介して給電する。

尼のリンクを貼りつつも、今買うならRaspberry Pi 4以降を強くお勧め。(尼は高騰してたので各自お探しください)

チューナー

AliExpressで仕入れたVT20を使いました。S270(PLEX PX-S1UD V2.0)と中身は同じくさい?

正直、蟻で買っても尼で買っても、値段そんなに大きく違わないです。(独身の日とか狙うなら、蟻の方が安いかも‥?)

カードリーダー

NTTcomのアレ推奨。

こちらの怪しいカードリーダーでも難なく使えました。
(SIMスロットにminiB-CAS刺さります。きちんと認識します。)

ちなみに日立マクセルのやつは認識しませんでした。

セルフパワーUSBハブ

Raspberry Pi 3系(及びそれ以前)の環境では、セルフパワーHUBの利用を強く推奨する。(microUSB給電がボトルネックになり、素の状態でも電源がカツカツ。チューナー刺しただけで電源不足に陥り動作不安定になる)

↓私はコレ買いました。

Raspberry Pi 4系は給電方式がタイプCになっているので、ひょっとすると必要ないかもしれない。(ACアダプタの給電性能を遺憾なく発揮してくれる気もするが、4系を持ってないのでよく分からない)

外部ストレージ

microSDに録画するわけにもいかないので、HDDを外付けする。
ラズパイからの給電に頼らないものなら何でも良いと思う。

 

環境構築

OSインストール

flash起動を避けて、HDDからUSB bootしたかったけど、どう頑張っても安定せず諦めた。

代わりに、ちょっとお高めのmicroSDをチョイス↓

amzn.to

OSは Ubuntu 20.04 Server LTS (64bit)。公式でイメージの書き込みツールが出てるのでそれ使うのが楽。

外付けHDD

2.5インチ バスパワーはまず動かないと思った方が良い。運よく認識できても、次回うまく起動しない。(USB Bootが邪魔してsdカードですら起動できない。)

セルフパワー給電できる余りモノ3.5インチケースに、同じく余ってた3.5インチHDD(4TB)をセット。

ゴミパーティション(ZFS)の残骸

同じく余ってた3.5インチHDD(4TB)

ddでも消えないんだなぁこれが。見事にハマりました。
(新品のHDD使ってる人、ZFSの流用に心当たりがない人は無視しておk)

qiita.com

パーティションの作成

gdiskを起動、/dev/sda 等を選んだ後、d→w で削除→反映。
再度gdiskを立ち上げ、 /dev/sda を選んだ後、n→w で新規パーティション作成→反映。

パーティション作成後、/dev/sda1 にパーティションが見えるはずなので、

$ sudo mkfs.ext4 /dev/sda1

パーティションをフォーマットする。

パーティションのマウント設定

起動時に自動マウントさせる為、対象パーティションを特定するUUIDを取得。

$ ll /dev/disk/by-uuid/
total 0
drwxr-xr-x 2 root root 100 Jan 18 04:21 ./
drwxr-xr-x 7 root root 140 Jan  1  1970 ../
lrwxrwxrwx 1 root root  15 Jan 10 04:56 5496-E6C8 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root  15 Jan 18 04:14 675ba907-****-****-****-************ -> ../../mmcblk0p2
lrwxrwxrwx 1 root root  10 Jan 18 04:21 a6a79439-****-****-****-************ -> ../../sdb1

(あれ。今見たらsdbで認識されてるな。)

sudo vim /etc/fstab でマウント設定追加。

LABEL=writable  /        ext4   defaults        0 1
LABEL=system-boot       /boot/firmware  vfat    defaults        0       1
UUID=a6a79439-****-****-****-************       /mnt/storage       ext4       defaults       0       0

再起動後、所定の位置(上記の場合は /mnt/storage/)HDDがきちんとマウントされることを確認する。

 

mirakurun

大体こちらの通りに進める。神。

maeda577.github.io

インストールが一通り終わったら、この時点で BonDriver_mirakurun でmirakurunの動作確認しておくと良いかも。

 

録画関係 (EPGStation)

公式のセットアップマニュアルをベースに進める。

github.com

 

【事前準備】

まずはnodeのバージョン確認。
ここは mirakurun のインストールが正常完了していれば問題ないはず。

# node --version
# curl -o - http://localhost:40772/api/version

続けてffmpeg。素の環境だと多分入ってないのでインストールしておく。

# ffmpeg -version
# apt install ffmpeg

pythonも素の状態だとコマンド入ってないので、インストールしておく。

# python --version
# apt install python-is-python3

gccは入ってるかも。

# gcc --version

 

【ビルド準備】

ビルド中はメモリを大量に消費するので、作業に際してmirakurun (を管理するpm2) を落としておく。

sudo systemctl stop pm2-root

 

nodeの設定でメモリ消費を抑えるように仕込んでおく。

 export NODE_OPTIONS="--max-old-space-size=1024"

 

できれば一時的にswap領域も増やしておく。

今回はswap用にUSBフラッシュを刺したが、HDDとかにswapfile作れるならそれでも良いと思う。
swapパーティション切る or DDで空ファイル作る→mkswap→swapn の流れ。

 

【ビルド&インストール】

事前準備はここまで。
EPGStationのインストール先に移動する。HDDのマウント先とかを選ぶと良いと思う。

# cd /mnt/storage/

リポジトリ上のソースをclone、チェックアウトする。

# git clone https://github.com/l3tnun/EPGStation.git

インストール。地味に時間がかかる。

# npm run all-install
# npm run build

インストールが終わったら、設定ファイルのテンプレートを展開する。

# cp config/config.yml.template config/config.yml
# cp config/operatorLogConfig.sample.yml config/operatorLogConfig.yml
# cp config/epgUpdaterLogConfig.sample.yml config/epgUpdaterLogConfig.yml
# cp config/serviceLogConfig.sample.yml config/serviceLogConfig.yml
# cp config/enc.js.template config/enc.js

 

事前に停止した mirakurun を戻しておく。

# sudo systemctl start pm2-root

 

(初期設定)

設定ファイルをざっと確認する。多分ffmpegとかのパスがおかしいので訂正しておく。

vim config/config.yml

  • /usr/local/bin/ffmpeg → /usr/bin/ffmpeg
  • /usr/local/bin/ffprobe → /usr/bin/ffprobe