• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

なかるうのブログ一覧

2021年09月25日 イイね!

仮想化オーディオサーバーの製作(3)

仮想化オーディオサーバーの製作(3)手のひらサイズのミニPCで作るオーディオサーバーの最終回です。
やっとオーディオネタに戻ってきました。今年はこんなことばっかやってますね・・・












(2024/1追記)
Broadcomによるvmware社の買収が完了し、ここで紹介したvSphere Hypervisor(ESXi)にも影響が取りざたされています。はっきりしたところで記載したいと思います。

(2024/2追記)
無償版vSphere Hypervisor(ESXi)の提供終了が公式に発表されました。残念です。

(2024/7追記)
ESXiの代わりにProxmox VEで作り直しました。
仮想化オーディオサーバーをProxmox VEで再構築した

(2025/4追記)
無償版ESXi8の提供が再開されました。





前回までで仮想化基盤とファイルサーバーを準備しました。いよいよオーディオサーバーに仕上げます。
DLNA(UPnP/OpenHome)もRoonも使える、多機能ファンレスサーバーを目指します。SMBプロトコル(NFSも追加可能)のファイルサーバーと併せ、ネットワークオーディオと名の付くプレーヤーにはたいてい対応できると思います。
alt
前回からまた少し変わって、最終的にはこんな構成になりそうです。

メインのファイルサーバー、TrueNASの仮想マシンVM1は旧サーバーからデータを引っ越し、既に稼働状態に入っています。
WindowsServerからのデータ移動にはFreeFileSyncを使いました。

VM1にある楽曲ファイルを使ってオーディオ配信を行うのがVM2とVM3です。メインのサーバーを動作させたままで安全に機能追加できるのは仮想化のメリットですね。
CPUの性能の範囲で、とはなりますが、軽量OSを選べば今回のような省電力PCでも2つ3つは動かせます。

作成した仮想マシンは、こんな風に仮想ネットワークでつながります。
alt
物理的なLANポートは1つしか接続していないのに、それぞれのマシンが独立したアドレスを持ち、ネットワーク上に台数分のPCが出現したように見えます。マネジメントネットワークとはESXi自身の管理画面のことです。


MinimServer2のインストール

当ブログではお馴染み、DLNA/UPnPサーバーのMinimServer2をインストールします。
どのマシンで動作させるか。MinimServer2はWindows・Macの他Linuxでも動作しますが、TrueNASのベースOSであるFreeBSDには未対応です。

調べてみたところ、MinimServer公式の掲示板にFreeBSDで動作させたという投稿がありました。ただし一部のライブラリはLinuxとFreeBSDで互換性がなく再コンパイルが必要になるそうです。MinimServerがバージョンアップするたびライブラリを入れ替えるのはちょっと面倒、もう一つのRoonは未知数ですがリソース喰いではありそう、というわけで今回はバックアップサーバーのOpenMediaVaultに載せることにしました。

OMVのベースOSはDebianでRaspberry Pi OSと同じ、rootのシングルユーザー運用である点はルーター用OSのOpenWrtと同じです。今年とった杵柄、キネヅカでサクッと行くよ。

ffmpegのインストール

MinimStreamerによるトランスコード(変換)配信を行う場合に必要なコーデック群です。SSHからコマンド一発で入ります。
root@openmediavault5:~# apt update 
root@openmediavault5:~# apt install ffmpeg 

以上。


Java実行環境のインストール

Javaはリリースされたばかりの最新LTS(長期サポート)版、Oracle JDK17(Java Platform, Standard Edition (Java SE) Development Kit)を使いました。
WindowsPCでOracleの公式サイトにアクセスし、Linux用の「x64 Compressed Archive」をダウンロードします。
(2021/10/4追記)
長時間(24hとか)稼働するとNASにアクセスできなくなることがあり、旧バージョンに変更しました。とりあえずJDK8では問題なさそうです。

せっかくのNASなので、Windowsからは共有フォルダ経由でOpenMediaVaultに転送します。shareという名前でフォルダを作成しています。
共有フォルダはOpenMediaVault側では/srv下のdevで始まる名前のディレクトリにあり、任意の場所(ここでは/usr/share)に展開します。
root@openmediavault5:~# cp /srv/dev-disk-by-uuid-xxxx-xxxx/share/jdk-17_linux-x64_bin.tar.gz /usr/share 
root@openmediavault5:~# cd /usr/share 
root@openmediavault5:/usr/share# tar xzvf jdk-17_linux-x64_bin.tar.gz 


chownコマンドでファイルのオーナー設定を修正。パスの通ったディレクトリにリンクを張って起動確認します。
root@openmediavault5:/usr/share# chown -hR root:root jdk-17 
root@openmediavault5:/usr/share# ln -s /usr/share/jdk-17/bin/java /usr/sbin 
root@openmediavault5:/usr/share# java -version 
java version "17" 2021-09-14 LTS 
Java(TM) SE Runtime Environment (build 17+35-LTS-2724) 
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing) 



リモートマウントプラグインのインストール

MinimServerの楽曲ファイルは、メインサーバーTrueNASの共有フォルダを使用します。(ローカルのバックアップHDDには手を付けたくないので)
OpenMediaVaultのプラグインを使って他のNASにアクセスできるようにします。管理画面の「プラグイン」からインストールします・・・が、デフォルトでは純正プラグインしか表示されないので、最初に以下のコマンドでサードパーティー製のプラグインを使用可能にします。詳しくはこちら
root@openmediavault5:~# wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash 

表示された「openmediavault-remotemount」をインストールします。
alt
TrueNAS側でユーザーを作成し、OpenMediaVault側からそのユーザー名でアクセスします。設定方法はこちら
alt
「ファイルシステム」画面にTrueNASの共有フォルダが表示されています。


MinimServer2のインストール

MinimServer2は64bitのLinux Intel版を使います。
やり方はJavaと同様で、インストールパッケージをWindowsPCでダウンロードしてOpenMediaVaultに転送、任意の場所(ここでは/usr/share)に展開します。
root@openmediavault5:~# cp /srv/dev-disk-by-uuid-xxxx-xxxx/share/MinimServer-2.0.18-linux-intel.tar.gz /usr/share 
root@openmediavault5:~# cd /usr/share 
root@openmediavault5:/usr/share# tar xvf MinimServer-2.0.18-linux-intel.tar.gz 


MinimServerのセットアッププログラムを実行。rootのシングルユーザーとして設定します。
root@openmediavault5:/usr/share# minimserver/bin/setup root 
MinimServer desktop integration is disabled 
MinimServer automatic startup is disabled 
Do you want to change these settings (y/n)? 

Enable desktop integration for MinimServer (y/n)? 

Enable automatic startup for MinimServer (y/n)? 

MinimServer automatic startup has been enabled 


MinimServerの初期設定を行うため、コマンドライン版のstartcで起動します。
root@openmediavault5:/usr/share# minimserver/bin/startc 
初回だけライブラリの場所を聞かれるので、上でマウントしたTrueNASの楽曲フォルダ名を入力します。
alt
ライブラリのスキャンが始まり、しばらく経って「MinimServer is running」と表示されれば起動完了。

MinimWatch(とJava)をインストールしたPCに同じ内容が通知され、アイコンが緑色になります。ならない場合はPCのファイアウォールがJavaをブロックしていないかチェック。パブリックネットワークあるある。
alt

startcによる起動ではコンソールを閉じるとMinimServerも止まってしまうので、いったん終了します。
>exit 
リブートしてPCのタスクトレイにあるMinimWatchのアイコンが再度緑色になれば成功です。
root@openmediavault5:/usr/share# reboot 


MinimStreamerのインストール

必要によりMinimStreamer(有償)をインストールします。設定方法は以前のブログをご覧ください。
ネットワークオーディオ自作(8) ラズパイサーバーを改良する
alt
以上でMinimServer2はセットアップ完了です。lightMPDなど、DLNA/UPnP対応のレンダラーで再生します。


Roon Coreのインストール

Roonについて

最新バージョンの1.8。相変わらずの美しい画面です。
alt
Roonについて語りだすとブログ1本になってしまうので、ちょっと古いですが以前の投稿をご覧ください。
Roonとラズパイで遊ぶ

逆木さん(PC関係が不得手な評論家センセーの多い中、この方のコンピューターオーディオ論は納得感があります)呼称するところの「総合音楽鑑賞ソフト」Roon。提供される圧倒的な情報量と、それにより演出される「曲との出会い」が楽しく、音楽好きの方には特に体験をおススメします。統合運用できるTIDALに(2021/10/4追記:Qobuzにも!)国内導入の噂もあり、実現すればさらに強力な音楽コンシェルジュになってくれることでしょう。

とはいえ、有料(年間サブスクリプションまたは永年ライセンス制)かつ楽曲情報が英語のみ(操作系やタグの日本語表示は可能)という2点から、日本ではまだヒットしそうにないのが残念なところです。

