Raspberry Pi MoOde 4.0 Beta12を導入してみる

当サイトのRPi1Bのmoode audioもファイルサーバーを分離したことで身軽になりました。またMoOdeも4.0からまた無償化されたことも嬉しいですね。
ということで当サイトもトライしてみました。
MoOde 4.0ではソースコードとレシピのみ配布されていて自分でビルドしなければいけないようです。

当初ソースをダウンロードしてレシピに従いトライしてみましたがレシピではip設定ファイルをデフォルトに上書きしたり途中からはブラウザ上から設定しなければいけないなど当サイトのネット環境ではssh接続を維持、継続することが面倒で結局挫折してしまいました。

そこで少し作戦を変更してネット接続設定ファイルを書き換え不可にして最終段階で解除する方向で行ってみることにしました。当然ですがレシピとは若干順番が違ったりとかするので自己責任ですね。
実行方法としてはSTEP1のimgファイルの作成方法、STEP2のソースファイルのダウンロードを省いている以外はレシピ通りの実行をしています。

環境

当サイトのPi1Bは稼働しながらなのでzero(w)でインストール、カードを作成して最後にPi1Bに挿し替えます。
Raspberry Pi 3 ベースイメージ作成 sshクライアント
Raspberry Pi zero(w) インストール、ビルド
Raspberry Pi 1B 作成したカードでMoOde Audioとして運用

以下、その記録です。(参考程度に願います)

STEP 1 – Modify Raspbian Lite and create a new, base image

Image Builderというイメージ作成スクリプトもありますが今回はレシピの通りloopデバイスから作成してみました。

raspbian-stretch-liteはmoodeaudio_beta12.imgというファイル名でコピーしておきこれを基に変更を加えていきます。

loopデバイスはkpartxで作成することにして作業用のPi3にインストールしておきます。

$ sudo apt install kpartx

kpartxの実行

$ sudo kpartx -va moodeaudio_beta12.img
add map loop0p1 (254:0): 0 85045 linear 7:0 8192
add map loop0p2 (254:1): 0 3534848 linear 7:0 94208

実行するとpcmanfmにbootとrootfsが現れます。(pcmanfmに場所が出ない時は設定、配置を触っていると出てくると思います)

クリックするとパスワードを求められます。

マウントは/media/pi/以下にオートマウントされます。
kpartxはオフセット値を指定しなくても自動で計算されpcmanfmに即時反映されるので見通しが良くなります。
編集は/media/pi/以下にマウントされたファイルをターミナルから編集していきます。自マシンのディレクトリ構成と全く一緒になるのでディレクトリの位置を間違えないように!


この方法は通常のRaspbianのインストールする際のディスク作成にも有効です。

作成次第で非常にインストールの作業効率が上がります。

編集

/media/pi/boot/ssh 空ファイルの作成
$ cd /media/pi/boot
$ sudo touch ssh
/media/pi/boot/cmdline.txtの編集
$ sudo sed -i "s/init=.*//" cmdline.txt
$ sudo sed -i "s/quiet.*//" cmdline.txt
$ sudo sed -i "s/^/net.ifnames=0 /" cmdline.txt
Remove Auto-Resize
$ sudo rm /media/pi/rootfs/etc/init.d/resize2fs_once

MoOdeソースファイルもダウンロードしているのでここで含めてしまいます。

$ sudo cp -r rel-stretch /media/pi/rootfs/home/pi

固定ipアドレスの設定(自環境に合わせて)

/media/pi/rootfs/etc/dhcpcd.conf 末尾に追記(interface nameは指定しない)

static ip_address=192.168.0.111/24 (重複しないアドレスを)
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

有線であれば以上だけでOKです。作業用マシンにWiFi設定があるならコピーが早いです。
作業用マシンにWiFi設定がある場合

$ sudo cp /etc/wpa_supplicant/wpa_supplicant.conf /media/pi/rootfs/etc/wpa_supplicant/wpa_supplicant.conf

新たに編集するなら

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="YourSSID"
scan_ssid=1
psk="YourPASSWORD"
}

編集が終了したらpcmanfmからbootとrootfsをアンマウントしてloopデバイスを片付けます。(imgのあるディレクトリまたはフルパスで)pcmanfmからは見えなくなります。

$ sudo kpartx -d moodeaudio_beta12.img

編集したimgファイルをカードに書き込みます。(SDカードのデバイス名を確認して)

$ sudo dd if=moodeaudio_beta12.img of=/dev/sda bs=1M

