現行のTV録画システムがおかしくなったときできるだけコピペでシステム復旧ができるように設定の覚書を残す。
設定の理由や内容は端折ってるのでうまく再現できるかは不明。
Ubuntu24.04.1上のKVMでMirakurunとEPGStationを動作させる仮想マシンkvmtvrecを立ち上げる。
Ubuntu Server 24.04 LTSで仮想マシンkvmtvrec立ち上げ
- Ubuntu Server 24.04 LTSを仮想マシンとしてkvmtvrecを立ち上げる。
これにTVチューナーサーバーであるMirakurunと録画管理サーバーであるEPGStationをインストールする。- https://jp.ubuntu.com/downloadからisoファイルをダウンロードして~/Downloads/にubuntu-24.04-live-server-amd64.isoを保存
- メニュー→システム管理→仮想マシンマネージャーで仮想マシンマネージャーを開く
- 左上の黄色星印のPCアイコンをクリックして新規仮想マシン作成ウィザードを開く。
- ローカルのインストールメディア(ISO)を選択して~/Downloads/のubuntu-24.04-live-server-amd64.isoを選択
- メモリとCPUの設定で
メモリ(M): 4096
CPU数 : 4 - この仮想マシンにストレージを割り当てるに☑
仮想マシン用にディスクイメージを作成する
10Gib 8GiBでいけるかも? - 名前: kvmtvrec
- インストールの前に設定をカストマイズする に☑をいれる
- ネットワークの選択
ブリッジデバイス
デバイス名:
- Ubuntu24.04仮想マシン インストール開始
- インストール開始で、まず仮想マシンマネージャーの
表示 → 仮想マシンの画面サイズに合わせる
画面最下段の選択ボタン等を表示のため - 問合せ項目
your language : English
keyboard layout : Japanese
Variant: Japanese(OADG 109A)
Chose the type of Installation : Ubuntu Server
enp1s0 eth- : Edit IPV4
IPV4 Method : Manual
Subnet : 192.168.1.0/24
Address: 192.168.1.112
Gateway : 192.168.1.1
Nameserver : 192.168.1.1
Search domains : 192.168.1.
- インストール開始で、まず仮想マシンマネージャーの
- reboot
- [FAILD]となるので上段メニューの仮想マシン、シャットダウン、強制的に電源OFF
- 仮想マシン→実行でログイン確認
仮想マシンシャットダウン
仮想マシンマネージャー → 開く → 表示 → 詳細
仮想マシン ファイルシステム追加
- メモリーの項目でEnable shared memoryに☑を入れ、適用
- ハードウェア追加:ファイルシステム
ドライバー: virtiofs
ソースパス: /mnt/k1-3TB
ターゲットパス: k1-3TB
PCIホストデバイスの追加
- ハードウェア追加:PCIホストデバイス(PT3などPCI接続チューナー2台使用の場合)
0000:02:00:0 Altera Corporation
0000:03:00:0 Altera Corporation - ハードウェア追加:USBホストデバイス(PX4などUSB接続チューナー使用の場合)
001:003 N’Able (DataBook) Technologies, Inc. PXW3U4
001:012 SCM Microsystems, Inc. SCR3310-NTTCom USB SmartCard Reader
仮想マシン、実行、ログイン後
日本時刻に設定
sudo timedatectl set-timezone Asia/Tokyo
その他追加
sudo apt update
sudo apt upgrade
sudo apt install nano avahi-daemon avahi-utils openssh-server
仮想マシン アドレス固定
Ubuntu serverインストール時に アドレス設定していれば不要
cd /etc/netplan
sudo mv 50-cloud-init.yaml 90-netcfg.yaml
sudo nano /etc/netplan/90-neccfg.yaml
network:
ethernets:
enp1s0:
addresses:
- 192.168.1.112/24
nameservers:
addresses:
- 192.168.1.1
search:
- 192.168.1.1
routes:
- to: default
via: 192.168.1.1
version: 2
sudo chmod 600 90-neccfg.yaml
netplan apply
ip aでアドレス確認
共有ファイルk4-1
共有ファイルk4-1のマウントポイントの作成
cd /mnt
sudo mkdir -p k1-3TB
sudo chown ユーザー名:ユーザー名
sudo chmod 666 *
sudo apt install virtiofsd
共有ファイルのk1-3TBをマウントするように/etc/fstabに追記
sudo nano /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/vda2 during curtin installation
/dev/disk/by-uuid/xxxxx-xxxx-xxxx-xxxx-xxxx / ext4 defaults 0 1
/swap.img none swap sw 0 0
#
k4-1 /mnt/k4-1 virtiofs defaults 0 0
TVチューナードライバ
pt3_drvのインストール(PT3をchardev版ドライバで使う場合)
- 必要パッケージの事前インストール
sudo apt install -y git dkms linux-headers-`uname -r`
git clone https://github.com/m-tsudo/pt3.git
cd pt3
make
sudo make install
sudo bash ./dkms.install
- PT3のDVB版ドライバであるearth-pt3が起動時に読み込まれないように設定を追加して、再起動する。
echo 'blacklist earth-pt3' | sudo tee -a /etc/modprobe.d/blacklist.conf
sudo reboot
- PT3が認識されているか確認
ls -l /dev/pt3*
crw-rw-rw- 1 root video 239, 0 Apr 24 14:05 /dev/pt3video0
crw-rw-rw- 1 root video 239, 1 Apr 24 14:05 /dev/pt3video1
crw-rw-rw- 1 root video 239, 2 Apr 24 14:05 /dev/pt3video2
crw-rw-rw- 1 root video 239, 3 Apr 24 14:05 /dev/pt3video3
px4_drvのインストール
- 必要パッケージの事前インストール
cd
sudo apt install --no-install-recommends git wget unzip gcc make build-essential libpcsclite-dev dkms
- tsukumijimaのパッケージを利用させてもらう
wget https://github.com/tsukumijima/px4_drv/releases/download/v0.5.1/px4-drv-dkms_0.5.1_all.deb
sudo apt install -y ./px4-drv-dkms_0.5.1_all.deb
# ドライバをロード
sudo modprobe px4_drv
# px4_drv がロードされているかを確認 (ちゃんとログ出てきたら OK)
lsmod | grep -e ^px4_drv
# デバイスファイルの確認
ls /dev/px4*
/dev/px4video0 /dev/px4video1 /dev/px4video2 /dev/px4video3
カードリーダーのドライバーをインストール
sudo apt install -y libpcsclite-dev pcscd pcsc-tools libccid
sudo systemctl restart pcscd.socket
# pcsc_scan で確認
sshからのログインだとsudo pcsc_scan
# 最終的にpcscdは使用しないので
sudo systemctl stop pcscd.socket
sudo systemctl disable pcscd.socket
sudo systemctl status pcscd.socket
BS-cardエミュレータを使用する場合softcasフォルダをkvmtvrecのホームフォルダにコピーしているとして。
cd softcas
sudo apt install pkg-config
make clean
make
sudo cp libpcsclite.so.1.0.0 /usr/lib/x86_64-linux-gnu/libpcsclite.so.1.0.0
recisdbのインストール
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
sudo apt install ./recisdb_1.2.1-1_amd64.deb
# エラーが出たら
sudo apt install gdbi
sudo gdbi ./recisdb_1.2.1-1_amd64.deb
# ユーザーをvideoグループに追加
sudo usermod -aG video $USER
sudo reboot
TVチューナーの動作確認
cd /mnt/k4-1
# PT3 CHAR版のとき
recisdb tune --device /dev/pt3video2 -c T14 --time 20 T14.m2ts
recisdb tune --device /dev/pt3video0 -c BS03_1 --time 20 BS03_1.m2ts
recisdb tune --device /dev/pt3video0 -c BS05_1 --time 20 BS05_1.m2ts
recisdb tune --device /dev/pt3video1 -c CS16 --time 20 CS16.m2ts
# PT3 DVB版のとき
recisdb tune --device /dev/dvb/adapter1/frontend0 -c T14 --time 20 T14.m2ts
recisdb tune --device /dev/dvb/adapter0/frontend0 -c BS05_1 --time 20 BS05_1.ts
recisdb tune --device /dev/dvb/adapter0/frontend0 -c BS03_1 --time 20 BS03_1.ts
recisdb tune --device /dev/dvb/adapter0/frontend0 -c CS16 --time 20 CS16.m2ts
# px4等のとき
recisdb tune --device /dev/px4video2 -c T14 --time 20 T14.m2ts
recisdb tune --device /dev/px4video0 -c BS03_1 --time 20 BS03_1.m2ts
recisdb tune --device /dev/px4video0 -c BS05_1 --time 20 BS05_1.m2ts
recisdb tune --device /dev/px4video1 -c CS16 --time 20 CS16.m2ts
親機側等でk4-1中のT14.m2tsなどをVLCなりcelluloidで視聴できるか確認。
ISDBScanner のインストールと実行
sudo wget https://github.com/tsukumijima/ISDBScanner/releases/download/v1.1.3/isdb-scanner -O /usr/local/bin/isdb-scanner
sudo chmod +x /usr/local/bin/isdb-scanner
isdb-scanner ./scanned/
Mirakurunのインストールと設定
Node.jsのインストール
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install nodejs
node -v
Mirakurunのインストール
sudo npm install pm2 -g
sudo npm install mirakurun -g --unsafe-perm --foreground-scripts --production
Mirakurunの設定
sudo mirakurun stop
# スキャンで生成された設定ファイルを Mirakurun の設定フォルダが配置されている /usr/local/etc/mirakurun 以下にコピー
sudo cp -a scanned/Mirakurun/channels.yml /usr/local/etc/mirakurun/channels.yml
sudo cp -a scanned/Mirakurun/tuners.yml /usr/local/etc/mirakurun/tuners.yml
sudo chown -R root /usr/local/etc/mirakurun/
# 他のサーバーのtunersを利用するとき追記したtuners.ymlの例
cat /usr/local/etc/mirakurun/tuners.yml
- name: 'PLEX PX-W3U4 (Terrestrial) #1'
types:
- GR
command: recisdb tune --device /dev/px4video2 --channel <channel> -
isDisabled: false
- name: 'PLEX PX-W3U4 (Terrestrial) #2'
types:
- GR
command: recisdb tune --device /dev/px4video3 --channel <channel> -
isDisabled: false
- name: 'PLEX PX-W3U4 (Satellite) #1'
types:
- BS
- CS
command: recisdb tune --device /dev/px4video0 --channel <channel> -
isDisabled: false
- name: 'PLEX PX-W3U4 (Satellite) #2'
types:
- BS
- CS
command: recisdb tune --device /dev/px4video1 --channel <channel> -
isDisabled: false
##### 追記 #####
- name: 'PLEX PX-W3U4 (Terrestrial) #3'
types:
- GR
remoteMirakurunHost: 192.168.1.134
remoteMirakurunPort: 40772
remoteMirakurunDecoder: true
isDisabled: false
- name: 'PLEX PX-W3U4 (Terrestrial) #4'
types:
- GR
remoteMirakurunHost: 192.168.1.134
remoteMirakurunPort: 40772
remoteMirakurunDecoder: true
isDisabled: false
- name: 'PLEX PX-W3U4 (Satellite) #3'
types:
- BS
- CS
remoteMirakurunHost: 192.168.1.134
remoteMirakurunPort: 40772
remoteMirakurunDecoder: true
isDisabled: false
- name: 'PLEX PX-W3U4 (Satellite) #4'
types:
- BS
- CS
remoteMirakurunHost: 192.168.1.134
remoteMirakurunPort: 40772
remoteMirakurunDecoder: true
isDisabled: false
Mirakurunログローテーション設定
sudo pm2 install pm2-logrotate
sudo nano /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}
- Mirakurun サーバーを再起動
sudo mirakurun start
EPGStation のインストール
データベース(MySQL)
sudo apt install mariadb-server
sudo mysql_secure_installation
①Enter current password for root (enter for none): エンター
Switch to unix_socket authentication [Y/n] y
②Set root password? [Y/n] y
New password: xxxxxxxx
Re-enter new password: xxxxxxxx
③Remove anonymous users? [Y/n] y
④Disallow root login remotely? [Y/n] y
⑤Remove test database and access to it? [Y/n] y
⑥Reload privilege tables now? [Y/n] y
EPGStationのDBの作成
名称:epgstation
ユーザー名:epgstation
パスワード:epgstation
sudo mysql -u root -p
Enter password:xxxxx
> create database epgstation;
> grant all on epgstation.* to epgstation@localhost identified by 'epgstation';
> quit
ffmpegのインストールと場所の確認
sudo apt install ffmpeg
whereis ffmpeg
/usr/bin/ffmpeg
EPGStation のインストールと設定
cd
git clone https://github.com/l3tnun/EPGStation.git
cd EPGStation
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
config.yml
番組ファイル名フォーマットなど一部異なるので以下のとおり修正
port: 8888
mirakurunPath: http+unix://%2Fvar%2Frun%2Fmirakurun.sock/
# dbtype: sqlite
# sqlite:
# extensions:
# - '/hoge/regexp.dylib'
# regexp: true
dbtype: mysql
mysql:
host: localhost
port: 3306
user: epgstation
password: epgstation
database: epgstation
charset: utf8mb4
# 囲み文字を置換するか
needToReplaceEnclosingCharacters: true
epgUpdateIntervalTime: 10
conflictPriority: 1
recPriority: 2
recordedFormat: '%TITLE%_%CHNAME%_%YEAR%_%MONTH%_%DAY%_%HOUR%_%MIN%' ##←
recordedFileExtension: .m2ts
recorded:
- name: recorded
path: '%ROOT%/recorded'
limitThreshold: 100000 ##← レコードHDの残容量が100GB以下で
action: remove ##← 古いものから削除
thumbnail: '%ROOT%/thumbnail'
thumbnailSize: 480x270
thumbnailPosition: 30 ##←
ffmpeg: /usr/bin/ffmpeg
ffprobe: /usr/bin/ffprobe
encodeProcessNum: 4
concurrentEncodeNum: 1
encode:
- name: Amatsukaze ##← Amatsukazeでエンコードするとき
cmd: '/bin/bash /home/hisao/EPGStation/config/AmatsukazeTask.sh'
suffix: .mkv
rate: 4.0
- name: H.264
cmd: '%NODE% %ROOT%/config/enc.js'
suffix: .mp4
rate: 4.0
urlscheme:
以下続く
EPGStationの起動方法
- 手動で起動する場合
cd ~/EPGStation
npm start
Ctrl + C で停止 - 自動で起動する場合
sudo pm2 startup -u ユーザー名 --hp ~ユーザー名
pm2 start dist/index.js --name "epgstation"
pm2 save
データベースのバックアップとリストア
- バックアップ
npm run backup FILENAME
データベースに含まれる以下の情報がバックアップ
予約情報
録画済み番組情報
録画履歴
録画予約ルール - リストアnpm run restore FILENAME
npm run restore FILENAME
コメント