Roonのサーバー機能は「コア」と呼ばれています。今まで使ってきたのはWindows版、今回はLinux版のコアをセットアップしました。最初はNUC用に最適化されたROCK(Roon Optimized Core Kit)を使うつもりでしたが、仮想マシンに入れるにはトリッキーな作業が必要なようで通常のLinux版にしました。


仮想マシンVM3の設定とUbuntu Serverのインストール

Roonのハードウェア要件はこちら
Roonでは、再生デバイスに合わせたサンプルレート変換などをコアで行うため、サーバー側のハードウェア要求スペックが高くなっています。Linux版はOSが軽量な分、他のプラットフォームに比べハードルが少し下がります。
推奨ディストリビューションはUbuntuかArch。今回はUbuntuをデスクトップレスのサーバー構成で導入します。サーバーと聞くと重そうですが、GUIが無いので最小構成ではデスクトップ版よりかえって軽量にできます。

仮想マシンのリソースはこのくらい。CPUの性能からDSPなどRoonのフル機能は無理でも、通常の再生には支障ない程度を狙います。
alt
プロビジョニングポリシーをThic(Eager Zeroed)にして128GBを確保しようとしたら、60%前後初期化したところでESXiが他の仮想マシンもろともコケました。
安全ちゃうやんか!
この設定はディスクの初期化時に高負荷がかかり、再現性があることからNVMeあたりのハードウェアに問題がありそうです。安全な環境は堅牢なハードウェアあってこそ、ということですか。
デフォルト設定のThic(Lazy Zeroed)なら大丈夫でしたので続行します。
(2021/10/1追記)
M.2 SSDをキングストンの低消費電力タイプに変更。高負荷でも安定したかな?

Ubuntu Server(20.04 LTS)のインストールISOイメージを公式サイトからダウンロード、ESXiのデータストアにアップロードし、仮想マシンのCD/DVDドライブにセットしてインストールします。
画面表示に従って設定を進めてゆきます。といってもユーザー名等を設定するこの画面以外特に変更するところはありませんでした。
alt

インストールが完了したら再起動。CDROMを取り出してと言われたらESXiの管理画面でISOイメージの接続を外します。
alt

起動したらログインし、タイムゾーンの設定とシステム更新を行っておきます。
$ sudo timedatectl set-timezone Asia/Tokyo 
$ sudo apt update 
$ sudo apt upgrade 



Roon Coreのインストール

インストールガイドはこちら。引き続き、以下のコマンドでインストールします。
$ sudo apt install ffmpeg 
$ sudo apt install cifs-utils 
$ curl -O http://download.roonlabs.com/builds/roonserver-installer-linuxx64.sh 
$ chmod +x roonserver-installer-linuxx64.sh 
$ sudo ./roonserver-installer-linuxx64.sh 

これだけ。

(2021/10/23追記)
11月のアップデートの前にライブラリ「libicu」をインストールしておいてね!とのメールが届きました。
$ sudo apt update 
$ sudo apt install libicu66 

これはUbuntu20の場合。libicuはUnicodeのライブラリで、Linux版のフレームワークをMonoから.NETに移行してパフォーマンスを改善するため、だそうです。

alt
以降サーバーに触る必要はなく、このコンソールもexitして閉じてしまってOKです。設定はネットワーク上のPCやスマホ・タブレットから行えます。


Roon Coreの設定

コマンドにCIFSの文字が出てきたことからわかるように、Roonのファイル共有はWindows互換です。TrueNASにユーザーを作成し、SMBプロトコルで楽曲フォルダにアクセス可能としておきます。

PCでWindows版Roonを起動するとコアを見つけてくれます。Roon Remoteアプリをインストールしたスマホなどでも可能です。
alt
Roonのライセンスはコア単位なので、1ライセンスで運用できるコアは1台のみ。旧サーバーとはここでお別れ(削除はされず無効状態)となります。

ログイン後、楽曲フォルダを登録します。ホスト名が通らずIPアドレスで指定しました。
alt

TrueNASの音楽フォルダが見えました。「Select this folder」すると楽曲のスキャンが始まります。仮想ネットワークでつながっているので高速です。
alt
数分で普通に使えるようになり、引き続きバックグラウンドで曲の解析が行われ数日間はCPUパワーを消費します。サーバーなので放っておけばよいです。(状況は「Settings」-「Library」で確認できます)

Roonのコアはそれ自体はファイルサーバー機能を持たず、今回のように外部のPCやNASの音源を参照するか、OSのファイル共有を使う必要があります。仮想化でNASと組み合わせると1台でコアとライブラリを兼用でき使いやすくなります。NASやNAS用OSにコアをインストールするのも良いかも、と思いました。

あとは好みのオーディオデバイスを接続すれば再生可能。Roonのハードウェア対応は多彩です。
Roon Readyの機器であれば確実で音質も担保されますが、音を出すだけならPCにつながるものは大抵使えます。デバイスをPCに接続する場合は、Roon BridgeをインストールしておけばRoonを起動しなくてもスマホなどから再生コントロール可能です。
alt
Bluetoothアダプターで気軽に聴いたりもできますし、自分は古のネットワークオーディオ:
alt
Squeezebox Boomを再利用したりしています。
ピュアオーディオ用途でPCを経由するのは嫌だけどRoon Readyのプレーヤーなんて持ってない、そんな場合は市販のRoon対応ブリッジでUSBやS/PDIFに変換したり、ラズパイにRoon BridgeやRoon対応ディストリビューションを入れて自作することもできます。




以上で完成です。今回は「ホームネットワークに接続するファイルサーバー兼オーディオサーバー」というシナリオで構成してみました。
より音質を重視するなら、LANアダプターと以前作成したOpenWrtによるルーター(ネットワーク分離)を追加して、「オーディオ専用LANポート付きサーバー」なんてこともできると思います。
HUB基板を内蔵しただけの市販「オーディオ用」サーバーとは一味違うぞ!
とかね。




仮想化を使ってみて、OS/2やBeOS、はたまたNeXTSTEPなどOSを取っ換え引っ換えしていた時代の楽しさを思い出しました。あの頃は仮想化もなく、自分はOSを起動し直しては変わるUIで遊ぶ程度でしたが、現在はファイルサーバーやルーター、オーディオサーバーなど専用OSが多数あり、これらを並列動作させて実用的に使える環境になりました。

ただ、その一方でPCは電源を入れれば選択の余地なくWindowsが立ち上がるようになって久しく、簡単にはOSを変えられないモノになってしまっています。今こそクリーンコンピューターの思想が必要なのだ!




(2021/9/26追記)
リソースの割り当て状況はこんな感じです。このあたりのチューニングも仮想化で面白いところです。
alt
使用するコアの総数が物理コア数を超える(オーバーコミット)と、ESXiによるスケジューリングが入りパフォーマンスが低下します。実際に発生する頻度が高くなり過ぎない程度が良いでしょう。
メモリーとストレージは、ESXiが使う分を含めて物理的な容量の範囲に収めています。メモリーのオーバーコミットは避けるべき、ストレージはThicプロビジョニングの場合オーバーコミットできません。

欲を言えば8コア・32GB位あると遊ぶ余裕ができますが、そうなるとメーカー製PCの多くは強制空冷になってしまい、オリオさんあたりのファンレスPCが欲しくなります。
まぁ、この位で留めておくのが乙ってもんですかね。


(2021/10/8追記)
MinimServer2もRoonも安定動作しています。OSの選択、リソース設定などまだ最適解には達していない気もしつつ、ひとまず正式運用に入りました。

Roonで有名なシグナルパス表示です。オーディオファイル向けにはビットパーフェクトで再生できているかどうかのインジケータとして使えますが、あえてフォーマット変換させて負荷をかけてみました。以前のサーバーでは無理だった、DSD256からPCM48kHzへの変換も途切れることなく再生できています。ただしギャップレス再生はできず曲間で一瞬止まります。
なんでそんな変換を?と思うかもしれませんが、Bluetoothヘッドホンで聴く時はDSD不可、とかじゃ困るわけですよ。こういう能力は大事。
処理性能はこの条件(DSP機能はOFF)でリアルタイムの3倍程度と表示されています。flacなどのPCM音源やDSDでもネイティブ再生なら負荷はこれよりずっと軽くなり、1ストリームであればDSPを入れても一通りの再生はこなせそうです。上出来でしょ。


(2024/5/19追記)
RoonのベースOSにしたUbuntuを最新版にアップグレードしたところ動作が不安定となり、数日放っておくとRoonの仮想マシンがCPU100%状態で固まるようになってしまいました。車でRoon ARCを使う時にこれでは脱力感半端ないので、ROCK(Roon Optimized Core Kit)に入れ替えました。
現在のROCKはUEFIに対応し、ESXi環境にも比較的容易にインストールできるようになっています。コミュニティに上がっているこの手順でいけました。
ROCK VM on ESXi
中で必要と説明されているキーボードのパススルーについてはこちらの動画が分かりやすいです。


