ビデオサイネージを作ります
要件
- PCをビデオサイネージに再利用
- ハードディスクが壊れて物理的に抜いている状態のものを活用
- USB 起動はできる
- 動画ファイルを全画面リピート再生
- 動画ファイルはユーザーで入れ替え可能
- Windows マシンで USB メモリに動画ファイルをコピーする
これを、 USB 起動 Linux で実現します。
USB 起動 Linux の概略
- Ubuntu 22.04
- USB メモリ上の Ubuntu インストーラを Live Linux として使う
- カスタマイズは persistent-filesystem で記録する
カスタマイズの内容
- VLCをインストール
- VLCを自動起動
- 動画を全画面でリピート自動再生
先行研究
「mkusb を使って ワークショップ用USB起動システムを作る」
https://qiita.com/nanbuwks/items/e9cd162e95a9636a2a2c
では、mkusb で persistent-filesystem 付きの USB メモリを作成しました。
課題として、以下の問題がありました。
- 起動時に一旦インストール画面をスキップしないといけない
- Windows マシンに刺すとフォーマットが促される
今回はそれを解消し、USBメモリでPCのビデオサイネージを作ってみます。
環境
- Ubuntu22.04 Ja LTS
- Sandisk Ultra Fit USB3.0 8GBytes
mkusb
前回は、mkusb のフレーバーとして mkusb-plug を使いました。
mkusb-plug は USB デバイスの操作にフェールセーフが取り込まれたりしていました。総じて簡単操作のフレーバーぽかったです。
今回は mkusb を試してみます。
インストールなどは先の記事のとおりやっておきます。
mkusb を選んで起動
分岐ルート
ここから先は persistent filesystem の作り方によって分岐します。結果も変わります今回のような用途だと旧来の dus-Persistent が正解でした。
しかしながらこの記事では dus-Iso2usb / dus-Persistent 両方を解説します。
ちなみに、それぞれは以下のメリットデメリットは 以下のとおりです。
- dus-Iso2usb
- persistent 内容は EXT4 にファイル単位で保管される
- 変更内容をファイル単位でアクセスできる
- Windows からUSBメモリにアクセスできない
- persistent 内容は EXT4 にファイル単位で保管される
- dus-Persistent
- persistent 内容は 単一ファイルで保管される
- ファイルシステムの整合性がとれないと脆弱?
- Windows からアクセスできる領域を作成できる
- persistent 内容は 単一ファイルで保管される
dus-Iso2usb
この分岐ルートでは、dus-iso2usb を選びます。
iso ファイルを選んで
間違いないことを確認して
ここでは何も選択せずに
このような仕上がりになるようです。
$ sudo fdisk -l /dev/sdb
.
.
.
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/sdb1 1953 3906 1954 977K BIOS 起動
/dev/sdb2 3907 503906 500000 244.1M EFI システム
/dev/sdb3 505856 15185919 14680064 7G Linux ファイルシステム
/dev/sdb5 15185920 29507583 14321664 6.8G Linux ファイルシステム
.
.
.
$ lsblk -f /dev/sdb
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sdb
├─sdb1
├─sdb2 vfat FAT32 usbboot 02D3-7915
├─sdb3 ext4 1.0 isodevice 01a5f0fc-634a-44fa-bad7-59126c3b779d
└─sdb5 ext4 1.0 writable 4d1c0d97-b070-4b65-b441-9b54494a021e
dus-Iso2usb の問題点
sdb1,sdb2,sdb3,sdb5 でいっぱいです。基本パーティーションと拡張パーティションの区別はいまどきはどうなっているのかな?
サイネージの要件に以下のようなのがありますが、このパーティション構成だと Windows マシンではアクセスできなさそうです。
- 動画ファイルはユーザーで入れ替え可能
- Windows マシンで USB メモリに動画ファイルをコピーする
試しに、GpartED を使って sdb5 を縮小し、NTFS パーティションを作ってみましたが
アンマウントしてからパーティションを作ると /dev/sdb4 になってしまいました。
これを Windows10 Pro マシンに差し込むと Explorer が停止してしまいました。
dus-Persistent
さて、 dus-Iso2usb はうまくいかなさそうなので分岐点まで戻り、 dus-Persistent でやり直してみます。
しばらく後にこれが出てきました。
できたもの
$ sudo fdisk /dev/sdb -l
ディスク /dev/sdb: 28.64 GiB, 30752636928 バイト, 60063744 セクタ
Disk model: Ultra Fit
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 3678146B-1757-4FD3-A029-163F393382C8
デバイス 開始位置 最後から セクタ サイズ タイプ
/dev/sdb1 33650688 60061695 26411008 12.6G Microsoft 基本データ
/dev/sdb2 1953 3906 1954 977K BIOS 起動
/dev/sdb3 3907 503906 500000 244.1M EFI システム
/dev/sdb4 503907 7236328 6732422 3.2G Linux ファイルシステム
/dev/sdb5 7236329 33650687 26414359 12.6G Linux ファイルシステム
パーティション情報の項目がディスクの順序と一致しません。
$ lsblk -f /dev/sdb
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sdb
├─sdb1 ntfs usbdata 60D1D62443B90639 12.5G 1% /media/nanbuwks/usbdata
├─sdb2
├─sdb3 vfat FAT32 usbboot 4C2B-A37F
├─sdb4 iso9660 Joliet Extension Ubuntu 22.04 ja amd64 2022-05-02-03-06-06-00 0 100% /media/nanbuwks/Ubuntu 22.04 ja amd64
└─sdb5 ext4 1.0 writable 647985f1-a157-4808-9dd9-47fea5961528 10.9G 6% /media/nanbuwks/writable
$ ls /media/nanbuwks/usbdata
backup restore
$ ls /media/nanbuwks/writable/
lost+found upper work
$
この、usbdata が Wineows で読み書きできるようになっているために、ここに videos フォルダを作り、底に保存した動画ファイルを再生するようにしました。
USBメモリ内のLinuxの設定
- sudo apt update
- キーボードは英語になってましたので変更
- 以下の記事の逆の設定を行う
- cf.,「Ubuntu20.04 で US キーボードに変更」 https://qiita.com/nanbuwks/items/bcd6c838487c906a70e1
- vlc 、その他必要なものをインストール
autoexec の設定
ログオン時に自動で動かすために、以下の設定をした
/home/ubuntu/autorun.sh
sleep 10
vlc /media/ubuntu/usbdata/videos/* -f -L
sleep 10 は /media/ubuntu/usbdata がオートマウントするのを待つため。
/home/ubuntu/.config/autostart/autovideo.desktop
[Desktop Entry]
Type=Application
Name=Video AutoRun
Exec=/home/ubuntu/autorun.sh
Icon=system-run
X-GNOME-Autostart-enabled=true
Exec を ~/autorun.sh とするとダメでした。
これで、 usbdata パーティション videos フォルダ内の動画が再生されます。