abk1's scratched blog 3::AUDIO DIARY

コメントへの書き込み機能は停止していますので宜しくおねがいします。

Jan 03, 2018

piCore7にmpdをインストールする方法

このたびサイトのログを眺めていたら、意外にアクセスが多いのが下記のエントリーだと気付いた。
Raspberry Pi でメモリ再生を試みる(piCore7にmpdをインストールする)-いろいろ追記あり

音質向上を追及した多くのディストリビューションが公開されている中で、正直、piCore7にどの程度のニーズがあるのか分からないんだけど、なるべく分かりやすい形に書き直して、まとめておこうと思った。しかし、結果的に長くて分かりにくい。

毎度のことで、今回もあちこちに訂正とか追記、改訂を入れている。 1月9日、sshについて追記訂正した。rebootする前にfiletool.sh -bで鍵を保存してしまえば再ログインで蹴られることはない。こんな当たり前のことに気付くのに1年半かかっているということで、我ながら呆れてしまう。

piCore7をダウンロード。

以下、tiny core linuxのサイト、piCore7関係のソース。

raspberry pi B/B+piCore OShttp://tinycorelinux.net/7.x/armv6/releases/RPi/
TCZhttp://tinycorelinux.net/7.x/armv6/tcz/
raspberry pi 2/3piCore OShttp://tinycorelinux.net/7.x/armv7/releases/RPi2/
TCZhttp://tinycorelinux.net/7.x/armv7/tcz/

piCoreはv.9まであるんだけど、mpdを簡単にインストールできるのはv.7しかない。
v.9用TCZとして用意されているライブラリにはDoxygenはないし、Boostはインストールしてもうまく機能しない。v.7のTCZは機能するようだ。
TCZというのはtiny core linux系のOSで扱いやすいようにソフトウェアやライブラリをパッケージ化したようなもので、基本的にはTCZの一覧表に載っているソフトなら簡単なコマンドを打つだけでインストールできる。ときにソフト間の依存性の関係によっては出来ないこともあったり、前述のようにインストールしたのに使えないこともあったりする。

1月末、追記。数日前に気付いたんだけど、v.6にもmpd.tczが追加されている。 いつの間に、、、記憶違いでなければ、前はなかったと思うんだけど、、、 当方で使ってみるには至っていない。

まず使用するras piに合わせてOSを落とす。
落としたらmicroSDに書き込む。

microSDの準備。

microSDにはPICOREというボリュームができているので、その中のconfig.txtを編集する。
うちではi2s出力とusb出力以外は使わないので、もとからある設定について下記のように記載変更している。HDMIやイヤホン出力を使う場合はこんな設定ではいけないらしいけど、どこをどうしたらどうなるかは調べていない。
dtparam=i2c=off,spi=off,i2s=on,i2c_vc=off

i2sデバイスを使用するなら、そのデバイスに合わせた設定を記載する。
例えばhifiberryのデバイスなら、以下のような感じ。

https://www.hifiberry.com/guides/configuring-linux-3-18-x/

DAC/DAC+ Lightdtoverlay=hifiberry-dac
DAC+ standard/prodtoverlay=hifiberry-dacplus
Digi/Digi+dtoverlay=hifiberry-digi
Amp/Amp+dtoverlay=hifiberry-amp

例えばうちで使っているi2sDACはLINUXCOMのRBD-02+なので「dtoverlay=hifiberry-dac」と書き込む。
http://linuxcom.shop-pro.jp/?pid=79120318

piCore7を起動しsshでログインする。

microSDカードをRaspberry Piに刺して起動する。
余裕のある電源を使うこと。
sshでログイン。userはtc、パスワードはpiCore。
ログインに必要なipアドレスは環境によって変わるのでユーザー各自で確認のこと。ちなみにうちでは、いちいちDNSDHCPサーバーにアクセスして新たに割り振られたipを確認している。
sshでは最初のログインで(yes/no)?と訊かれるので、yesでログインする。

filetool.sh -b について

ログイン直後にfiletool.sh -b コマンドを打つことで、sshの鍵が保存される。

tc@box:~$ filetool.sh -b
Backing up files to /mnt/mmcblk0p2/tce/mydata.tgz\
Done.
tc@box:~$

piCoreでは、上記タイトルのコマンドで、適宜、変更した設定などを保存しておく必要がある。
全てRAM上で動くOSなので、コマンドを打ってmicroSDに保存するのを忘れていたら、電源を切ると同時に設定していたはずの内容が消失してしまう場合がある。OSを再起動したら設定前の状態、以前に保存した状態に戻っている。
そういう理由で、一通り設定が終了するまでの間にしばしば使用することになるコマンドなので予めここに記述しておく。

filetool.sh -bを打たないまま、下記の行程のパーティション拡張を行なったら、piCore7上にsshの鍵が保存されないので、sshで再ログインしようとした際に蹴られる。もしもそうなったらどうしたらいいかは下の方に記載している。

パーティションディスクイメージを拡張。

以下の流れでパーティションディスクイメージを拡張。もともとは最低限の大きさなので、拡張しないと後で諸々のインストールに支障を生じる。

tc@box:~$ sudo fdisk -u /dev/mmcblk0
Command (m for help): p

Disk /dev/mmcblk0: 7948 MB, 7948206080 bytes
3 heads, 8 sectors/track, 646826 cylinders, total 15523840 sectors
Units = sectors of 1 * 512 = 512 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk0p1            8192       69631       30720   c Win95 FAT32 (LBA)
/dev/mmcblk0p2           69648       93119       11736  83 Linux

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First sector (8-15523839, default 8): 69648
Last sector or +size or +sizeM or +sizeK (69648-15523839, default 15523839): 15523839