ただ、肝心のESXiが冒頭朱書きの状況ですので、このブログ自体あまり有用ではなくなってしまいました。仮想化基盤でNASとRoonを動かすと
・仮想ネットワークで高速に接続できる
・Roonが重くなったり最悪フリーズしてもファイルサーバーに影響しない
などメリットがありますが、今から同じことをするならProxmox VEとかですかね?
Posted at 2021/09/25 01:50:25 | コメント(0) | トラックバック(0) | オーディオ | 趣味
2021年09月12日 イイね!

仮想化オーディオサーバーの製作(2)

仮想化オーディオサーバーの製作(2)前回に続き、手のひらサイズのミニPCでオーディオサーバーを作ります。












(2024/1追記)
Broadcomによるvmware社の買収が完了し、ここで紹介したvSphere Hypervisor(ESXi)にも影響が取りざたされています。はっきりしたところで記載したいと思います。

(2024/2追記)
無償版vSphere Hypervisor(ESXi)の提供終了が公式に発表されました。残念です。

(2024/7追記)
ESXiの代わりにProxmox VEで作り直しました。
仮想化オーディオサーバーをProxmox VEで再構築した

(2025/4追記)
無償版ESXi8の提供が再開されました。





前回は水色部分の仮想化基盤まで。今回はその上のOS構築まで進めます。
計画通りにはいかない、し、やらないもので・・・仮想マシンを立てては消しを繰り返しています。もう少し経験を積めば勘所もわかってくるんじゃないかな。
alt
線の引き方がポイントです。

TrueNAS(旧FreeNAS)はFreeBSDベースのNAS用アプライアンスで、業務用サーバーにも対応可能な高速・高信頼性OSです。使ってみて安定感があるのでメインサーバーとして採用しました。


データ用SSDの接続準備

データ用の2.5インチSSDは、ESXiのRDM(Rawデバイスマッピング)という機能を使って全領域を1台の仮想マシン専用に割り当てます。
こうすると、仮想マシン上のOSのファイルシステムで物理的にフォーマットしたり、S.M.A.R.T.情報を取得することも可能になります。

公式ドキュメントでは仮想マシン作成時に設定できる、となっていますが・・・できませんでした。以下の手順で準備します。
データストアブラウザで、任意の場所にマッピングファイルの格納場所を作っておきます。
alt

対象となるディスクのデバイスパスを確認しておきます。入力時にTABキーで補完できるので全部覚えておく必要はありません。
alt

シェルまたはSSHコンソールから、以下のコマンドでマッピングファイルを作成します。
vmkfstools -z デバイスパス マッピングファイル.vmdk
デバイスパスは/vmfs/devices/disks、データストアは/vmfs/volumes下にあります。
alt

目的のディスクと(表示上)同サイズのマッピングファイルが作成されていれば成功です。
alt


仮想マシンVM1の作成

「仮想マシン」画面の「仮想マシンの作成/登録」ボタンから、ウィザード形式で作成することができます。
「新規作成」の後OSを選択。TrueNAS12のベースはFreeBSD12(64bit)です。
alt

割り当てるメモリーやハードディスクの容量を設定。
システム用ハードディスクは、プロビジョニングポリシーを「thic (Eager Zeroed)」としてパフォーマンスを優先します。なお64GB以上割り当てると16GBのスワップファイルが設定されるそうです。
alt

「ハードディスクの追加」-「既存のハードディスク」を選択
alt

作成したRDM用マッピングファイルを選択。
alt

最終確認後「完了」すると、ハードディスクが2台接続された仮想マシンが作成されます。まだ器(ハードウェア)ができただけなので、この後OSをインストールしてゆきます。
alt


TrueNASのインストール

仮想マシンにOSをどうやってセットアップするかというと、ESXiのデータストアにインストール用ISOイメージをアップロードしておき
alt

仮想マシンの設定を編集し、CD/DVDドライブにISOイメージを指定します。
alt

仮想マシンを「パワーON」すると、あたかもISOイメージのメディアで起動したようにインストールが始まります。
alt
管理画面の小窓に起動画面が表示されています。
仮想マシンのモニター出力(コンソール)はブラウザ内でウィンドウ表示させることも、VMRCという専用アプリで表示させることもできます。VMware Workstation Playerがインストールされている場合はVMRCの代わりにこれが使われます。
alt
初めて仮想化を使うと、この
仮想と現実が錯綜する感覚!
がとても新鮮で面白いです。

インストール方法についてはこちらのブログを参考にさせてもらいました。
TrueNAS - きりしま屋

インストール完了後の設定はブラウザで行います。ESXiの管理もブラウザなので混乱しそうになりますが、ESXiと仮想マシンのIPアドレスは別になり、ネットワーク上にESXiとは別のPCが出現したように見えます。
alt
管理画面のトップは、こんな洗練されたデザインのダッシュボードです。


サーバーの設定

設定方法についても先ほどのブログが詳しいです。ありがとうございます!
・ユーザーの追加
・プールの作成
・メール通知の設定(任意)
・SMB(Windows)共有サービスの追加
・S.M.A.R.T.監視タスクの設定(任意)


バックアップ用HDDの接続と仮想マシンVM2の作成

シングルドライブのNASでは(RAIDであってもリビルド中の連鎖故障を考えれば)バックアップは必須です。SSDの長期保存性はどうなんだろう?実績のHDDにしました。
alt
LHD-ENA020U3WR(ロジテック)
ロジクールじゃない方のロジテックで、今や珍しい国産品。Amazonで注文したら信州は伊那の工場から直送されてきました。中のドライブがNAS用のWD Red plusなのも良し。

バックアップ用HDDは万一の場合に他のPCでも読めるようにしたいので、フォーマットをexFATとします。TrueNASはZFSという耐障害性の高いファイルシステムを採用していてexFATを使えないため、バックアップサーバーとしてOpenMediaVault(OMV)の仮想マシンを立てました。OMVも標準ではexFATに対応しないのですが、ベースがDebianなので簡単にパッケージで追加できます。

インストール方法はTrueNASと同じ、というかどのOSでも同様で、仮想マシンを設定し、ISOイメージを読み込ませて起動します。OMV5のベースOSはDebian10(64bit)です。
alt

OMVもシステム用とデータ用ドライブを別々に割り当てる必要がありますが、最初はシステム用だけでインストール可能です。USBコントローラーは2.0と3.0が選択でき、USB3.0はワーニングが出ますが選択可能です。
alt

言語・キーボード・地域・ホスト名・ドメイン名・ルートパスワードの設定の後、インストールするディスクを選択。
alt
この後のアーカイブミラーは日本のrikenあたりにします。インストールが終了して「メディアを取り出し」と言われたら管理画面からISOイメージの接続を外します。

インストール完了。直後はIPアドレスが正しくありませんが、再起動後は実世界のDHCPから取得されます。
alt

表示されているIPアドレスをブラウザで開くとこんな管理画面になります。ログインユーザーはadminで、インストール中に設定したrootではないので注意。
alt

同じIPアドレスでSSHコンソールを開きrootでログイン、exFATファイルシステムをインストールします。
root@openmediavault5:~# apt update 
root@openmediavault5:~# apt install exfat-fuse exfat-utils 
root@openmediavault5:~# apt install open-vm-tools 

open-vm-toolsは、esxiからゲストOSのシャットダウン操作などを可能とするユーティリティでこれも入れておきます。

バックアップ用HDDは、ESXiの「USBパススルー」という機能でデバイスごと仮想マシンに接続します。最初にWindowsPCにつなぎexFAT形式でフォーマットしてからESXiに接続し直します。ボリュームラベルが日本語だとマウントに失敗するので注意。
OMVをシャットダウンし、ESXi管理画面で仮想マシンの設定を編集、「その他のデバイスの追加」「USBデバイス」でHDDを割り当てます。
alt

OMVを起動すると、「ファイルシステム」画面でHDDが認識されているのでマウントします。
alt

(2021/9/19追記)
exFATはlinux用のファイルシステムではないため、アクセス権の設定ができず共有フォルダ作成時にエラーが発生します。そのままでも使用は可能ですが、/etc/default/openmediavaultにnofailオプションを追加しておきました。
OMV_FSTAB_MNTOPS_EXFAT="defaults,nofail,uid=0,gid=100,umask=0000"

あとはRsyncなどを使ってTrueNASからOpenMediaVaultへバックアップタスクを走らせるよう設定すればファイルサーバーの完成です。




そろそろ飽きて力尽きかけてますが、次回ようやくオーディオサーバーをインストールできそうです。




(2021/9/21追記)
TrueNASの性能を計測してみました。