当サイトではkpartxからloopデバイスを作成しましたがlosetupまたはImage Builderで作成したカードを照らし合わせて該当箇所を変更してもOKです。
Image Builderの使い方はこちらのページが参考になると思います。WITH A CHRISTIAN WIFE

作成したカードをzero(w)に挿し込んで起動します。

sshクライアントのPi3は/etc/hostsに名前を登録しておきます。
一応レシピに沿った形で記載していますがhostnameがmoodeになるのはstep3からになります。
imgファイルの段階でmoodeにしておいたほうが楽です。

/etc/hosts
192.168.0.111   moode

Pi zero(w)にssh接続

$ ssh pi@moode or ssh pi@192.168.0.111(pwd=raspberry)

ip設定ファイルを書き換え不可にする

無事ssh接続できたならこの時点で設定ファイルを書き換え不可にしてしまいます。

$ sudo chattr +i /etc/dhcpcd.conf
$ sudo chattr +i /etc/wpa_supplicant/wpa_supplicant.conf

STEP 2 – Expand the root partition to 3GB

STEP 2からは少し手抜きをして実行してみたいと思います。最初に試した時点で実行コマンドがかなり多いのでテキストファイルに書き出しておきました。
ファイルはcpするなりscpするなりしてpiディレクトリに置いておきます。(imgファイル編集の時点で作成してもOK)
コマンドラインからテキストファイルを実行していきます。
$ sh step02.txt


MoOdeのレシピを見ながら実行していきます。

$ sudo reboot は手作業で実行したほうがいいでしょう。

STEP 3 – Install core packages

$ sh step03_1.txt
$ sudo reboot
$ sh step03_2.txt

STEP 4 – Install enhanced networking

$ sh step04.txt
$ sudo reboot

STEP 5 – Install Rotary encoder driver

$ sh step05.txt

STEP 6 – Compile and install MPD

$ sh step06.txt
$ sudo reboot

STEP 7 – Create moOde runtime environment

sudo -i 〜 logoutの間で実行するコマンドはrootとして実行する必要があります。

$ sudo -i
moode # echo -e 'pi\tALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
moode # echo -e 'www-data\tALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
logout

$ sh step07.txt

STEP 8 – Install moOde sources and configs

$ sh step08.txt
$ sudo reboot

STEP 9 – Alsaequal

$ sh step09.txt

STEP 10 – Optionally squash /var/www

$ sudo -i
moode # echo "/var/local/moode.sqsh  /var/www  squashfs ro,defaults 0  0" >> /etc/fstab
$ logout

$ sh step10.txt
$ sudo reboot

STEP 11 – Optionally install latest Linux Kernel

$ sh step11.txt
$ sudo reboot

STEP 12 – Launch and configure moOde!

http://moode

webブラウザから確認できればOK

特にここで何もしなくても良さそうです。

STEP 13 – Final prep for image

ラストステップになりました。
STEP 12でいろいろ設定しても音が出るようになるのはSTEP 13を実行してからになります。
$ sh step13.txt
通常はここで再起動すればいいのですが当サイトの場合はhostnameやアドレスを変更していたのでPi1Bの設定に戻してから一旦パワーオフします。
$ sudo poweroff

Pi1Bにカードを挿し替えて再度起動
ssh接続をしてここで書込不可にしていたファイルの設定を解除します。(~/.ssh/known_hostsは削除するなりしておきます)

$ sudo chattr -i /etc/dhcpcd.conf
$ sudo chattr -i /etc/wpa_supplicant/wpa_supplicant.conf


Network Config画面から繋がる設定をしてAPPLYボタンをクリックすると正規の設定がdhcpcd.confに書き込まれます。
あとはカードやらなんやら設定をすると無事再生できました。(再起動が必要)
今回はadditional componentsの追加インストールは一切していません。


基本の画面は3.1となんら変わっていませんね。Beta12のロゴがかろーじて見分けが付くくらいでしょうか。
再生音はやはり向上しているように思います。

ほとんど基本の設定、動作しか確認していませんが気になった点としてはアルバムを再生したとき曲間の時間が少しずれていますね。時計が0になる2〜3秒前に次の曲が再生されます。
あとはパーミッションの問題でしょうか?play listのsaveができないようです。


インストール時間はSTEP1のカード作成次第と思いますが順調にいけば3時間位で終わります。(STEP2からは2時間30分)そのうちの1時間半近くはMPDのコンパイルにかかっています。Pi2,Pi3ならもう少し早いと思います。