概要
foltiaのベースOSは古いCentOS6系のため、比較的新しいPCではセキュアブートや各種ドライバに対応しておらず、物理環境での運用が困難なので、VM環境への移行した時の備忘録をまとめました。
旧録画サーバからの移行前提で記事を書いているので、新規構築の場合はDBバックアップから下は必要はないです。
移行元環境
- CPU: Core i3 6600
- OS: foltia (CentOS6.10)
- キャプチャボード: PT3
- OS用ストレージ: SATA SSD 120GB
- 録画用ストレージ: HDD*2 (mdデバイスでのRAID1)
※ システムと録画領域が別々のドライブでの構成
移行先ホストOS環境
- CPU: Core i5 12600K
- OS: Debian 12
- キャプチャボード: PT3
- OS用ストレージ: NVMe SSD 500GB
- 録画データ用ストレージ:
テンポラリ用HDD (foltiaインストール時の消えてもいいストレージ)
移行元PCのHDD*2 (後で接続、foltiaインストール時には未接続)
※システムと録画領域が別々のドライブでの構成
ホストOSのセットアップ
- 録画用のHDDは未フォーマット状態でdebian 12をインストール(手順省略)
※ debianではなくUbuntuでも大丈夫なはず - パッケージの更新
$ sudo apt update $ sudo apt -y upgrade - KVMをインストール
$ sudo apt -y install qemu-kvm libvirt-daemon-system libvirt-daemon virtinst bridge-utils libosinfo-bin - cockpitをインストール
$ sudo apt -y install cockpit cockpit-machines - cockpitでネットワーク管理できるようにNetworkManagerの設定を編集
/etc/NetworkManager/NetworkManager.conf
[main] plugins=ifupdown,keyfile [ifupdown] - managed=false + managed=true - NetworkManagerのサービスを再起動
sudo systemctl restart NetworkManager - PCIパススルー設定するため、デバイス番号確認
[ ]に囲まれているベンダーIDとデバイス番号を確認
$ lspci -nnk |grep Multimedia 07:00.0 Multimedia controller [0480]: Altera Corporation Device [1172:4c15] (rev 01) - /etc/default/grubを編集し、上記で確認したデバイス番号を含めたパススルー設定
/etc/default/grub
(略) GRUB_CMDLINE_LINUX_DEFAULT="quiet" - GRUB_CMDLINE_LINUX="" + GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt vfio-pci.ids=1172:4c15" # If your computer has multiple operating systems installed, then you (略) - ホストOSでPT3のドライバを読み込まないようにpt3モジュールをブラックリストへ追加
$ sudo sh -c "echo blacklist earth_pt3 >> /etc/modprobe.d/blacklist.conf" $ sudo shutdown -r now - cockpitのWebGUI (https://IP_address:9090)に接続し、ローカルユーザでログイン
- 右上の方にある制限付きアクセスをクリック後パスワードを入れ、管理アクセスに変更
- ネットワーキングを開き、「ブリッジの追加」→名前をbr0に変更し、ポートのeno1をチェックし「保存」

- IPが変わっているので、変更先のIPを確認してcockpitのWebGUIに接続
- br0 のリンクをクリック
- IPを固定するためIPv4の編集を押す
- IPの設定をして「保存」
- IPが変わっているので、変更したIPでcockpitのWebGUIに接続
仮想マシン作成
- foltiaのISOイメージをダウンロード
$ curl -o /tmp/foltia_ANIME_LOCKER-install-R34-DVD-6122.iso https://download.foltia.com/evaluation/foltia_ANIME_LOCKER-install-R34-DVD-6122.iso- ISO設置場所によっては、ゲストOSインストール時にセキュリティポリシーでpermission deniedでエラーになる可能性があるのでダウンロード先は /tmp を推奨
- 上記のダウンロード先URLは2025年10月当時の物で変更されている可能性があるのでfoltiaのサイトから最新バージョンを確認
- 仮想マシンを開き、「仮想マシンの作成」
- 各種設定をし、「作成して編集する」
設定例
名前: foltia(任意)
インストールタイプ: ローカルインストールメディア
インストールソース: /tmp/foltia_ANIME_LOCKER-install-R34-DVD-6122.iso (上でダウンロードしたISOまでのパス)
オペレーティングシステム: Unknown
ストレージの制限: 50 GiB
メモリー: 任意(普通は8GiBあれば十分)
- 「ホストデバイスの追加」を開き、カードリーダーとキャプチャボードを追加
カードリーダ追加例

キャプチャボード追加例
lspciで見つけたPCIのアドレスを選択している

正常に追加出来ていることを確認
- HDDのパーティションを作成し、仮想マシンにアタッチ
$ sudo parted /dev/sda GNU Parted 3.3 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mklabel gpt (parted) mkpart Partition name? []? File system type? [ext2]? xfs Start? 0% End? 100% (parted) quit $ sudo virsh attach-disk foltia /dev/sda1 vdb --targetbus virtio --driver qemu --subdriver raw --persistent- 移行元PCで作成したmdデバイスはパーティション単位でのRAID構築だったので、環境を合わせるため念のためパーティション作成後VMにバインドしている。多分 /dev/sda デバイスをそのままvirsh attach-diskしても大丈夫(未確認)。
- cockpitのGUIから仮想マシンを起動しfoltiaをインストール
インストール設定についてはシステムと録画領域を別々のドライブでの構成、それ以外の手順については省略 - インストール後、foltiaの動作を確認をしたら仮想マシンをシャットダウン
- ホストOSをシャットダウン
移行元PCのDBバックアップ
- 移行元PCのストレージに、foltia-DB-Dump.dat.MP4というファイル名のDBバックアップが自動で出来ているので、念のために上書きされないように~/php/tvにコピーする
$ cp -p ~/php/tv/mita/foltia-DB-Dump.dat.MP4 ~/php/tv/- ~/php/tv/mita/にfoltia-DB-Dump.dat.MP4がなかったら、下記コマンドで作成
$ pg_dump -Fc foltia > /home/foltia/php/tv/foltia-DB-Dump.dat.MP4
- ~/php/tv/mita/にfoltia-DB-Dump.dat.MP4がなかったら、下記コマンドで作成
- シャットダウンする
$ su - # shutdown -h now
移行先の録画用ストレージを交換
- 移行先のHDDを取り外し、移行元のHDDを接続し起動
- HDDに書かれていたメタ情報からRAID状態が新PCでも復元されているかを確認
自環境では元PCではHDDは/dev/sd[bc]で検出されていたが、新PCではHDDが/dev/sd[ab]で検出されているため、sd[bc]で組んでいたRAIDが片肺運用になっていた
$ cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md127 : active raid1 sdb1[2] 19531692032 blocks super 1.2 [2/1] [U_] unused devices: <none> - RAIDにHDDを組み込み
$ sudo mdadm --manage /dev/md127 --add /dev/sda1 - mdadm.confに構成情報の書き込みし再起動
$ sudo mdadm --detail --scan |sudo tee /etc/mdadm/mdadm.conf $ sudo update-initramfs -u $ sudo shutdown -r now - 再度RAID状態を確認
読み書きが発生しなかったおかげなのか、一瞬でRebuildが終わっていた
$ cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sda1[3] sdb1[2] 19531692032 blocks super 1.2 [2/2] [UU] bitmap: 0/73 pages [0KB], 131072KB chunk unused devices: <none> - cockpitを使いfoltiaにアタッチされている旧HDDを外す
- コンソールからmdデバイスを仮想マシンにアタッチ
$ sudo virsh attach-disk foltia /dev/md0 vdb --targetbus virtio --driver qemu --subdriver raw --persistent - cockpitのGUIからアタッチされているかを確認
- foltiaを起動し、交換したストレージがマウントされているかdfコマンドなどで確認
foltiaのDBリストア
- foltiaのコンソールへログイン
- 上記URLを参考にDBのリストア
$ cd ~/php/tv $ dropdb foltia $ createdb -T template0 foltia $ pg_restore -Fc -C -d foltia ./foltia-DB-Dump.dat.MP4 - foltiaのWebUIから録画一覧などを確認し、問題がなければ
~/php/tv/foltia-DB-Dump.dat.MP4を削除し移行完了
その他
ファンコンが上手く動いていない
- B760チップセットだと、そもそもファン回転数が表示されなかったので、モジュールの確認とロード
$ lsmod |grep nct6775 $ modprobe nct6775 $ lsmod |grep nct6775 nct6775 32768 0 nct6775_core 77824 1 nct6775 hwmon_vid 16384 1 nct6775 $ sensors|grep fan fan1: 0 RPM (min = 0 RPM) fan2: 1024 RPM (min = 0 RPM) fan7: 0 RPM (min = 0 RPM) - 正常に表示されるようになったので、/etc/modulesにnct6775を追記し自動ロードするように設定
$ sudo sh -c "echo nct6775 >> /etc/modules"
VMで使うCPUをPコアのみにする
- OS上で割り当てらているCPUのPコア/Eコア確認
i5-12600Kは12行目(0-11)までがIntel CoreだったのでPコア、13~16行目(12-15)がIntel AtomだったのでEコアが割り当てらていた
$ cpuid |grep -i 'core type' core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Core core type = Intel Atom core type = Intel Atom core type = Intel Atom core type = Intel Atom - VMに割り当てられている仮想CPUの確認
VMにはPコア/Eコア全て割り当てらていた
$ sudo virsh vcpupin foltia VCPU CPU Affinity ---------------------------- 0 0-15 1 0-15 2 0-15 3 0-15 4 0-15 5 0-15 6 0-15 7 0-15 - Pコアの0-11だけに割り当てるように変更
$ sudo virsh vcpupin foltia 0 0-11 $ sudo virsh vcpupin foltia 1 0-11 $ sudo virsh vcpupin foltia 2 0-11 (略) $ sudo virsh vcpupin foltia 7 0-11 - Pコアだけに割り当てらているか確認
$ sudo virsh vcpupin foltia VCPU CPU Affinity ---------------------------- 0 0-11 1 0-11 2 0-11 3 0-11 4 0-11 5 0-11 6 0-11 7 0-11
m2tをb25デコードするスクリプト
カードリーダ不調などでb25デコードが失敗してた時に使う奴
- スクリプト作成と実行権付与
$ cat << '_EOF_' > ~/unscramble.sh #!/bin/env sh BACKUP_DIR=backup_dir if [ ! -d ${BACKUP_DIR}" ]; then mkdir ${BACKUP_DIR} fi for TSF in "${@}"; do echo Unscrambling ${TSF} b25 ${TSF} ${TSF}.tmp touch -r ${TSF} ${TSF}.tmp mv ${TSF} ./${BACKUP_DIR}/${TSF} mv ${TSF}.tmp ${TSF} done _EOF_ $ chmod +x ~/unscramble.sh - 使い方
放送終了時間が2025/10/10 23時~2025/10/11 03時の番組がデコード失敗していた時の例
$ cd ~/php/tv $ find . -maxdepth 1 -type f -name "*.m2t" -newermt "2025-10-10 23:00" ! -newermt "2025-10-11 03:00" |xargs ~/unscramble.sh- デコード失敗していたm2tファイルは
~/php/tv/backup_dirに残っているので、正常にデコード出来ていたら削除する - 同一ファイル名の物が2つ出来てしまうので非推奨だが、
BACKUP_DIR=backup_dirをBACKUP_DIR=mitaにすれば、foltiaのゴミ箱管理から削除可能
- デコード失敗していたm2tファイルは