ベンチマークアプリでは、最高値でほぼネットワークの上限速度(1Gbps=125MB/s)が出ており良しとします。
これを見る限り、ネットワークがボトルネックになるのはごく限られた条件だけなので、実用上はまだ1GbEで問題ないと思います。次にPCを更新する頃、2.5GbEや10GbEが安くなっていたら移行しましょうかね。
Posted at 2021/09/12 23:02:52 | コメント(0) | トラックバック(0) | オーディオ | 趣味
2021年08月22日 イイね!

仮想化オーディオサーバーの製作(1)

仮想化オーディオサーバーの製作(1)前回購入したファンレスのミニPCを何に使うか。
自宅サーバーのリプレースという大役に抜擢してみました。












(2024/1追記)
Broadcomによるvmware社の買収が完了し、ここで紹介したvSphere Hypervisor(ESXi)にも影響が取りざたされています。はっきりしたところで記載したいと思います。

(2024/2追記)
無償版vSphere Hypervisor(ESXi)の提供終了が公式に発表されました。残念です。

(2024/7追記)
ESXiの代わりにProxmox VEで作り直しました。
仮想化オーディオサーバーをProxmox VEで再構築した

(2025/4追記)
無償版ESXi8の提供が再開されました。



オンプレミスで行こう。

サーバーがあると、PCの更新・故障時など復旧がアプリだけで済むので楽ですが、今ならクラウドストレージという選択もありますね。でも大容量のデータには回線が少し頼りない。
PCが2台以上ある家ならまだまだサーバーの意味はあると思いますし、回線が十分実用的になっても、自分は何だかんだ言いながらローカル保存にこだわっている気がします。特に音楽は。

今までの自宅サーバーはこれ。その前はNASでした。
alt
PRIMERGY TX100 S1(富士通)
静かで良かったプライマジー。CPUは65WのXeon E3110を35WのL3110に換装、OSは今は無きWindows Home Server2011、2TB×4台のエンタープライズHDDをStablebit Drivepoolで束ねて使っておりました。
このスペックで約10年間、途中OSをWindows Serverに更新し、24時間365日ノートラブルで走ってくれました。お疲れさま。
(WHS使いやすかったのに、何でやめちゃうかなマイクロソフトさん・・・)

しかし
ちょっとやり過ぎた。
反動で、今回はダウンサイズします。
alt
PN41(ASUS)
手のひらサイズのミニPCです。スペックは前回レビューした通り。
alt
さすがに10年も経つと、6ワットのAtomでもXeonに勝っちゃうんですね。


システムプラン

こんな感じに考えてみました。
仮想マシンVM1で、PC用のファイルサーバーとオーディオ用DLNAサーバーを担います。VM2(,3,4,...)は自由に使える砂場(実験用環境)です。各VMは高速の仮想ネットワークでつながります。
alt
省電力CPUに仮想化で機能を詰め込む・・・
ダウンサイジングターボか!
機能を仮想マシンにどう割り当てるか、各マシンにリソースをどう割り振るか、このあたりがキモになりそうです。


スペック検討

PN41の128GBではサーバーにならないので、盛ります。
alt
右下:W4N3200CM-8GR DDR4-3200(PC4-25600) 8GB×2枚 (Crucial by Micron)
右上:SSD-CK500N3/N EXCERIA M.2(Type2280) NVMe-SSD 500GB(キオクシア)

(2021/10/1変更)
SNVSE/500G Kingston SSD NV1-E 500GB M.2 2280 NVMe(キングストンテクノロジー )
左:WDS200T1R0A-EC WD Red SA500 2.5インチSSD 2TB(Western Digital)

メモリー:16GB
サーバーだけなら標準の4GBでもいけそうですが、CPUがJasper Lakeになって最大メモリー量が16GBに増えたこともあり、仮想化を本格導入する気になりました。

システム用SSD(M.2):500GB
ESXi7.0のシステム領域に最大128GB、残りが仮想マシン用の領域(データストア)になります。Roonのシステム(ライブラリではない)に64~128GB必要、となると250GBではちょっと手狭かなと。
信頼性重視で「速い」のより「熱くない」のが欲しくて、最初SATAのM.2を入れてみましたが認識しませんでした。写真のようにヒートスプレッダが付けられるものの、あんな爆熱のNVMeが5年とかもつのかね?

データ用SSD(2.5インチ):2TB
底板ごとスライドさせて取り付ける構造になっています。なかなか攻めてる設計ですね。
NAS用のドライブを選定。以前のサーバーは2TB×4ですがDrivepoolでファイルを2重化していたので実質4TB、さらに半減したのは動画データを使わなくなったためです。

自分のハードディスクの消費量が減ったのは2012年から。
同年は著作権法改正で違法ダウンロードが刑罰化された年ですが、同時に市販BD/DVDのリッピング行為も(レンタルかセルを問わず、個人利用であっても)違法となりました。自分はこれで「冷めた」というか。
正当に購入したコンテンツをメディアプレーヤーやネットワークプレーヤーで楽しむことすら認めない、「そんなメディアならもう結構」と購入激減。その分のお金は当時既にDRM撤廃に転じていた音楽に回すようになりました。


閑話休題。音楽、写真、ドキュメントで2TBもあれば問題なしです。
バックアップにはUSB接続のHDDを使います。

以降、仮想化基盤、OS、アプリの順にインストールしてゆきます。つまづいたところを中心に記しておきます。


vSphere Hypervisor(ESXi)のインストール

ハイパーバイザー型仮想化基盤のESXiを導入します。
以前にシングルボードコンピュータのAPUで試しているので、こちらもご覧ください。
APUと仮想化で遊ぼう

ESXiはガチのエンタープライズ製品で、企業のサーバー室にあるブレードサーバーとかで動いているものです。管理者側のソフトウェアのためWorkstation Playerあたりと比べると小難しい印象があり、また今回もそうでしたがコンシューマー向けPC、特にLANコントローラーがIntel製でない機種ではひと手間必要になるケースが多いようです。インストールさえ突破できれば、あとは安定して使える良い製品なのでガンバリます。

VMwareのサイトから無償版ESXiのISOイメージをダウンロード。ライセンスコードも入手します。Rufusなどイメージ書き込みアプリでインストール用USBメモリーを作成します。
PCはBIOS設定でSecure Bootを無効化、起動順序をUSB優先、仮想化支援機能のVT-dを有効化しておきます。

PN41のLANコントローラーは2.5GbE対応のRealtek RTL8125で、ESXiのインストーラは認識せず
alt
中断してしまいました。選択肢は2つ。
・ドライバーを追加したカスタムISOを作成する(2.5Gbps、ESXi6.7以前のみ)
・RTL8153搭載のUSB-LANアダプターを使う(1Gbps、ESXi7.0のみ)
alt
運よく、前回lightMPDの動作確認用に購入したアダプターがRTL8153でしたのでこれを使用します。

USBポートにアダプターを接続し、再度USBメモリーから起動すると今度は
alt
インストール先ドライブの選択まで進めます。選択したドライブは消去され、全領域がESXiの管理下に置かれます。

しかしこの後再びエラー。
alt
Exception: No vmknic tagged for management was found.
と表示されて止まりますがインストール自体は完了しています。
Alt-F1でシェルを開き、rootでログイン(パスワード無し)。USBメモリーを抜いてrebootすると、
alt
ESXi使いにはお馴染みの起動画面が表示されます。
IPアドレスの表示が0.0.0.0となっておりネットワークが機能していないようです。

F2を押してrootでログイン(初期パスワード無し)し、DCUI(ダイレクトコンソールUI)を呼び出します。
alt
よく見ると管理用ネットワーク(Management Network)関連の設定がグレーアウトされ選択できなくなっています。
「Network Restore Options」から「Restore Network Settings」を実行し、一度トップ画面まで戻るとネットワークが使えるようになるので、「Configure Management Network」「Network Adapters」でネットワークアダプターを選択します。
パスワード、SSHやシェルの有効化、必要によりIPアドレスの固定化もここで設定しておきます。

ローカルコンソールでの設定はここまで。以降はネットワーク上の別のPCから操作します。
ブラウザでhttps://アドレスを開くと、vSphere Web Clientという管理画面になります。
alt

「管理」「ライセンス」画面でライセンスコードを入力して完了・・・と思いきや、まだ罠がありました。
alt
インストール時のUSB-LANドライバー「cdce」ではリンク速度が100Mbpsとなっています。以下の手順で1Gbps対応のドライバーをインストールします。
vmware Flings - USB Network Native Driver for ESXi
ドライバーやインストール用のコマンドはESXiのバージョンにより異なるので、ここで確認しておきます。

「ホスト」画面の「アクション」ボタンからメンテナンスモードに入ります。
alt

「ストレージ」画面からデータストアブラウザを開きます。任意の場所にダウンロードしたドライバーをアップロードします。
alt

