LoginSignup
1
0

mkusb でちょっと凝った USB 起動 Linux を作成する

Last updated at Posted at 2023-05-24

ビデオサイネージを作ります

要件

  • 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 を選んで起動

image.png

Yes
image.png

i を選びます。
image.png
pを選びます

image.png

分岐ルート

image.png

ここから先は persistent filesystem の作り方によって分岐します。結果も変わります今回のような用途だと旧来の dus-Persistent が正解でした。

しかしながらこの記事では dus-Iso2usb / dus-Persistent 両方を解説します。

ちなみに、それぞれは以下のメリットデメリットは 以下のとおりです。

  • dus-Iso2usb
    • persistent 内容は EXT4 にファイル単位で保管される
      • 変更内容をファイル単位でアクセスできる
    • Windows からUSBメモリにアクセスできない
  • dus-Persistent
    • persistent 内容は 単一ファイルで保管される
      • ファイルシステムの整合性がとれないと脆弱?
    • Windows からアクセスできる領域を作成できる

dus-Iso2usb

この分岐ルートでは、dus-iso2usb を選びます。

iso ファイルを選んで

image.png

間違いないことを確認して

image.png

ここでは何も選択せずに

image.png

このような仕上がりになるようです。

image.png

$ 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 パーティションを作ってみましたが
image.png

アンマウントしてからパーティションを作ると /dev/sdb4 になってしまいました。
image.png

これを Windows10 Pro マシンに差し込むと Explorer が停止してしまいました。

dus-Persistent

さて、 dus-Iso2usb はうまくいかなさそうなので分岐点まで戻り、 dus-Persistent でやり直してみます。

image.png

しばらく後にこれが出てきました。

image.png

こちらはよくわからないけどこのまま OK
image.png

image.png

できたもの

$ 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の設定

最初に起動すると以下のメッセージが出てくるので「okay」
Screenshot from 2023-05-24 17-44-12.png

  • sudo apt update
  • キーボードは英語になってましたので変更
  • 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 フォルダ内の動画が再生されます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0