サーバー停止すると色々ある件
パソコン用ラックの整頓を兼ねて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導入
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
$ sudo mount /dev/sdd3 /mnt $ sudo grub-install --no-floppy --root-directory=/mnt --force /dev/sdd
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導入
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
# 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
- https://github.com/l3tnun/EPGStation/blob/master/doc/linux-setup.md
- 事前に、node.js、mirakurun、ffmpeg、python、gccが入っている事を確認
$ 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側の設定の問題だとわかった。