データストアは、/vmfs/volumesにあります。
ローカルコンソールの黄色い画面に戻り、Alt-F1でシェルを開き(Alt-F2で戻ります)、esxcliコマンドでインストールします。SSHを有効にしてあれば、次のようにリモートでも可能です。
alt
ファイル名やディレクトリ名は、Linuxと同様TABキーによる補完が使えます。

再起動すると、ドライバーが「uether」に変わり1Gbpsでリンクしました。
alt
メンテナンスモードを終了することを忘れずに。




ここまでで仮想化基盤が構築できました。
長くなったので残りはまた今度。
Posted at 2021/08/22 00:47:21 | コメント(0) | トラックバック(0) | オーディオ | 趣味
2021年08月06日 イイね!

最後のAtom?Jasper Lakeを試す

最後のAtom?Jasper Lakeを試すWindowsで使うにはちょっとパワー不足として評価が固まってしまった感のあるCPU「Atom」ですが、低消費電力でファンレス動作が可能なためオーディオ用PCには使い勝手が良く・・・またまた試しました。







昨年レビューした「Atom」搭載PCは4機種。


HeroBox (CHUWI)
ネットワークオーディオ自作(4) lightMPDをPCで


GD41 (KODLIX)
ネットワークオーディオ自作(5) lightMPDをPCで(リベンジ編その1)


Neo G41V-4 (MINIX)
ネットワークオーディオ自作(6) lightMPDをPCで(リベンジ編その2)


LIVA Q2 (ECS)
ネットワークオーディオ自作(7) lightMPDをPCで(番外編)

これらの機種のCPUはコードネーム「Gemini Lake」または「Gemini Lake Refresh」で、その後継となる「Jasper Lake」世代のプロセッサーを搭載したPCが登場しました。


現在リリースされている「Jasper Lake」はこの6モデル。
(もう一つ、なぜかこの表には出てきませんがCeleron N5095というTDPが15Wのモデルがあります。)
ファンレスが狙えるTDPは概ね6W以下※、lightMPDに適したクアッドコアのモデルを絞り込むとPentium Silver N6000かCeleron N5100となります。
※より消費電力の大きなCPUでも、大がかりな冷却機構によりファンレスを実現している例はあります。

ん?Atomの話じゃないのって?何ともややこしいところで、Atom用の設計(マイクロアーキテクチャ)でもブランド名は上位のPentium SilverまたはCeleronとネーミングされており、Atom名を冠したモデルはJasper Lake世代にはありません。
これは「ユーザーさんは難しいことは気にせず、名前で性能を判断してね」というIntelのメッセージで、モデル名の数字が排気量を示さなくなった某欧州車と似たところがあります。こういう、ユーザー視点?のネーミングスキームが流行っているのかしら。技術的な解説を行うニュースサイトなどでは苦労していることでしょう。厳密なところはWikipediaなりへどうぞ。

ニュースサイトの記事によれば、プロセッサーとしてのAtomはこの世代で最後ではないかとのことで、今後は省電力コアとして別の製品ラインに取り込まれるのか、それともライバルのARMにその座を空け渡してしまうのか。
個人的にはファンレスや乾電池駆動が好きなんです。かつての

とか、映画「ターミネーター2」のあの子がATMでお金をおろす()時に使ってたやつとか。スマホにキーボードをつけたのじゃなくて「PCと同じ」がいい。なので省電力のインテルアーキテクチャ(LPIA)は続けて欲しいのですが・・・さてどうなるか。

(2022年追記)Intel Coreプロセッサーの最新版「Alder Lake」は、高性能のPコアと高効率(省電力)のEコアを組み合わせた構成となり、Atom系列のCPUコアがEコアとして採用されました。
・・・ということで、Atomの魂は主力のCoreプロセッサーに取り込まれた形です。ただし、まだ製品としては登場していませんが、Atom相当とも言えるEコアだけのモデルが存在するとの情報もあります。

(2023/1追記)第12世代Core(Alder Lake)/13世代Core(Raptor Lake)の下位モデルとして、Eコアだけの「Alder Lake-N」が発表となりました。また少し前にブランド名の変更もあり、従来のPentium(Gold/Silver)やCeleronはIntel Processorとして一本化されました。
Intelのサイトには、Intel Core i3 Processorとして8コアのN305/N300、Intel Processorとして4コアのN200/N100/N97、2コアのN50、そして久しぶりのAtomブランド、x7425E/x7213E/x7211Eも掲載されています。これらがJasper Lakeの後継、Atomの実質的な末裔ファミリーとなります。
Jasper Lake世代AtomのTremontコアから1世代進んだGracemontコアとなり、性能的には向上していますが消費電力的にはどうでしょうかね。


購入

今回購入したのはこれ

PN41 N5100モデル(ASUS、写真左)

手のひらサイズの「ミニPC」に分類される製品です。
縦横11.5cm。IntelのNUCとほぼ同サイズ、右のAPUやCDケースと比べるとサイズ感がわかると思います。
まだ国内導入はされておらず、Amazon.co.ukから購入。もう慣れましたがベコベコの段ボールで届きました。
(2022/5/17追記)N5100モデルの国内販売が決定しました。自分が購入したものとは入出力やストレージの仕様が変わっているようです。詳しくはメーカーサイトをご覧ください。


UK仕様はプラグの形状が違います・・・も、もちろん知ってましたですわよ。
ACアダプター本体は100~240V対応なので、ここだけ市販の100V仕様のケーブルに交換すれば問題なく使えます。アダプター側は3pinの「ミッキー」タイプ。


エッジが立っていてカワイイというよりスタイリッシュ系ですね。こんなちっちゃいPCなら何台でも欲しくなります。
完全ファンレスで無音動作ですが、天板を放熱に利用しているようでかなり熱くなります。
後面のインターフェースは左からHDMI、DisplayPort、USB Type-C、2.5GbEのLAN、USB3.1×2、DC19V。DisplayPortはモデルによってLANやVGA、COMになります。Type-CのUSBはUSB-PDとして電源入力にも使えます。
(2022/5/17追記)国内モデルではUSB Type-CがminiDisplayPortに変わっています。


前面にはオーディオジャック、USB Type-C、USB3.1と電源スイッチがあります。


底面。さすが大手ASUS、しっかりした鉄板の筐体で好印象です。
小さいのに内部は拡張性の高い設計になっています。メモリーはDDR4のSO-DIMMが2スロット、ストレージはM.2(放熱板付き)に加え2.5インチのSSDも搭載可能です。


動作確認


購入したモデルはWindows 10 Proの海外版がインストールされていました。初期セットアップは英語で進める必要がありますが、問題なく日本語化できました。(画像はWindows Update後のため購入時とは異なります)


HWiNFOでCPU情報を取得してみました。
Celeron N5100は4コア4スレッドで、ベースクロック1.1GHz、ブースト時2.8GHz。メモリーは4GBシングルチャネル、SSDはNVMeの128GB。
(2022/5/17追記)国内モデルのストレージはeMMCの64GBに変わっています。



APU2のGX-412TCがデータベースになかったので、GX-412HCで代用しています。
N5100のマルチスレッド性能は以前のN4100とほとんど変わりませんが、シングルスレッド性能が大きく向上しています。とはいえ最新のデスクトップPC向けCPUと比べるほどのものでもありません。


圧倒的な低消費電力は変わらず。


こちらはシステム情報。LANコントローラはRealtek製です。
発熱がそれなりにあり、SSDがNVMe、セッティングもパフォーマンス志向になっているようで、全体の消費電力は以前のモデルほど下がらないかもしれません。

PC Mark 10のスコアです。

下は普段使っているマシン(Ryzen 5 3400GE)のスコア。比較するとWebは問題なし、ビジネスアプリは体感半分くらいで業務で支給されたら怒るけど家でなら使えなくもない感じ。画像処理や動画編集には、当然ゲームにも厳しいですね。メモリーの少なさもあってか、初回のWindows Updateは特に重かったです。


lightMPDは

lightMPDのx86_64版で動作確認がとれているハードウェアはLIVA ZおよびLattePandaです。lightMPDの公式サイトには、
「Liva、Lattepanda 以外の機種でもイーサネットコントローラに Realtek 8169PCIやIntel 82575/82576を使った機種なら動作する可能性はあります。(保証はできません)」
とあります。

lightMPD起動用USBメモリーの作成方法については冒頭でリンクしたブログをご覧ください。
USBメモリーをPCに挿入、BIOSでSecure Bootを無効化・起動順序をUSB優先に変更して再起動・・・しましたが動作せず。モニターに表示されるログを見るとLANコントローラの認識に失敗しているようで、最新の2.5GbE対応チップに互換性がないのかもしれません。残念。
USB接続のLANアダプターが使用できるとの情報を見つけたので、試してみたいと思います。

