サーバー停止すると色々ある件
パソコン用ラックの整頓を兼ねて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/ 以下のパスにマウントされている(これはいつものことなので)
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
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
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側の設定の問題だとわかった。