上記は、端末画面に表示されたものをそのままコピペしている。
適宜、表記されているpとかdとか2とか、打ち込んでenterキーを押していくと、物事が進行していく。

気を付けないといけないのは、どこからどこまで拡張するか指示するための数字。
Command (m for help): p でパーティションボリュームの状態が表示される。
上記の例では /dev/mmcblk0p2の startが69648、endが93119、ということだけどこれを拡張することになる。
First sectorは、startの69648のまま指示。Last sectorは93119以上にしないといけない。いっぱいに拡張するなら「default 15523839」と表示されているので、15523839と打ち込んで、enterキー。
以降、下記のように続ける。

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table
fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy
tc@box:~$ 
tc@box:~$ sudo reboot
tc@box:~$ Connection to xxx.xxx.xxx.xxx closed by remote host.
Connection to xxx.xxx.xxx.xxx closed.

ここでリブート。
注意しないといけないのは、パーティション拡張の指示をしたからだと思うんだけど、この時点でsshのkeyが無効になっている。そのままログインしようとしたら撥ねられるので、.ssh/known_hostsに保存されているipアドレス:xxx.xxx.xxx.xxxの行を削除しないといけない。削除したら再度、初回のログインの処理をしていけば、以降はkeyをなくすことはない。

うっかりして、filetool.sh -bコマンドを打ってsshの鍵を保存するのを忘れていた場合、リブートしたらsshの鍵が無効になっている。ログインしようとしたら撥ねられる。そうなったら、sshクライアントとして使ってるパソコンの.ssh/known_hostsに保存されている鍵、ipアドレス:xxx.xxx.xxx.xxxの行を削除する。削除したら、初回ログインと同じ行程でログインできる。
filetool.sh -bコマンドでsshの鍵を保存するのを忘れないこと。

再度、ログインして以降の流れは以下の通り。拡張作業の最終段階。

tc@xxx.xxx.xxx.xxx's password: 
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

tc@box:~$ 
tc@box:~$ sudo resize2fs /dev/mmcblk0p2
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p2 is mounted on /mnt/mmcblk0p2; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 30
The filesystem on /dev/mmcblk0p2 is now 7727096 (1k) blocks long.
tc@box:~$ 

この流れは http://tinycorelinux.net/7.x/armv6/releases/RPi/README にも書いているが、ちょっと不親切。
コマンドの使い方を調べる必要があった。
うちの記述も分かりやすいとは言えないと思うけど、実際に触ってやってみたら分かるんじゃないかと思う。

filetool.sh -b について

piCoreでは、上記タイトルのコマンドで、適宜、変更した設定などを保存しておく必要がある。
全てRAM上で動くOSなので、コマンドを打ってmicroSDに保存するのを忘れていたら、電源を切ると同時に設定していた内容が消失してしまう。OSを再起動したら設定前の状態、以前に保存した状態に戻っている。
そういう理由で、一通り設定が終了するまでの間にしばしば使用することになるコマンドなので予めここに記述しておく。

ipアドレスを固定。

これも下記のような流れで。
まずifconfigで確認。