(2021/8/12追記)
LANアダプター追加によりlightMPDが動作するようになりました。BIOSで内蔵LANを無効に設定するだけ、設定ファイルの編集などは不要です。

搭載チップはRealtek RTL8153のものが使えるようです。


車載するなら

100V電源の普通のPCと同じで、ACアダプターを接続しても電源スイッチを押すまで起動してくれません。
電源が供給されたらすぐに起動するようBIOSの設定を変更できること。手の届くところにPCを置けない車載ではこれが条件となります。

ASUSのBIOSはGUIなんですね。ACアダプター接続で即起動することを確認できました。サイネージモード、あるいはキオスクモードとも呼ばれています。


消費電力測定

PN41のDCプラグは外径5.5mm/内径2.5mmのセンタープラスでAPUと同じでした。電源ラインにワットチェッカーをはさんで計測します。

プリインストールされているWindows10では、起動時のピークで13W程度


起動完了後は最小5W程度ですが、ディスクアクセス中は10W台に跳ね上がります。


ベンチマークアプリ(PCMark 10)を動作させると、平均6~11W程度で推移しますが、ピークでは12Wを超えることもありました。

(2021/8/12追記)
USB-LANアダプターによりlightMPDを使用すると、FLAC音源再生時で11W、DSD再生時は13W程度となりました。


これまでレビューした機種の中では、全体に消費電力は高めのようです。
それでもデスクトップPCとして見れば超低消費電力であることに変わりはなく拡張性も高いので、色々と使い道はありそうです。
・ファイルサーバー
・音楽サーバー(MinimServer、RockならRoonもいけるかも)
・Daphile
・仮想化基盤(ESXi)
などなど。遅いWindowsマシンとして使うより楽しいのでは?

(追記)ESXiを使ってファイルサーバー兼音楽サーバーを製作してみました。こちらもご覧ください。
仮想化オーディオサーバーの製作(1) (ESXi)
仮想化オーディオサーバーの製作(2) (TrueNAS/OpenMediaVault)
仮想化オーディオサーバーの製作(3) (MinimServer/Roon)


ずっとこのジャンルをウォッチしているのは、オーディオ用リニア電源の
alt
UltraCap LPS-1.2 (UpTone Audio)
でPCを駆動してみたいからで、この定格(DC12V 1.1A)で動作し、lightMPDのDSD/PCMやサンプルレート変換をこなせるだけの性能を備えた「10ワットPC」が欲しいのですが、なかなか見つかりません。(電源が19Vの本機は最初から外れているのですけど。)
サーバーは前回作ったし、これさえあれば車載システム完成なんだけどなぁ・・・

Atomが終わったらファンレスのミニPCというジャンル自体が消滅してしまうのでは?という不安を抱きつつ、Jasper Lakeはまだまだ出始めなので旅は続きます。




ネットワークオーディオ関係の記事をまとめてみました。よかったらこちらもご覧くださいませ。
ネットワークオーディオを楽しもう
Posted at 2021/08/06 02:13:06 | コメント(0) | トラックバック(0) | オーディオ | 趣味
2021年07月09日 イイね!

直結ネットワークオーディオ(実用化編) - MinimServer2 on OpenWrt/RaspberryPi3 -

直結ネットワークオーディオ(実用化編) - MinimServer2 on OpenWrt/RaspberryPi3 -前回製作した「直結(ハブレス)」ネットワークオーディオ。とりあえず動いたものの、ソフトウェアルーターとして実装したWi-Fiの安定性がイマイチなのが気に入らず・・・今回が実用化編となります。








みん友さんのコメントから始まった前回のプランです。私はシステムアップしただけ。
alt
サーバーとレンダラーをHUBレスで直結しています。当然ですが対向接続でつながるのは2台で、これだけではコントロールポイントともインターネットとも通信できません。サーバー役のラズパイにルーター機能を実装し、Wi-FiとEthernetをソフトウェア的に接続(ブリッジ)、上位のLANとはセグメントを分けてルーティングすることにより、非オーディオパケットがレンダラーに流れ込まないよう遮断します。

アナログ的な物量は別として、理屈ではかなり理想的なオーディオサーバーになっていると思うので構成はそのまま、ソフトウェアルーターの部分を1からやり直しました。


OS選定

使用したのはタイトル画像のOpenWrt
オープンソースのルーター用OSで、主に市販ルーターのファームウェアに上書きして使うものですが、ラズベリーパイでも動作します。Linuxベースであるのと、豊富な機能拡張用パッケージでカスタマイズできることから、今回のようにモニターもキーボードも接続しない「ヘッドレス」用途では汎用OSに近い感覚で使うことができます。

汎用OSにルーター機能を実装して苦労するなら、ルーター用OSでサーバーアプリを動かす方が近道では?
という発想です。ラズパイ用のセットアップガイドはこちら


OSのビルド

え、ビルドから始まるの?
サーバーアプリのMinimServer2用にOSの構成(ビルドオプション)を変更します。
これ近道なのか?いきなり怪しくなりました・・・

もちろん公式サイトには機種ごとのインストールイメージが掲載されていて、ラズパイの場合それをダウンロードしてmicroSDカードに書き込むだけで普通はOKです。
サーバーアプリもパッケージで簡単にインストールできるminiDLNAがあり、そちらを使えばビルド不要で簡単そうですが・・・自分はMinimServerを使いたいので、こちらの道を行きます。

ビルド環境としてLinuxが必要です。WindowsPC上にホスト型仮想化環境のVMware Workstation Playerを、その上にUbuntuをインストールしました。
alt
Ubuntu Japanese Team公式サイトからダウンロードしたISOイメージをVMに食わせるだけでセットアップがサクっと進みます。Windowsとのファイルのやり取りはドラッグ&ドロップでできますし、ハードウェアが仮想化されるおかげでUbuntu側に特別なドライバとか必要なし。DVDを焼いて素のPCにインストールするより快適ですね。

HDDの容量はビルド終了後にこのくらい膨らむので、仮想マシンに最低30GBほど割り当てておきます。他のマシン設定はデフォルトで大丈夫です。
alt

公式サイトのクイックガイドはこちら
[OpenWrt Wiki] Quick Image Building Guide

ちょうどラズパイ3B用のOpenWrtをビルドする解説記事があり参考になりました。ありがとうございます!

ガイド(「Debian / Ubuntu」の部分だけでOK)に従い、GitやSubversionなど開発系パッケージをインストールしてから以下の手順でOpenWrtのソースコードを取得します。
~/xxxxxx$ cd 
~/$ git clone https://git.openwrt.org/openwrt/openwrt.git 
~/$ cd openwrt 
~/openwrt$ git fetch --tags 
~/openwrt$ git tag -l      (Ctrl-Z to exit) 
~/openwrt$ git checkout v19.07.7 
~/openwrt$ ./scripts/feeds update -a 
~/openwrt$ ./scripts/feeds install -a 

~/openwrt$ make menuconfig 

とするとメニュー形式の設定画面になります。

上から3行でターゲットを指定。ラズパイ3Bでは64bit版と32bit版から選べ、今回は32bit版を選択しました。4行目のターゲットイメージではsquashfsを外していいです。
alt
Advanced configuration options => Toolchain optionsからUse glibcを選択します。これがビルドの目的です(後述)。
alt
OpenWrtにはaptやyumに相当するopkgというパッケージ管理システムがありますが、この選択により標準のパッケージの多くは使えなくなります。後で必要になる機能は全てここで追加してコンパイルします。
Base system --->
[*] block-mount
[*] libstdcpp
Kernel modules --->
    Filesystems --->
[*]     kmod-fs-exfat
[*]     kmod-fuse
    USB Support --->
[*]     kmod-usb-storage
[*]     kmod-usb-storage-extras
[*]     kmod-usb-storage-uas
[*]     kmod-usb-uhci
[*]     kmod-usb2
    Wireless Drivers --->
[*]     kmod-mt76x2u
LuCI --->
    1. Collections --->
[*]     luci
Multimedia --->
[*] ffmpeg
Utilities --->
    Disc --->
[*]     blkid
[*]     lsblk
    Editors --->
[*]     nano
    Filesystem --->
[*]     fuse-utils
[*] dmesg
[*] ldd
[*] tar
[*] usbutils


(2021/7/13追記)UPSのjuice4haltを使う場合は以下も追加。
Base system --->
    busybox --->
        coreutils --->
[*]         usleep


設定を保存して終了。夜寝る前に
~/openwrt$ make V=sc 
しておけば、翌朝にはbin/targetsディレクトリにイメージが出来て(またはエラーでコケて)います。

ビルドして出来たインストール用イメージ(gz形式)からimgファイルを展開しmicroSDカードに書き込みます。書き込みアプリはWin32DiskImagerRufusなどで、Raspberry Pi Imagerも使えます。


ルートパーティション拡張

