あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

HP microserver gen8再び(px4_drv+recisdb+mirakurun+EPGstation)

サーバー停止すると色々ある件

パソコン用ラックの整頓を兼ねてmicroserverを停止したところ、システム用の2.5inchHDDがお亡くなりになりました。mirakurunが起動と停止を繰り返したので、これはあかんと思い、1から再構築する事になりました。

前回のこれが2021年だそうなので3年。前に使っていたmicroserverでもだいたい3年ぐらいで2.5inchHDDの挙動が怪しくなっていたので、寿命がこんなもんかなと思った次第。
aoshimak.hatenadiary.jp

再構築にあたり

この機械はMLT5PEを搭載しているのでそのあたりを考慮しつつ、今どきなアプローチを取り込みたいと考えて、以下の方針で臨む事に。

  • px4_drvをtsukumijimaさんのものに。
  • 記事を掘ると同じ方のrecisdbというのがあったので、recpt1をやめてrecisdbを使う方向で。
  • mirakurunはdocker不使用で
  • EPGstationを使う

最初に使ったのがPT2とEPGrecでしたが、この分野も時がだいぶ経ち、要素技術も枯れたかなあと思っていても、まだまだ技術改良や新しい提案が生まれてくるので、その恩恵に預ることが有難いと思っています。だから新しいものは試してみたくなるのです。
そこで今回は、大まかにtsukumijimaさんの手順を追ってセットしていきました。
blog.tsukumijima.net

前提

  • Ubuntu 20.04 LTS 導入
  • PLEXから発売されている Digibest 製チューナー
  • カードリーダーのセットアップ
  • 録画用 HDD が /mnt/ 以下のパスにマウントされている(これはいつものことなので)

Ubuntu導入

  • USBから起動で、Ubuntu-server-20.04LTS導入。
  • 元々入っているmicroSD内のgrubだと起動できないので、とりあえず起動に漕ぎ着ける。
 grub rescue> set root=(hd3,2)
 grub rescue> insmod (hd3,2)/boot/grub/i386-pc/normal.mod
 grub rescue> normal

ちなみにmicroSDの区割りは以下の通り。他のLinuxマシンで作業するのが吉。

  1: 34   2047   1007.0KiB   EF02 BIOS Boot
  2:   2048   524288  255.0MiB   EF00   EFI system partition
  3:  526336   3932126   1.6GiB   8300   Linux filesystem
  • 一旦起動したら、とりあえずmicroSDgrub更新。導入先はmicroSDgrub関連ファイルは3つ目のext2領域に入れる。
 $ sudo mount /dev/sdd3 /mnt
 $ sudo grub-install --no-floppy --root-directory=/mnt --force /dev/sdd
  • HDDを差し込まない状態で、最低限、問題なく起動できるgrub設定を書き込み。編集先はmicroSDのext2の中にある/boot/grub/grub.cfg
 set prefix=(hd3,2)/boot/grub
 set root=(hd3,2)
 insmod normal
 normal
  • とりあえず再起動に問題がないことを確認した上で(上記設定だとHDDを差し込むと本数によってドライブ名が移動するので)rootをUUIDで指定する書き方に変更。blkidでシステムHDDのUUIDを取得しておき、メモしておく。
  • grubのroot設定をUUIDで行う方向で、なおかつ以前よりも短く書き直し。以下のものでおそらく充分。(if文も要らないかもしれない)microSD内のgrub.confを変更する。
    • カーネルオプションもここに書いておく。(システム側の指定は反映されない。)
 insmod gzio
 if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
 insmod part_gpt
 insmod ext2
 search --no-floppy --fs-uuid --set=root <<UUID>>
 linux   /boot/vmlinuz root=UUID=<<UUID>> ro <<kernel option>>
 initrd  /boot/initrd.img
 boot
  • 起動を確認

PLEXドライバ導入

  • tsukumijimaさんのpx4_drv導入

github.com

wget https://github.com/tsukumijima/px4_drv/releases/download/v0.4.5/px4-drv-dkms_0.4.5_all.deb
sudo apt install -y ./px4-drv-dkms_0.4.5_all.deb
  • lsmodまたはmodprobeでモジュール導入確認
  • バイスが見つかることを確認。/dev/pxmlt5video0−4

recisdb

github.com

# x86_64 環境
wget https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.2/recisdb_1.2.2-1_amd64.deb
sudo apt install ./recisdb_1.2.2-1_amd64.deb
rm ./recisdb_1.2.2-1_amd64.deb
  • 動作確認
# キャラクタデバイスをオープンし、CATV (ISDB-T) 30ch を選局し、30 秒間の録画データを recorded.m2ts に保存
recisdb tune --device /dev/px4video3 --channel C30 --time 30 recorded.m2ts
  • isdbscannerは自分の環境では無意味だったので省略

samba導入(省略)

  • とりあえず動画テストのファイルを閲覧したり、設定ファイルを入れたりの窓口として。

node.js

  • mirakurunとepgstationに必要なので入れる。
curl -fsSL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt-get install -y nsolid
nsolid -v
sudo apt-get install -y nodejs
node -v

Mirakurun(非docker)

 sudo npm install -g pm2
 sudo npm install -g --unsafe-perm --foreground-scripts --production mirakurun
  # mirakurunバージョン確認
 curl http://127.0.0.1:40772/api/version
  • mirakurunの設定ファイルを変更、修正

EPGstation

 $ git clone https://github.com/l3tnun/EPGStation.git
 $ cd EPGStation
 $ npm run all-install
 $ npm run build
 
 $ sudo pm2 startup
 $ sudo pm2 start dist/index.js --name "epgstation"
 $ sudo pm2 save

作業を終えて

  • 2.5inchは数年で死ぬ。SSDの方が持ちが良い。
  • recisdbでの稼働は概ねOK
  • チャンネルスキャナーはCチャンネルに対応していないのでうちの環境では無意味
  • HDDのマウント方法でby-labelが使えるようになっている。/etc/fstabで、/dev/disk/by-label/〜〜を参照する。録画ディスクにxfs+ラベル管理を採用していたので、これは便利。
    • ついでにディスクのルートディレクトリにラベル名をtouchしておくとわかりやすいかも?
  • sudoのpm2と、ローカルのpm2は別物なので、epgstationはsudoの方のpm2に登録saveする。こちらにmirakurunも入るので両方管理できる。
  • EITparsing はEnableにする。Disableのすると順次EPG更新がされなくなる。インストール時にしかEPS更新しない状態で放置。(これで2日悩んだ。)
    • 問題解決としては、mirakurun-epgdumpでチェックしたら、TSにEPS情報が含まれていたので、mirakurun側の設定の問題だとわかった。