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 OS | http://tinycorelinux.net/7.x/armv6/releases/RPi/ |
TCZ | http://tinycorelinux.net/7.x/armv6/tcz/ | |
raspberry pi 2/3 | piCore OS | http://tinycorelinux.net/7.x/armv7/releases/RPi2/ |
TCZ | http://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+ Light dtoverlay=hifiberry-dac DAC+ standard/pro dtoverlay=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 DukesCopyright (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のインストール方法によって音の違いを比較しようかとも思ってたんだけど、そのうち、余裕があるときに。
wikieditish message: Ready to edit this entry.
A quick preview will be rendered here when you click "Preview" button.