« ◆ダークマターはカルトか権威かファンタジーか | トップページ | ◆量子もつれ:騙しのテクニック »

◇ubuntu20.04でfoobar2000-UPnP

以前の記事 ◇foobar2000UPnPをUbuntuで実行 を元にubuntu20.04でfoobar2000を動くようにした手順です。

foobar2000-UPnP(ハイレゾ対応DLNAオーディオ・ネットワーク・サーバ)を
Ubuntu20.04(Linux)上で
Wine(Windowsエミュレータ)を使って
動かします。

◇foobar2000UPnPをUbuntuで実行 と次の違いが有ります。

  • exFatが標準となったので記述から外した
  • Wineのインストール手順が変わった
  • foobar2000のservice化が出来た

 OSのインストール・基本設定

OSのインストールと基本の設定です。操作をWindowsのWinSCP,TeraTermから行うように設定します。

 sd(foobar2000.exe同梱の楽曲媒体)

今回動かすfoobar2000は楽曲データと共にSDカードに入れられており、インストール作業なしで.exeを動作させることが出来ます。
◆foobar2000+UPnPをポータブルにする,
◇WalkmanのSDにfoobar2000DLNA同梱参照

SDカードは次のフォルダ構成をとっています。

   +-- foobar2000_bin/
   |     +-- foobar2000.exe
   |     +-- components/
   |     +-- playlists-v1.3/   foobar2000のプレイリスト
   |     ...
   +-- MUSIC/      楽曲情報(iTunesのMusic,walkmanのMUSIC)
   |     +-- Bach/
   |     +-- Bartok/
   |     +-- Beethoven/
   |     ...
   |     +-- e-onkyo/      ダウンロードしたハイレゾ楽曲
   |     |     +-- Bach/
   |     |     +-- Bartok/
   |     |     +-- Beethoven/
   |     |     ...
   |     +-- mora/
   |     +-- *.m3u8  foobar2000以外のプレイリスト(walkman,minimServ,miniDLNA)
   +-- wineFoobar.sh   Ubuntuでservice起動
   +-- startFoobar.sh  Ubuntuでfoobar2000手動起動
   +-- killFoobar.sh   Ubuntuでfoobar2000手動停止
   +-- foobar2000.bat  Windowsでfoobar2000手動起動

Windowsでfoobar2000-UPnPを動かすだけなら、sdカードを挿し、foobar2000.batまたはfoobar2000_bin/foobar2000.exeで起動できます。
walkmanで聴くなら単にsdを挿せばよいようになっています。
DLNAサーバ minimServ,miniDLNA もこのMUSICフォルダを参照する形で動作可能です。

 Wineのインストール・GUIで動作確認

「日経Linux編 Linuxスタートブック 2020 Windowsのように使いこなす」の「第3章 Part 6 Wineの使い方 page100」を参考にしました。

**** Windows TeraTermから ****
==== 旧版削除
$ sudo apt remove wine

==== 32bit動作を可能とする(foobar2000は32bitアプリ)
$ sudo dpkg --add-architecture i386

==== Ubuntu 20.04 LTS用リポジトリ―登録
$ sudo wget -nc https://dl.winehq.org./wine-builds/winehq.key
$ sudo apt-key add winehq.key
$ sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'

==== wineインストール
$ sudo apt update
$ sudo apt install --install-recommends winehq-stable

==== winbindを更新
wine起動が次のエラーとなる場合
Make sure that ntlm_auth >= 3.0.25 is in your path.
winbindを最新版に置き換える必要があります。
$ sudo apt-get remove winbind && sudo apt-get install winbind

**** 本体コンソールでGUIによる設定 ****
$ winecng
-- GUI操作により次の設定を行う
wine mono インストール
Wine設定 Windowsバージョン [windows10]
--

**** TeraTermで ****
$ cd
$ wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
$ chmod +x winetricks
$ sudo mv winetricks /usr/local/bin/
$ sudo apt install cabextract
$ winetricks cjkfonts


**** 本体コンソールでfoobar2000起動 ****
媒体のフォルダに移動後
/media/ユーザ/ドライブ名
> cd foobar2000_bin
> wine foobar2000.exe
foobar2000の画面が出るので、DLNAクライアントから動作確認

DLNAクライアント(YAMAHA-AvControler)の画面

ここではhost名はubunNoteだが表示は大文字になっている

 SDの起動時自動マウント

デフォルトではexfat-sdはユーザlogin時に/media/ユーザ名下にマウントされます。

foobar2000をserviceとして動かすにはマウントポイントを固定化し、システムの起動時にマウントされなければなりません。

**** Windows TeraTermから ****
==== マウントポイントを作成しておく
$ sudo mkdir /media/foobar   # 'foobar'は任意

==== blkidコマンドでSDのUUIDを調べる
$ mount
・・・・
/dev/mmcblk0p1 on /media/ユーザ名/ドライブ名 type exfat (rw,nosuid,nodev....
・・・・
$ sudo blkid /dev/mmcblk0p1
/dev/mmcblk0p1: LABEL="foobar" UUID="3932-6238" TYPE="exfat"

===== /etc/fstabに設定する
$ cd /etc
$ sudo cp fstab fstab.sav
$ sudo vi fstab
--- 以下の1行を最後に追加
UUID="3932-6238" /media/foobar exfat nofail 0 0
--- 間違うと起動できなくなる可能性もあるので慎重に

===== リブート
$ sudo reboot
マウントされたことを確認する

 Wine/foobar2000のservice化

WineはGUIアプリですが、サービス化はGUIを用いません。
このため画面を表示しないX-Windowプログラムxvfbを導入します。Wine自体は画面を出す手続きを行うのですが、xvfbがそれを受け取った上で捨てます。

**** Windows TeraTermから ****
===== xvfbインストール
$ sudo apt-get install xvfb

service化するスクリプト wineFoobar.sh は次の様になっています。

#!/bin/bash
Xvfb :7 -screen 0 800x600x8 &
export DISPLAY=:7.0
wine ./foobar2000_bin/foobar2000.exe  >/dev/null 

このスクリプトをserviceとして動かします。

**** Windows TeraTermから ****
===== /systemd/system/wineFoobar.service作成
$ sudo vi /etc/systemd/system/wineFoobar.service
------------------------
[Unit]
Description = foobar2000 on wine

[Service]
StartLimitBurst=0
WorkingDirectory=/media/foobar/
ExecStart = /media/foobar/wineFoobar.sh
Restart = always
Type = simple

[Install]
WantedBy = multi-user.target
----------------------

===== サービス起動/確認/自動起動設定
$ sudo systemctl start  wineFoobar
$ sudo systemctl status wineFoobar
$ sudo systemctl enable wineFoobar

 媒体更新手続き

媒体の更新は次のように行います。

$ sudo syetemctl stop wineFoobar
$ sudo umount /media/foobar
媒体を抜く
内容を置き換える
 windowsで「iTunes->walkmanSD」ツールで転送後
 そのままfoobar2000を起動し、Library->stopUpnp/startUpnpし
 クライアントからアクセス確認
 必ずfoobar2000を終了させてから媒体をwindowsから抜く
媒体挿入
$ (sudo mount /media/foobar) 不要:挿入すれば自動マウント
$ ls /media/foobar
$ sudo systemctl start wineFoobar
$ sudo systemctl status wineFoobar

 メモ(apacheなど)

|

« ◆ダークマターはカルトか権威かファンタジーか | トップページ | ◆量子もつれ:騙しのテクニック »