tc@box:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr B8:27:EB:36:8A:DF  
          inet addr:192.168.1.116  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:775439 errors:0 dropped:92 overruns:0 frame:0
          TX packets:250166 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1123681152 (1.0 GiB)  TX bytes:24070244 (22.9 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

上記の例では、192.168.1.116となっている。これはDNSDHCPサーバーから割り振られたもので、ネットワークの状況次第でこっちの知らぬ間に変わる可能性がある。うちでは変わられては困るので、固定している。
以下、流れを記載。

eth0.shを作る。
tc@box:~$ cd /opt
tc@box:/opt$ ls
bootlocal.sh  bootsync.sh   shutdown.sh   tcemirror
tc@box:/opt$ vi eth0.sh

/optディレクトリに移動。
ここには設定ファイルを置く場所で、ここにeth0.shを作ることでipを固定できる。
viでファイルを作成。
下記のように記載。

#!/bin/sh
pkill udhcpc
ifconfig eth0 192.168.1.82 netmask 255.255.255.0 broadcast 192.168.1.255 up
route add default gw 192.168.1.1
echo nameserver 192.168.1.1 > /etc/resolv.conf

上記の例では、192.168.1.116だったアドレスを192.168.1.82に変更している。

bootsync.shを編集。

引き続き、流れを記載していく。
chmod +x コマンドで実行権限を変更。
さらに、bootsync.shファイルを編集。

tc@box:/opt$ ls
bootlocal.sh  bootsync.sh   eth0.sh       shutdown.sh   tcemirror
tc@box:/opt$ chmod +x eth0.sh
tc@box:/opt$ ls -aFl
total 28
drwxrwsr-x    3 root     staff          200 Jun  4 12:46 ./
drwxr-xr-x   17 root     root           380 Jan  1  1970 ../
-rw-rw-r--    1 tc       staff          403 Jun  4 10:53 .filetool.lst
-rw-rw-r--    1 root     staff          145 Dec 31  2014 .xfiletool.lst
-rwxrwxr-x    1 root     staff          360 Jan 20  2015 bootlocal.sh*
-rwxrwxr-x    1 root     staff          272 Dec 31  2014 bootsync.sh*
-rwxr-xr-x    1 tc       staff          179 Jun  4 12:46 eth0.sh*
-rwxrwxr-x    1 root     staff          613 Dec 31  2014 shutdown.sh*
-rw-rw-r--    1 root     staff           31 Dec 31  2014 tcemirror

tc@box:/opt$ sudo vi bootsync.sh

bootsync.shに「/opt/eth0.sh &」の一行を下記のように書き加える。
起動時にeth0.shに記載した設定を読み込んでくれる。

#!/bin/sh
# put other system startup commands here, the boot process will wait until they complete.
# Use bootlocal.sh for system startup commands that can run in the background 
# and therefore not slow down the boot process.
/usr/bin/sethostname box
/opt/bootlocal.sh &
/opt/eth0.sh &
.filetool.lstの編集。
tc@box:/opt$ vi .filetool.lst

.filetool.lstファイルは、前述した「filetool.sh -b」コマンドでデータを保存する場所を設定している。
これに「opt/eth0.sh」を追記する。
追記しなかったら、再起動したら設定が消えてしまうということ。
同時に、いくつか他にも保存して欲しい場所やファイルがあるので、これも追記する。
usr/local/etc/
opt/bootlocal.sh
以上を追記して、以下の通り。以前はetc/fstabも追記していたけど、うちでは使わないので。使うようなら記載を。

opt
home
etc/passwd
etc/shadow
etc/group
etc/gshadow
usr/local/etc/ssh/ssh_host_dsa_key
usr/local/etc/ssh/ssh_host_dsa_key.pub
usr/local/etc/ssh/ssh_host_ecdsa_key
usr/local/etc/ssh/ssh_host_ecdsa_key.pub
usr/local/etc/ssh/ssh_host_ed25519_key
usr/local/etc/ssh/ssh_host_ed25519_key.pub
usr/local/etc/ssh/ssh_host_rsa_key
usr/local/etc/ssh/ssh_host_rsa_key.pub
usr/local/etc/
opt/bootlocal.sh
opt/eth0.sh

いきなり追記。
上の内容を眺めていて、今更一番上に「opt」とあるのに気付く。
これって、/optディレクトリの内容は保存されるってことじゃないだろうか。
試しに、
opt/bootlocal.sh
opt/eth0.sh
の2行を削除して動かしてみる。、、問題ないみたいだ。
.filetool.lstに追記しなくても、bootlocal.shもeth0.shもfiletool.sh -bで保存される。

ということで訂正。
usr/local/etc/のみ追記でいいようだ。
/usr/local/etc/にはalsaのファイルもあるようなので、追記しておいた方がいいんじゃないかな。たぶん、、、

忘れないように「filetool.sh -b」を打って、設定が失われないようにする。

tc@box:/opt$ filetool.sh -b
Backing up files to /mnt/mmcblk0p2/tce/mydata.tgz\
Done.
tc@box:/opt$ sudo reboot

これで再起動したら、指定したipアドレスに固定される。
当然、sshでのログインも新たに固定されたアドレスで行うことになる。
再起動の前に、filetool.sh -bを打ち忘れたら、また最初からやり直しになるので注意。

bootlocal.shを設定。

tc@box:/opt$ vi bootlocal.sh

再起動、ログインして作業を継続。
bootlocal.shは、起動時に実行するコマンドを記載するファイル。
うちでは、下記のようなコマンドを追加で書き込んでいる。mpdの動作環境設定に関係してくる指示で、人によっては要らなかったり、もっと他の内容が望ましい場合もあるだろう。個々の環境や状況に合わせて設定することになる。

mkdir /mnt/music
mkdir /mnt/music/nas
mkdir /mnt/music/ram
touch /mnt/music/ram/dummy.cue
chmod -R 777 /mnt/music

# mount -o addr=192.168.1.80,nolock -t nfs 192.168.1.80:/titan /mnt/music/nas

僕の場合、/home以下にNASのマウントポイントを作る気になれなかったので(間違ってfiletool.sh -bを打ったら、NASのデータをmicroSDに保存するようなことになりかねないので困ると思った)、/mnt以下に起動のたびに作ることにしたということ。
一番下の行のコマンドでNASをマウントさせるようにしている(/etc/fstabに記載するよりも簡単)。
敢えてコメントにしているのは、各種設定の途中ではマウントする必要がないから。一通り作業が終わってmpdの環境が完成したら、コメントアウトしてを外して、filetool.sh -bで保存し、再起動したらNASがマウントされているという塩梅。

各種ライブラリをインストール。

mpdをインストールしたり動かすためのライブラリなどをインストールする。
以下、コマンドのみを羅列。

tce-load -wi gcc.tcz glib2-dev.tcz ncurses-dev.tcz make.tcz automake.tcz compile-essentials.tcz squashfs-tools.tcz bash.tcz bc.tcz pkg-config-doc.tcz pkg-config.tcz
tce-load -wi python-dev.tcz python-doc.tcz python.tcz boost-dev.tcz boost.tcz doxygen-doc.tcz doxygen.tcz
tce-load -wi alsa.tcz alsa-config.tcz alsa-doc.tcz alsa-dev.tcz alsaequal.tcz alsa-locale.tcz

tce-load -wiというコマンドは、TCZライブラリから指定したソフトをダウンロード、インストールしてくれる。
上記のコマンドでmpdなどのインストールに必要な環境と、alsaをインストールした、つもり(本当は、不要なものが混じってるかもしれない)。

この時点でalsaの状況を確認したら下記のような感じ。
接続しているi2sDACの設定ができている。

tc@box:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
tc@box:~$ 

tc@box:~$ ls /opt
alsa/         bootlocal.sh  bootsync.sh   eth0.sh       shutdown.sh   tcemirror

こんな感じで、/optにalsaのディレクトリができている。
つまり、この時点でfiletool.sh -bを打たずにシャットダウンしたら、このディレクトリが消えることになるのかな。詳細は調べてないから正確なことは言えないけど、いろいろとインストールしていく合間に適宜保存のコマンドを打つ必要はありそう。

続いてflacなどの再生デコーダー関係をインストール。コマンドのみ羅列。

tce-load -wi libsamplerate-dev.tcz libsamplerate-doc.tcz libsamplerate.tcz
tce-load -wi flac-dev.tcz flac.tcz flac-doc.tcz libcue.tcz libcue-dev.tcz icu-dev.tcz icu.tcz
tce-load -wi libmad.tcz mpg123.tcz lame-dev.tcz lame-doc.tcz lame.tcz faad2-dev.tcz faad2-doc.tcz faad2.tcz
tce-load -wi libmpdclient-dev.tcz libmpdclient-doc.tcz libmpdclient.tcz
tc@box:~$ filetool.sh -b
Backing up files to /mnt/mmcblk0p2/tce/mydata.tgz\
Done.
tc@box:~$ 

忘れず、保存、、、

mpdをインストール。

今回、以下の2通りのやりかたをまとめておく。

  • (1)tce-load -wiコマンドでmpdをインストール。
  • (2)ソースからコンパイルしmpdをインストール。
(1)tce-load -wiコマンドでmpdをインストール。
tc@box:~$ tce-load -wi mpd-doc.tcz mpd.tcz

上記コマンド一つでmpdのインストールが始まる。
しかし同時にインストールされるものが次々に出て来て、そんなに要るの?と思うほどだ。 インストール終了後は下記のような感じ。

tc@box:~$ mpd -V
Music Player Daemon 0.19.9

Copyright (C) 2003-2007 Warren Dukes 
Copyright (C) 2008-2014 Max Kellermann 
This is free software; see the source for copying conditions.  There is NO
warranty; not even MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Database plugins:
 simple proxy

Storage plugins:
 local smbclient

Neighbor plugins:
 smbclient

Decoders plugins:
 [mad] mp3 mp2
 [mpg123] mp3
 [vorbis] ogg oga
 [oggflac] ogg oga
 [flac] flac
 [opus] opus ogg oga
 [sndfile] wav aiff aif au snd paf iff svx sf voc w64 pvf xi htk caf sd2
 [dsdiff] dff
 [dsf] dsf
 [faad] aac
 [ffmpeg] 16sv 3g2 3gp 4xm 8svx aa3 aac ac3 afc aif aifc aiff al alaw amr anim
 apc ape asf atrac au aud avi avm2 avs bap bfi c93 cak cin cmv cpk daud dct divx
 dts dv dvd dxa eac3 film flac flc fli fll flx flv g726 gsm gxf iss m1v m2v m2t m2ts
 m4a m4b m4v mad mj2 mjpeg mjpg mka mkv mlp mm mmf mov mp+ mp1 mp2 mp3 mp4 mpc mpeg mpg
 mpga mpp mpu mve mvi mxf nc nsv nut nuv oga ogm ogv ogx oma ogg omg opus psp pva qcp qt
 r3d ra ram rl2 rm rmvb roq rpl rvc shn smk snd sol son spx str swf tgi tgq tgv thp
 ts tsp tta xa xvid uv uv2 vb vid vob voc vp6 vmd wav webm wma wmv wsaud wsvga wv wve
 [pcm]

Output plugins:
 null fifo alsa ao oss pulse jack httpd recorder

Encoder plugins:
 null vorbis opus lame twolame wave flac

Archive plugins:
 [bz2] bz2

Input plugins:
 file alsa archive curl ffmpeg smbclient

Playlist plugins:
 extm3u m3u pls xspf asx rss cue embcue

Protocols:
 file:// http:// https:// gopher:// rtp:// rtsp:// rtmp:// rtmpt:// rtmps:// smb:// alsa://
tc@box:~$ 

ffmpegとかdsd関連もインストールされている。

mpdの設定を行っていく。mpd.confファイルはどこにあるんだろう。
デフォルトは~/.mpdconf、~/.mpd/mpd.conf、/etc/mpd.confなので、そこにないかと探しても見つからない。

findコマンドで探したら、下記にmpdconf.exampleがみつかった。
/usr/local/share/doc/mpd/mpdconf.example
/tmp/tcloop/mpd-doc/usr/local/share/doc/mpd/mpdconf.example
これらをコピーして使うよりか、viで設定ファイルを作って、どこかから設定をコピペしたほうが簡単だと思う。
記載例は後述。

(2)ソースからコンパイルしmpdをインストール。
tc@box:~$ wget https://www.musicpd.org/download/mpd/0.19/mpd-0.19.9.tar.xz
tc@box:~$ xz -dv mpd-0.19*
tc@box:~$ tar -xf mpd-0.19*
tc@box:~$ cd mpd-0.19*
tc@box:~/mpd-0.19.9$
tc@box:~/mpd-0.19.9$ ./configure

########### MPD CONFIGURATION ############

Archive support:
	(+bzip2) (-ISO9660) (-ZIP) 
Client support:
	(+IPv6) (+TCP) (+UNIX Domain Sockets) 
Storage support:
	(-NFS) (-SMB) 
File format support:
	(+AAC) (-AdPlug) (+DSD) (-C64 SID) (-FFMPEG) (+FLAC) (-FluidSynth) (-GME) 
	(+libsndfile) (-MikMod) (-MODPLUG) (+MAD) (-MPG123) (-Musepack) 
	(-Opus) (-OggTremor) (+OggVorbis) (-WAVE) (-WavPack) (-WildMidi) 
Other features:
	(+libsamplerate) (-libsoxr) (+libmpdclient) (+inotify) (+SQLite) 
Metadata support:
	(-ID3) 
Playback support:
	(+ALSA) (+FIFO) (+File Recorder) (+HTTP Daemon) (-JACK) 
	(-libao) (+OSS) (-OpenAL) (-OS X) (-Pipeline) 
	(-PulseAudio) (-ROAR) (-SHOUTcast) (-Solaris) (-WinMM) 
Streaming encoder support:
	(+FLAC) (+LAME) (-Shine) (+Ogg Vorbis) (-Opus) (-TwoLAME) (+WAVE) 
Streaming support:
	(-CDIO_PARANOIA) (-CURL) (-SMBCLIENT) (-Soundcloud) 
	(-MMS) 
Event loop:
	epoll

##########################################

Generating files needed for compilation
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating doc/doxygen.conf
config.status: creating systemd/mpd.service
config.status: creating config.h
config.status: executing depfiles commands
MPD is ready for compilation, type "make" to begin.
tc@box:~/mpd-0.19.9$ 

今回、ダウンロードしたmpdは0.19.9。これはTCZで用意されているmpdに合わせた。
ソースからコンパイルするメリットは、システムを小さくできることだ。
1分かそこらでconfigure終了。うまく行ったかに見えた。

tc@box:~/mpd-0.19.9$ make -j4
(ひたすら文字が並ぶ)
src/decoder/plugins/MadDecoderPlugin.cxx:37:17: fatal error: mad.h: No such file or directory
compilation terminated.
Makefile:7346: recipe for target 'src/decoder/plugins/libdecoder_a-MadDecoderPlugin.o' failed

上記のように、エラーでmake終了。configureが通ったのにmakeで止まるという経験は初めてだ。
libmadをアンインストールしないといけないらしい。

tc@box:~/mpd-0.19.9$ cd /mnt/*2/tce
tc@box:/mnt/mmcblk0p2/tce$ ls
mydata.tgz  onboot.lst  ondemand/   optional/
tc@box:/mnt/mmcblk0p2/tce$ vi onboot.lst

tc@box:~$ sudo reboot

tc@box:~$ cd /mnt/*2/tce
tc@box:/mnt/mmcblk0p2/tce$ rm optional/libmad.tcz*
rm: remove 'optional/libmad.tcz'? y
rm: remove 'optional/libmad.tcz.md5.txt'? y

tc@box:/mnt/mmcblk0p2/tce$ sudo reboot

/mnt/mmcblk0p2/tce/onboot.lstの記載から、libmad.tczの1行を削除し保存(ここはfiletool.sh -bを使わなくてもいい)、reboot。
さらに、/mnt/mmcblk0p2/tce/optionalから、libmad.tcz関連を削除して、reboot。
これでアンインストールできる。

アンインストールしてconfigureしてmakeしたら、エラーなく終了。

tc@box:~/mpd-0.19.9$ make -j4
(ひたすら文字が並び10分で完了)

tc@box:~/mpd-0.19.9$ mkdir ../mpd
tc@box:~/mpd-0.19.9$ sudo make DESTDIR=../mpd install

tc@box:~/mpd-0.19.9$ cd
tc@box:~$ mksquashfs mpd mpd-0.19.9.tcz
tc@box:~$ md5sum mpd-0.19.9.tcz > mpd-0.19.9.tcz.md5.txt
tc@box:~$ ls
mpd/                    mpd-0.19.9.tar          mpd-0.19.9.tcz.md5.txt
mpd-0.19.9/             mpd-0.19.9.tcz
tc@box:~$ sudo mv *tcz* /mnt/*2/tce/optional
tc@box:~$ ls
mpd/            mpd-0.19.9/     mpd-0.19.9.tar
tc@box:~$
tc@box:~$ sudo vi /mnt/*2/tce/onboot.lst

tiny core linux系では、ひとまとめにインストールしてtczファイルを作って管理する。
今回の場合、コンパイルしたデータからtczファイルとtcz.md5.txtファイルを作る。
これらのファイルを/mnt/mmcblk0p2/tce/optionalディレクトリに移動させて、onboot.lstの末尾に、mpd-0.19.9.tczと記載を追記する。

これでインストール終了。
しかしlibmadをアンインストールしたので、mp3は聞けない。

ところで、GCCの最適化をしてコンパイルしmpdをインストールする方法がある。
最適化について参考にさせていただいたサイトは下記のとおり。

みみず工房
http://mimizukobo.sakura.ne.jp/index.html
2017/10/21(PC_Audio) gccの最適化オプション

new_western_elec
http://nw-electric.way-nifty.com/blog/2016/08/mpdpi-2-pi-3-5a.html
MPDをソースコードからコンパイルしてPi 2 Pi 3に最適化する方法

僕には最適化について知識はないので、上記サイトでPi2とPi3用に紹介されているコマンドを打った。

./configure CFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 \
-mfpu=neon-vfpv4 -mfloat-abi=hard" \
CXXFLAGS="-O2 -march=armv7-a -mtune=cortex-a7 \
-mfpu=neon-vfpv4 -mfloat-abi=hard" \
--with-systemdsystemunitdir=/lib/systemd/system

これも一見、問題なくconfigure終了したかに見えたけど、やはりmakeの段階でエラーになった。
libmadをアンインストールして再度configureしたら、make、installできた。
本当はalsaなどのインストールもソースから最適化してコンパイルを試みるべきだったかもしれないけど見送った。ちょっとそこまで試行錯誤する余裕がなくて、、、

mpdの設定を行っていく。mpd.confファイルが必要だ。

tc@box:~$ ls
mpd/            mpd-0.19.9/     mpd-0.19.9.tar
tc@box:~$ ls m*9/doc
developer.xml    doxygen.conf.in  mpd.conf.5       protocol.xml
doxygen.conf     mpd.1            mpdconf.example  user.xml

tc@box:~$ cp m*9/doc/mpdconf.example .mpdconf

ダウンロード、解凍したファイルの中にmpdconf.exampleがある。
それを、/home/tcディレクトリにコピーして.mpdconfを作り編集。ここに置くのが一番簡単かな。
しかし素のmpdconf.exampleを編集するより、viで作って既存のmpdサーバーから設定をコピペして編集したほうがいろいろ早いだろうと思う。

この時点で、インストールの作業場として使ったmpdディレクトリや落として解凍したファイルなどが残っている。
これらは、もう要らないので削除していい。
残していたら、filetool.sh -bに際して無駄に時間がかかる。
mpd.confのdb_fileの設定場所によっては、保存するのにfiletool.sh -bを使うことになるので、削除しておいたほうが快適になる。

tc@box:~$ ls
mpd/            mpd-0.19.9/     mpd-0.19.9.tar
tc@box:~$ sudo rm -rf mpd*

.mpdconfの編集例。

tc@box:~$ vi .mpdconf

music_directory                "/mnt/music"
playlist_directory             "~/.mpd/playlists"
db_file                        "~/.mpd/database"
log_file                       "~/.mpd/log"
pid_file                       "~/.mpd/pid"
state_file                     "~/.mpd/state"
sticker_file                   "~/.mpd/sticker.sql"

auto_update     "no"
#auto_update_depth "3"

audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:0,0"        # optional
        mixer_type      "software"      # optional
##      mixer_device    "default"       # optional
##      mixer_control   "PCM"           # optional
##      mixer_index     "0"             # optional
}

samplerate_converter            "Fastest Sinc Interpolator"
audio_buffer_size               "8192"
buffer_before_play              "20%"
audio_output_format             "192000:24:2"

filesystem_charset              "UTF-8"
id3v1_encoding                  "ISO-8859-1"

上記は一部で一例。各自で自分の環境やニーズに合わせて編集する必要がある。

tc@box:~$ mkdir .mpd
tc@box:~$ mkdir .mpd/playlists

.mpdconfのplaylist_directoryなどの設定に合わせて、.mpdディレクトリなどコマンドで作成。

mpdを起動しmpd clientでアクセスする。

sshからmpdコマンドで起動。最初の起動に際してはライブラリファイルがないと警告がでるけど無視していい。
好みのmpd clientでアクセスして、コントロール。

ざっとこんなところ。 mpdのインストール方法によって音の違いを比較しようかとも思ってたんだけど、そのうち、余裕があるときに。

Posted at 07:14 in audio_diary | WriteBacks (0) | Edit Tagged as: ,
WriteBacks
TrackBack ping me at
http://blown-lei.net/endive/blosxom.cgi/audio_diary/20180103a.trackback
Post a comment

writeback message:
Caution!!!
Now, Anyone cannot post a comment.















Search


Advanced Search

Recent entries from same category
  1. 上流サーバーの電源環境にAV-P25を導入してみた
  2. PPAPで44.1kHzを再見する
  3. オーディオ状況報告(2025.04.20.)
  4. LAN ネットワークを見直してみた 7-2(GS105EによるVLANの挙動について - 13日、追記)
  5. LAN ネットワークを見直してみた 7(GS105EでポートベースVLANを使ってみる)
  6. MQAメモ
  7. LAN ネットワークを見直してみた 6(ハブについて現時点でのまとめ + NASの移動)
  8. LAN ネットワークを見直してみる 5(Walter Tilgner / Whispering Forest を巡る顛末)
  9. LAN ネットワークを見直してみる 4 (18日、19日に追記)
  10. LAN ネットワークを見直してみる 3
  11. LAN ネットワークを見直してみる 2
  12. オーディオ状況報告(2025.01.03.)
  13. テストシステムのPPAPで、44.1kHzを鳴らしてみる
  14. RoonとQobuzをやめた、他いくつか
  15. 書くことが無いので、libsamplerate (SRC) によるアップサンプリングの設定変更で音質が変わるかどうかを確認した
  16. オーディオ状況報告(2024.07.15.)
  17. 新しいLMSとDaphileとDeezerプラグインについてメモ
  18. 古いRaspberry PiをRoon、Mpd、UPnPとかで使おうとしたら
  19. Raspberry Pi 3B+をRoon Bridgeにする
  20. Logitech Media ServerのUPnP pluginとmpdの設定を見直した
  21. Mac mini (2010 mid)でFedoraが動くようになったので
  22. Logitech Media Serverを整理する
  23. Logitech Media ServerをMac miniにインストールして新しいDeezerプラグインを試みる
  24. DaphileでDeezerの再生ができなくなるので(3月25日、追記)
  25. オーディオ状況報告(2024.01.21.)31日追記:Deezerが使えなくなる
  26. ストレージ
  27. mpdサーバーに銅メッシュを仕込んでみる(17日、追記)
  28. アップサンプリングの設定を変えてmpdサーバーの負荷を減らしてみる
  29. Daphileサーバーに銅メッシュを組み込んでみる
  30. NASが壊れた
  31. 銅素材でPCトランスポート筐体内のノイズ対策を試みる(10月7日、追記)
  32. I try Roon on Linux
  33. オーディオ状況報告(2023.08.03.)
  34. LAN ネットワークを見直してみる
  35. オーディオ状況報告(2023.06.28.)
  36. HP Probook 450 G9, mpd, libsamplerateで高品質アップサンプリングを試みる(6月1日、4日、追記)
  37. 最新ノートPCで起動できるTiny Core 64 mpdサーバーを過去の資産の切り貼りで作る
  38. 最新のノートPCを最新のTiny Core 64で起動する
  39. リッピング(17日、追記)
  40. なぜpiCorePlayerとM500でMQAを再生すると、音が途切れることがあるのだろう
  41. Deezer hifiのMQAをDaphile、piCorePlayerで再生する(追記:WiFiでつなぐことにした)
  42. resampler {type "Best Sinc Interpolator"} 192kHzってどうなんだろう
  43. resampler {type "Best Sinc Interpolator"} を試してみるべきかも・・・(7日、追記あり)
  44. earfluff and eyecandy によるJitterの解説 その1
  45. earfluff and eyecandy によるJitterの解説 その2
  46. earfluff and eyecandy によるJitterの解説 その3
  47. TAS Super LP List と TAS Super Download List
  48. Ras Pi B+とpiCore13.1でPPAP Back Endを作ってみたけど
  49. オーディオ状況報告(2022.05.28.)
  50. Behringer MONITOR1の性能を確認する(5月24日、追記)
  51. いわゆる直結を試みる
  52. DVDドライブで聴くCDの音が良いような
  53. DaphileでMQAデータをpiCorePlayerに転送再生する
  54. Daphile 設定関係の覚え書き
  55. オーディオ状況報告(2022.01.20.)
  56. カーステレオにRas Pi2+piCore7+MPD+i2s DAC (追記 10月31日、11月03日)
  57. オーディオ状況報告(2021.09.05.)
  58. PPAP Back-Endをタンデム化
  59. ネットワーク上のサーバー運用を再考する
  60. pulseaudioでMQAデータを転送再生する
  61. DAC/アンプの切り替えケーブルによる音質変化ついて
  62. オーディオ状況報告(2021.06.14. 06.18. 追記あり)
  63. DAC/アンプの切り替え盤を設えてみた
  64. Musician Pegasus R2R DACを入手した(12.01. 12.07. 追記)
  65. mpdでCD再生に対応する(2022.03.29./.08.16./2025.04.08. 追記)
  66. オーディオ状況報告(2021.05.02.)
  67. アップしたイメージのPPAPへの転用についてPhile Webに記載した(2022.06.21. 追記:Phile Webサービス終了にて記載内容を転載した)
  68. イメージファイルをアップするにあたって、うちのセットからの変更点
  69. UPnPレンダラー兼アップサンプリングサーバーのディスクイメージをアップした
  70. DaphileにNASをマウントしてみる(cue sheetが使える!)
  71. オーディオ状況報告(2021.04.04. もうちょっと整理したい)
  72. DaphileとTiny CoreでDeezer hifiを768kHzにアップサンプリングする(ついでにPPAPで飛ばす - たびたび追記あり)
  73. DaphileとVolumio 1.55でDeezer hifiをアップサンプリングする
  74. DaphileとpiCorePlayerでDeezer hifiを聴いてみる
  75. PulseaudioによるLan経由音声データ転送のデータ量が大きすぎる(未解決案件)
  76. Deezer Web Player使用をサポートするデータベースを運用してみる
  77. ソフトを起動する順番を変えてみる ~ pulseaudioによる音声データ転送 使い方まとめ(2021.01.31. 06.26. 追記)
  78. pulseaudio クライアントのFirefoxを強化する
  79. オーディオ状況報告(2020.11.22.)
  80. pulseaudioサーバーを強化する(その2:12月11日、追記あり)
  81. pulseaudioサーバーを強化する(10月24、25日、11月01、05、10日、追記あり)
  82. ストリーミング音源をpulseaudioで転送しアップサンプリング再生する(10月15日、追記)
  83. 音楽ストリーミングサービス覚書
  84. Pulseaudioの備忘録
  85. 音楽ストリーミングサービスのウェブプレーヤーを使う
  86. Pulseaudioを使ってRaspberry piにAmazon Prime Musicを転送再生する(9月8日追記)
  87. 引き続き、hwとplughwについて
  88. PPAP back-Endの設定を考え直す(hwとplughw)(8月20日追記)
  89. オーディオ状況報告(2020.08.07.)
  90. バランス接続に業務用アッテネーターを試す
  91. Brooklyn AmpでSM-SX100の代替を試みる(07.14. 2022.02.24. 追記)
  92. 手持ちのアンプでSM-SX100の代替を試みる
  93. SMSL M500でMQAを聴いてみた(10.26. 追記あり)
  94. ジッター再々考
  95. サンプリングパラメータによるジッターの影響の差異について
  96. 今更だがpiCore7を復帰させる
  97. 700kHz台でPPAP 複数のFrontを使い分ける(2020.05.01、2023.06.22 追記)
  98. 700kHz台でPPAP(22日、4月7日追記)
  99. オーディオ状況報告(2020.03.08.)
  100. コンデンサーと抵抗と銅板による仮想アース(1月23日、26日、2月10日、16日、22日、27日、3月1日、8日追記)
  101. GNDについての考察してもわけがわからない
  102. コンデンサーと抵抗による仮想アースと銅板(追記あり)
  103. Lascia la spina (2021.04、2022.11 追記あり)
  104. コンデンサーと抵抗による仮想アース
  105. apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その4:動作確認)
  106. apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その3:0.21 インストール)
  107. apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その2:0.20 インストール)
  108. apu2で、Tiny CorePure64-10.1にmpd(0.20、0.21)をインストールする(その1:準備)
  109. LANに機械をつなぐということについて
  110. apu2d4でTiny CorePure64 10.1を動かす
  111. だんだん秋になってくる
  112. ケーブルインシュレーターをコンセントに使う
  113. 久しぶりにインシュレーターを追加する
  114. オーディオ状況報告(2019.05.03.)
  115. 歌声の録音について自分なりに考えた
  116. アップサンプリングについて色々
  117. オーディオ状況報告(2018.12.30.)
  118. Compaq 6730bとTiny coreでアップサンプリング (768kHzアップサンプリングの音について)
  119. apu2c4で768kHzへのアップサンプリングに取り組む
  120. ADI-2 DACとpiCoreで、384kHz以上を鳴らしてみる
  121. raspberry piをncmpcppサーバーに仕立ててみた
  122. RME ADI-2 DACを導入した
  123. fireface UCXの電源をiPowerに替えてみた
  124. USB電源用のDCノイズフィルターを作ってみた
  125. ようやくNASを追加した
  126. piCoreのonboot.lstを編集してタスク軽減を目指す
  127. PPAP (piped pcm audio play) 関連サイトアドレス集
  128. piCore7で作るPPAP Front
  129. piCore7で作るPPAP Back-End (2020.08.16.追記)
  130. PPAP Back-EndのUSB出力が48kHzになっていたので修正した(2020.08.16.追記)
  131. RAMメモリ再生とppap(piped PCM audio play)を比較した
  132. オーディオ状況報告(2018.04.12.)
  133. 今一度、44.1/16を聴き比べる
  134. MPDのアップサンプリングによる音への影響を確認してみる(SoXとLibsamplerateを比較する)
  135. piCore7でppap (piped pcm audio play)を試みる(05.22、2020.08.16、追記)
  136. ppap (piped pcm audio play)を試みるが、一筋縄に行かない、、、
  137. オーディオ状況報告(2017.12.24.)
  138. 赤い鳥の音源について思ったこと
  139. fireface UCXについて再び(不覚だった、、、)
  140. オーディオ状況報告とか、いろいろ(2017.10.22. USB029H2RP導入など)
  141. ノイズ対策をあれこれやると音がずいぶん変わってしまった(11月21日USBターミネーターについて追記)
  142. fireface UCXについて(2017.09.05.追記あり)
  143. オーディオ状況報告(2017.07.05.)
  144. ハイレゾとアップサンプリング、384kHz周辺をいろいろと聴いてみた(7月2日、追記)
  145. Moode Audio3.1 384kHz/24bit i2sDACで、メモリ再生を試みる
  146. Moode Audio3.1にlibsamplerateをインストールして384kHzでi2s出力する
  147. オーディオ趣味の課題 備忘録
  148. Fishmans がリマスターで再発されたので1stアルバムを聴いてみた(2017.09.05.追記あり)
  149. mpdからmpdにflacをHTTPストリーミング機能で配信する
  150. mpdのHTTPストリーミング機能でflacを配信してみる(24日追記)
  151. MinimServerをRaspberry Pi B+で動かしてみた(24日追記)
  152. Volumioにマウントした時に機能するシンボリックリンクを作りたい
  153. VolumioをUPnP/DLNAで繋いでみた(1月4日、追記あり)
  154. UPnP/DLNAは難しかった(volumioをupnpで繋いだので追記した)
  155. オーディオ状況報告(2016.11.24.)
  156. JPLAYの音を聴いてみるなど
  157. Raspberry Piとi2sボードでのアップコンバートについて雑感
  158. mpd + SoXによるアップコンバートについて (Ras pi2用のpiCore7にはmpdのインストールが簡単にできる - 追記あり)
  159. mpd + libsamplerateによるアップコンバートについて(2021.04. 追記あり)
  160. ハイレゾを作って再生してみる、など (追記:アップコンバートすることにした)
  161. オーディオ状況報告(2016.06.14.)
  162. Raspberry Pi でメモリ再生を試みる2(raspbianにmpdをインストールする)
  163. Raspberry Pi でメモリ再生を試みる(piCore7にmpdをインストールする)-いろいろ追記あり
  164. NASの中のcue sheetの中を検索する
  165. Volumioのカーネルをバージョンアップしてみる(追記あり、さらに追記あり)
  166. Volumio 1.55 をいじってみる
  167. Raspberry pi B+ / Volumio 1.55 の運用状況
  168. VolumioのSDカード領域を拡張したのでメモ 追記:USBポートの電流出力上限を変更した
  169. 転居後の状況
  170. 引っ越した
  171. I2S DACとRaspberry Pi B+を導入 - Volumioでcue sheetを使う方法
  172. オーディオ状況報告(2014.10.01.)
  173. 加入者網終端装置(CTU)の設定でネットワークを分割する
  174. audio_output_formatについて(Vine Mpd ppcについて覚書-13)
  175. NASの入れ替え
  176. EACの覚書(2019年追記)
  177. Vine Mpd ppcについて覚書(12)デーモンの刈り込み
  178. Vine Mpd ppcについて覚書(11)mpd.conf : audio_buffer_sizeとbuffer_before_play
  179. Vine Mpd ppcについて覚書(10)NASのマウントについて
  180. オーディオ状況報告
  181. Vine Mpd ppcについて覚書(9)twmについて(2014.03.14.追記)
  182. Vine Mpd ppcについて覚書(8)サンプリング周波数とビットレートの変更+追記:mpd.confの設定
  183. Vine Mpd ppcについて覚書(7)というよりEACの設定について
  184. Vine Mpd ppcについて覚書(6)不良cue sheetによる再生の不具合
  185. Vine Mpd ppcについて覚書(5)alsa関連で要らないものを入れすぎていた
  186. Vine Mpd ppcについて覚書(4)ncmpcppのインストール
  187. Vine Mpd ppcについて覚書(3)ncmpcppの設定
  188. Vine Mpd ppcについて覚書(2)mpdのインストール
  189. Vine Mpd ppcについて覚書(1)前書き・OS選択
  190.  オーディオ状況報告
  191. 4年前との違い
  192. ファイルオーディオ現状
  193. ザ・ビートルズBOX USBをEMI Japanから買った
  194. abk1
  195. Magic Dreamの使いこなし顛末
  196. Magic Dreamと黒檀コロの比較
  197. Magic Dream、ようやく使ってみた
  198. Magic Dream、とりあえず使ってみた/ゴムシートの効果
  199. Magic Dream
  200. Audio Diary

June
Sun Mon Tue Wed Thu Fri Sat
12
         

abk1's scratched blog 3::AUDIO DIARY

Categories
Archives

ABK1s HOMEPAGE::audio diary ~2006

Search


Syndicate AUDIO DIARY (XML)
Syndicate this site (XML)

Powered by
blosxom 2.0
and
modified by
blosxom starter kit