初期状態のルートパーティションは256MBでした。サーバーアプリ導入用に拡張しておきます。
Gparted(Gnome PARTition EDitor)を使います。ビルド環境にインストールするか、CDやUSBメモリーから起動できるLive版もあります。
alt
画像は公式サイトより。右上のプルダウンでmicroSDカードを選択、ext4フォーマットの領域を空き領域全体に拡張、最後に適用(チェックのボタン)すれば完了です。誤ってPCのHDDを操作して起動不能にしないよう注意。
(2021/7/17追記)8GBのカードでは問題ありませんでしたが、もっと大容量のカードで空き領域いっぱいまで拡張するとエラーになることがあります。確保するサイズは1GBもあれば不足することはないでしょう。


OS起動

ローカルのコンソールはなく、PCからネットワーク経由で操作します。
初期状態ではLANポートに固定IPアドレス「192.168.1.1」とDHCPサーバーが設定されており、そのままホームネットワークに接続すると障害が発生する可能性大です。PCのLANケーブルを家のルーターから抜きラズパイと直結します。他の接続はまだ行いません。
alt

(注)ラズパイは出荷状態では内蔵Wi-Fiの地域コードが設定されておらず、設定するまで電波が出ません。しかしラズパイ3B用のOpenWrt(19.07)ではこの設定が機能していないため、インストール前に別のOS(Raspberry Pi OSのraspi-configなど)でコードを「JP」に設定する必要があります。
Wi-Fiは地域コードを元に出力レベルや周波数を制限することで、国ごとの規制に対応しています。誤った設定だと国内法を逸脱した電波を出力する可能性があるので、他の国に設定するのは「ご法度」です。設定はハードウェア(EEPROM)に記憶され、OSを変更しても上書きしない限り維持されます。

コンソールとして
alt
SSH接続によるCUIと(画像のアプリはPuTTY)、
alt
ブラウザで操作する「LuCI」というWebGUIが用意されています。見た目は市販ルーターの管理画面のようなこのLuCIが強力で、画面をつついているだけでご飯3杯いけそうです。この感覚わかる方は是非。

ラズパイ版のファイルシステムは普通のext4のため、電源を落とすときはSSHコンソールからコマンドを入力します。面倒なので最後にUPSを導入して自動化します。
# poweroff 

(注)外部からラズパイに侵入されないよう、ホームルーターの設定を必ず確認します。プロバイダーとの契約内容によっては、ラズパイのポートがIPv6で外部から丸見えになる場合があります。しかも最大手のフレッツなどデフォルトの設定でそうなっているところもあり危険です。NATとかプライベートアドレスとかv4時代の生半可な知識は罠ですよ、というのは自分の話。


OpenWrtの用語

以下の用語を理解しておくと設定がやりやすいと思います。

デバイス(radio0, eth0など)
:物理的なネットワーク用ハードウェア。LANやWi-Fiアダプター。

インターフェース(wlan0, br-lanなど)
:デバイスを設定することによって作成される「接続」。デバイスと1対1とは限らず、複数のインターフェースを束ねた仮想的なインターフェースもある。

ゾーン(wan, lanなど)
:インターフェースをWAN側やLAN側に割り当てた「まとまり」。

例えば、radio0 という「デバイス」で上位のルーターに接続すると「インターフェース」wlan0 になり、それを「ゾーン」wan に所属させる、といった感じ。
LANポートをローカル側にしたりインターネット側にしたりといった設定が柔軟にできるようになっており、なるほど良く出来ています。


Wi-Fiネットワークに接続

ラズパイの内蔵Wi-Fiでインターネットに接続します。
alt

LuCIなら市販ルーターの感覚で簡単に設定できると思います 。ユーザーガイドはこちら。
[OpenWrt Wiki] Connect to client Wi-Fi network

「Network」-「Interface」画面を開き、EditボタンからLAN側IPアドレスを上位のネットワークと別のアドレス(冒頭のシステム図では192.168.13.1)に変更。いったんPCの接続が切れ、90秒以内にブラウザorSSHを開きなおして再接続すると有効化されます。
alt
「Network」-「Wireless」画面を開き、デバイス「radio n」(n=0,1,2...)でネットワークのスキャンを実行。見つかったアクセスポイントに接続すると、インターフェース「wlan n」が作成されます。ゾーンやルーティングは自動で入力されるので確認だけ。
alt
alt


ローカルネットワーク構築
alt
現在のOpenWrtでは、ラズパイの内蔵Wi-Fiを使ったAP-STAモード(アクセスポイントとクライアントの同時利用)は動作しないようです。USB接続のWi-Fiアダプターを1個追加し、有線LANとブリッジを構成します。

(参考情報)
GitHub - USB WiFi Adapter Information for Linux

公式にドライバーが用意されている機種でもアクセスポイントとしては使えない場合があります。いくつか失敗して落ち着いたのがこれ。
alt
A6210-100JPS(NETGEAR)
WiFi 無線LAN USBアダプター 子機 AC1200 867+300Mbps 高性能アンテナ USB延長ケーブル付き


ちょっと大柄ですが、OpenWrtで動作実績のある機種を購入しました。

搭載チップを確認。
# lsusb
Bus 001 Device 004: ID 0846:9053 NetGear, Inc.

チップは MediaTek MT7612U です。

Wi-Fiの機能を確認。
# iw list -A 4 "interface combinations" 
    valid interface combinations: 
        * #{ IBSS } <= 1, #{
managed, AP, mesh point } <= 2, 
          total <= 2,
#channels <= 1, STA/AP BI must match 
ハードウェアとしてはAP-STAモード対応で、実際に設定もできましたが安定動作しませんでした。単機能で使う分には安定しているので、アクセスポイント専用に使用します。

「Network」-「Wireless」画面を開くと、接続したデバイスが増えています。Editボタンから「アクセスポイント」モードのインターフェースを追加。
alt
alt
追加したインターフェースはデフォルトで「lan」ゾーンに割り当てられています。
alt
br-lanという仮想インターフェースが最初から設定されていて、ここに追加されたインターフェースはルーターのローカルネット側端子のようにブリッジされて同一ネットワークになります。前回のようにインターフェースやデーモンの起動順序を気にする必要もなく、LuCIのGUIで直感的に設定できます。

これでネットワークが構成できました。さすがはルーター用OS、この種の設定はお手のもの。
反面ここから先はルーター用OSにルーター以外の仕事をさせるためちょっと面倒になります。GUIは使えずコマンドラインで操作します。


USBディスクのマウント
alt
サーバーを構築するため、USBストレージを接続します。
alt
ポータブルSSD 480GB SSD-PL480U3-BK/N (バッファロー)

exFAT形式でフォーマットし楽曲ファイルを入れたSSDを接続し、認識されることを確認します。
# blkid 
/dev/sda1
: LABEL="SSD-PLU3" UUID="C2C4-9374" TYPE="exfat" PARTUUID="dd3dafec-01"

以下のコマンドでマウントします。マウント名usbhdd1は任意です。(19.07では、exfat形式のストレージをfstabで自動マウントさせることはできませんでした。この方法だと接続するUSBポートを変えるとマウントに失敗することがあるので、以降つなぐ場所は変更しません。)
# mkdir /mnt/usbhdd1 
# mount -t exfat -o sync,dev,noatime,noexec
/dev/sda1 /mnt/usbhdd1 
# ls /mnt/usbhdd1 

ファイルが表示されればOK。

起動時にマウントするようスクリプトを設定します。/etc/rc.localファイルを直接編集するか、LuCIでも可能です。
alt


Javaのインストール

この後で入れるMinimServer2を動かすためにJavaの実行環境を準備します。
MinimServer2の要求はJava8以上。OpenWrtには「JamVM」という軽量のランタイムが用意されていますが、MinimServer2とはバージョンが合わず使えません。

ならば、とフルセットのJDK(Java開発キット)をインストールしようとしたところ、OpenJDKやOracleJDKはOpenWrtに未対応でした。
これは、OpenWrtがCのライブラリとして軽量のmusl-libcを採用しており標準的なglibcを使っていないためです。そこでOpenWrtのビルドオプションを変更してglibcを使えるようにした、というわけです。

Oracle JDK8(Java SE Development Kit)を公式サイトよりダウンロード。OSを32bitで構成したので、Javaも32bit版の「Linux ARM 32 Hard Float ABI」を使います。

PCでダウンロードしたJDKをSSDに入れてラズパイに移動し、/usr/share ディレクトリに展開します。
# cp /mnt/usbhdd1/oraclejdk-8u291-linux-arm32-vfp-hflt.tar.gz /usr/share 
# cd /usr/share 
# tar xzvf oraclejdk-8u291-linux-arm32-vfp-hflt.tar.gz 

