Ubuntu 24.04.1でTV録画 #3

 現行のTV録画システムがおかしくなったときできるだけコピペでシステム復旧ができるように設定の覚書を残す。
 設定の理由や内容は端折ってるのでうまく再現できるかは不明。

 Ubuntu24.04.1上のKVMでMirakurunとEPGStationを動作させる仮想マシンkvmtvrecを立ち上げる。

Ubuntu Server 24.04 LTSで仮想マシンkvmtvrec立ち上げ

  1. 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
    • インストールの前に設定をカストマイズする に☑をいれる
    • ネットワークの選択
        ブリッジデバイス
        デバイス名: 
  2. 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.
  3. 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

コメント