tarで展開されたファイルのオーナー設定が正しくない?chownコマンドで修正しました。パスの通ったディレクトリにリンクを張って起動確認します。
# chown -hR root:root jdk1.8.0_291 
# ln -s /usr/share/jdk1.8.0_291/bin/java /usr/sbin 
# java -version 
Java(TM) SE Runtime Environment (build 1.8.0_291-b10) 
Java HotSpot(TM) Client VM (build 25.291-b10, mixed mode) 



MinimServer2のインストール

UPnP/DLNAサーバーのMinimServer2をインストールします。ラズパイ用は32bitのarmhf(ARMハードフロート)版です。

SSDに入れておいたMinimServerのインストールパッケージを/usr/shareディレクトリに展開します。
# cp /mnt/usbhdd1/MinimServer-2.0.18-linux-armhf.tar.gz /usr/share 
# cd /usr/share 
# tar xvf MinimServer-2.0.18-linux-armhf.tar.gz 


MinimServerのセットアッププログラムを実行。OpenWrt用にrootのシングルユーザーとして設定します。
# minimserver/bin/setup root 
MinimServer desktop integration is not available 
MinimServer automatic startup is not available 

エラーとなった自動起動は後で設定します。

MinimServerの初期設定を行うため、コマンドライン版のstartcで起動します。
# minimserver/bin/startc 
初回だけライブラリの場所を聞かれるので入力する
(ここでは /mnt/usbhdd1/Music)
alt
やったぜ。ゴールが見えてきたか?
ライブラリのスキャンが始まり、しばらく経って「MinimServer is running」と表示されれば起動完了。
alt
MinimWatch(とJava)をインストールしたPCに同じ内容が通知され、アイコンが緑色になります。ならない場合はPCのファイアウォールがJavaをブロックしていないかチェック。パブリックネットワークあるある。

startcによる起動ではコンソールを閉じるとMinimServerも止まってしまうので、いったん終了します。
>exit 
デーモン(サービス)として起動させるのは次のコマンドです。
# /usr/share/minimserver/bin/startd 
/etc/rc.localファイルに追加して自動起動させます。
alt
リブートしてPCのタスクトレイにあるMinimWatchのアイコンが再度緑色になれば成功です。
# reboot 


MinimStreamerのインストール

ここまでで通常の再生は可能になっていますが、MinimServerの特徴であるトランスコード配信を行うにはMinimStreamer(有償)をインストールします。設定方法は以前のブログをご覧ください。ffmpegはOSビルド時に追加済みのためインストール不要です。
ネットワークオーディオ自作(8) ラズパイサーバーを改良する
alt


UPSの接続とシャットダウン用スクリプトのインストール

電源を落としたら自動でシャットダウンするようUPS(無停電電源)を追加し、あわせて電源を12V化します。ハードウェアは
alt
Juice4halt J4H-HV-TRM(Nelectra)
です。こちらも上のブログで紹介しました。

UPSで自動シャットダウンさせるためのスクリプトをセットアップします。ダウンロードはこちら

/usr/shareディレクトリにjuice4haltディレクトリを作成し、SSD経由でスクリプトをコピーします。
# cd /usr/share 
# mkdir juice4halt 
# cd juice4halt 
# cp /mnt/usbhdd1/shutdown_script /usr/share/juice4halt 
# nano shutdown_script 

(2021/7/13追記)スクリプトを修正します。
・先頭のbashをshに変更
・パラメータが小数点となっているsleepをusleepで置換
 例:sleep 0.1s -> usleep 100000
・sudoを削除

/etc/rc.localの最後(exit 0の手前)に次の1行を追加。
/usr/share/juice4halt/shutdown_script & 
alt
スクリプトに実行権限を設定。
# chmod 755 shutdown_script 
電源を切断・再投入し、機能を確認します。
# poweroff 

もう一つのスクリプト、rebootj4hは標準のrebootコマンドの代わりに使用します。rebootコマンドで再起動した場合、その後の自動シャットダウンは無効となります。
# cp /mnt/usbhdd1/rebootj4h /usr/share/juice4halt 
# chmod 755 rebootj4h 
# ln -s /usr/share/juice4halt/rebootj4h /usr/sbin 
# nano rebootj4h 

こちらも同様に修正します。




以上で完成です。ネットワーク再生システムに移行し動作確認します。
設定に使ったPCをレンダラーに変更し、USB-DACを接続します。lightMPDなら同じPCをUSBメモリーから起動させればOKです。LANポートにはDHCPサーバーを設定していますがlightMPDのIPアドレスは固定のため、lightmpd.confでサーバーと通信可能なアドレスに設定しておきます。
スマホを作成したアクセスポイントにWi-Fi接続し、UPnP/DLNAコントロールアプリで再生します。
alt
この状態で24h連続再生させ特に問題なく安定動作しているので、実用化「合格」とします。結構トラブルシュートが必要でしたね。




ネットワークオーディオを、ネットワークの性能に特化したOSで動かす。いい音出そうな気がしません?
また、世の「オーディオ用HUB」が一般のHUBより高音質だとするなら、「HUBレス」の音質はどこに位置するのか?これもちょっと面白いテーマです。

64bit版も作ってみたいし、SFPも試したいところですが今はお腹いっぱい。しばらくは「聴き専」に回ることにします。


讃美歌320番「主よ、御許に近づかん」

天界まで召される見通せるような音が出てくると良いなぁ。
疲れたよパトラッシュ・・・


ネットワークオーディオ関係の記事をまとめてみました。よかったらこちらもご覧くださいませ。
ネットワークオーディオを楽しもう




(2021/7/14追記)ホームでの動作確認を終え、車載運用を開始しました。カーオーディオでの第一印象は「硬質で明確」。鮮度感のある生きた音が出てきました。

(2021/7/23追記)間違いなく楽しい音にはなったのですが、ちょっとキツいというかデジタルっぽい?これはアレだな、と
alt
iPurifier DC (iFi-Audio)
を12V化したラズパイの電源ラインに入れてみたら正解でした。ハブレスにしたことにより、ハブからのノイズ混入が無くなった一方で、サーバー側の信号品質が影響するようになった・・・のか?
いよいよ禁断のオーディオ用LANケーブルでも試してみますかね。1本で済むシステムになりましたし。

(2021/8/1追記)
LANケーブルにSAECのSLA-500を使ったところ効果あり。電源の対策と合わせて音のキツさは消えクリア・ダイナミックなメリットが残りました。HUBやネットワーク分離のためのサブルーター・それらの電源が不要な点も使いやすく、主力音源として正式採用します。
それにしてもサーバーで音が変わるなんて面白い。

(2021/7/18追記)
64bit版のOpenWrtをビルドしてみました。MinimServer2やJavaも64bit版を使用する以外、今回と同じ手順でいけます。しかし現在の19.07ではCPUのクロック制御に不具合があり、次の安定版となる21.02(今はrc3)を待った方が良さそうです。

(2021/10/17追記)
21.02がリリースとなったので、再度64bit版をビルドしました。JavaはOracle JDK8の64bit版、MinimServer2もAarch64版を使用。このバージョンでは特に目立った不具合もなく普通に使えるようになりました。逆にメモリ1GBのラズパイ3Bで64bit化したところで機能・性能的なメリットも感じませんでしたが、音質は32bit版と完全に同じではなく比べてみるのも楽しいかと。
Posted at 2021/07/09 23:52:32 | コメント(1) | トラックバック(0) | オーディオ | クルマ

プロフィール

「自分のブログの内容にどこぞの謎情報を混ぜられたものが「AIによる回答」として提供される。生成AIに利用された絵師の気持ちが理解できたと同時に、想像以上に信用ならねーなという思い。みんカラも学習拒否の設定させて欲しいぞ。」
何シテル?   06/08 05:24
「なかるー」改め「なかるう」、「う」は大きい「う」です。 音楽のあるドライブが好きです。いい音だったらもっと楽しいですよね。なのでいい音を追求してます。 更...

ハイタッチ!drive

みんカラ新規会員登録

ユーザー内検索

<< 2025/8 >>

     12
3456789
10111213141516
17181920212223
24252627282930
31      

リンク・クリップ

3Wayスピーカーのクロスオーバー設定 位相合わせ 
カテゴリ:その他(カテゴリ未設定)
2025/06/14 21:11:12
備忘 Passat Variant 11年14万kmの整備振り返り 
カテゴリ:その他(カテゴリ未設定)
2024/10/18 00:02:25
Ottocast A2AIR Pro 
カテゴリ:その他(カテゴリ未設定)
2024/06/18 03:24:43

愛車一覧

フォルクスワーゲン パサート セダン フォルクスワーゲン パサート セダン
フォルクスワーゲン パサート セダン (DBA-3CCAX) に乗っています。 シトロエ ...
日産 ティーダラティオ 日産 ティーダラティオ
(2015/8)乗り換えのため手放しました。 日産 ティーダラティオ15G(DBA-S ...

過去のブログ

2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2023年
01月02月03月04月05月06月
07月08月09月10月11月12月
2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation