メモリ再生(9)~64bit版 Tiny Coreを使ってみる。~その2(MPDをコンパイルして組み込む)

MPDをコンパイルする

ここからは、64bitOSが起動するPCが必要になります。少なくとも、SSHのインストールとヘッドレス化をしておかないと「APU」に差しこんでも使えませんからこれは必須です。
起動すれば、64bit版のカーネルになっているか確認します。

tc@box:~$ uname -a
Linux box 4.2.9-tinycore64 #1999 SMP Mon Jan 18 19:59:34 UTC 2016 x86_64 GNU/Linux

「4.2.9-tinycore64」となっていれば大丈夫なようです。
ここから、先ほど同じようにSSHをまずは組み込んで作業をしやすくします。手順は前回と同じですが、64bit版の場合は落としてくるレポジトリが違うようで「sshd_config」が存在しません。

ですから、起動させる前に「sshd_config.orig」から「sshd_config」を作成しておく必要があります。「tc」にパスワードを設定するのもお忘れなく!!

tc@box:~$ sudo cp /usr/local/etc/ssh/sshd_config.orig /usr/local/etc/ssh/sshd_config
tc@box:~$ sudo /usr/local/etc/init.d/nfs-client start

SSHで接続できれば、通常のやり方でヘッドレス化をおこない、さらには「/opt/bootlocal.sh」と「/opt/.filetool.lst」で必要となる編集も事前に全てっておきます。

ヘッドレス化

tc@box:~$ sudo vi /etc/securetty
ttyS0

tc@box:~$ sudo vi /sbin/autologin
exec /sbin/getty 115200 ttyS0

tc@box:~$ sudo vi /etc/inittab
ttyS0::respawn:/sbin/getty -nl /sbin/autologin 115200 ttyS0

bootlocal.shへの追記

tc@box:~$ vi /opt/bootlocal.sh
/usr/local/etc/init.d/openssh start
pkill udhcpc
ifconfig eth0 192.168.0.25 netmask 255.255.255.0 broadcast 192.168.0.255 up //自分の環境に合わせる
route add default gw 192.168.0.1 //自分の環境に合わせる
echo nameserver 192.168.0.1 > /etc/resolv.conf

/usr/local/etc/init.d/nfs-client start
mkdir /music
mkdir /media
chown tc:staff /media
mount -t nfs -o rsize=8192,wsize=4096 192.168.0.100:/NAS /classic /music //自分の環境に合わせる

sleep 1
sudo mpd /home/tc/mpd.conf

.filetool.lstへの追記

tc@box:~$ vi /opt/.filetool.lst
opt
home
etc/shadow
etc/passwd
usr/local/etc/ssh/sshd_config
usr/local/etc/
etc/fstab
etc/securetty
etc/inittab
sbin/autologin
/opt/bootlocal.sh

ここで「filetool.sh -b」をお忘れなく!!

tc@box:~$ filetool.sh -b

必要なライブラリ群を一気にインストールする。

始めに断っておく必要があるのは、ここで作ろうとしているのは「開発用の環境」も含んだ「USBメモリ」です。
ですから、ここでインストールしようとしているのは「コンパイルに必要なライブラリ」「ALSAに必要なライブラリ」「MPDに必要なライブラリ」の3種類です。当然の事ながら、音楽を聴くだけならば、最初の「コンパイルに必要なライブラリ」群は不要です。

しかし、これがないと、今後新しいヴァージョンの「MPD」が登場したときにはすぐに対応できなくなりますので、理想とすれば「コンパイルに必要なライブラリ」群を含んだ「開発用のUSBメモリ」と、それらは含まない純粋に音楽を楽しむための「USBメモリ」の2種類を作成したいものです。実際、「コンパイルに必要なライブラリ」群を含んだ「USBメモリ」は起動時にそれらを全て読み込むので立ち上がりがかなりとろくなります。音質面でもプラスになることは全くありませんので、音楽を聴くときは音楽専用に特化した「USBメモリ」を作成した方がいいと思います。

ということで、ここから述べるのは「開発用の環境」も含んだ「USBメモリ」の作成です。
また、ここから述べることの大部分はピーマンさんの情報によるものです。あらためて感謝申し上げます。
さらに、ピーマンさんは「SOX」が使えるようにするためのライブラリも配布してくれています。

あらためて言うまでもないことですが、「mpd-minimal」ではアップサンプリングは「LIBSAMPLERATE」しか使えません。「LIBSAMPLERATE」の音も素晴らしくて好きだという人も多いのですが、CPUへの負荷が大きくて「APU」を持ってしてもアップサンプリングは2倍が限界です。
しかし、「SOX」ならば余裕で4倍までアップサンプリングが可能となります。
「lightmpd」は標準で「SOX」が組み込まれていて、余裕で4倍までアップサンプリングできていたので、この点でもやっと肩を並べることができました。

では、一気にライブラリ群をインストールします。

tc@box:~$ tce-load -wi nfs-utils.tcz ncurses.tcz make.tcz gcc.tcz compiletc.tcz squashfs-tools.tcz perl5.tcz ncurses-dev.tcz bash.tcz automake.tcz bc.tcz glib2-dev.tcz alsa-dev.tcz boost-dev.tcz icu-dev.tcz libsamplerate-dev.tcz tcp_wrappers-dev.tcz alsa-config.tcz alsa-plugins-dev.tcz libsamplerate-dev.tcz lame-dev.tcz libmad-dev.tcz flac-dev.tcz curl-dev.tcz

おそらく、「ncurses.tcz make.tcz gcc.tcz compiletc.tcz squashfs-tools.tcz perl5.tcz ncurses-dev.tcz bash.tcz automake.tcz bc.tcz glib2-dev.tcz」の部分が開発環境だと思われます。
編集に「vi」を使いたくないと言う人は「nano.tcz」も組み込んでおいた方がいいかもしれません。

結構時間がかかりますが、待つしかありません(^^;

いよいよMPDをコンパイルする

まずは最新版の「mpd-0.19.15.tar.xz」を落としてきます。

tc@box:~$ wget https://www.musicpd.org/download/mpd/0.19/mpd-0.19.15.tar.xz
tc@box:~$ tar -Jxvf mpd-0.19.15.tar.xz
tc@box:~$ cd mpd-0.19.15

ここで普通にコンパイルするとエラーがでるという情報もあるのですが、私の場合は大丈夫でした。

tc@box:~$ ./configure –disable-bzip2 –disable-iso9660 –disable-zzip –enable-alsa –disable-wave-encoder –disable-recorder-output –disable-oss –disable-pulse –disable-mpc –disable-ao –disable-inotify –disable-ipv6 –disable-mms –disable-jack –disable-zlib –disable-vorbis-encoder –enable-rtopt –disable-mpg123 –disable-id3 –disable-aac –disable-twolame-encoder –disable-cdio-paranoia –enable-soxr –disable-lame-encoder -enable-aac -disable-vorbis CFLAGS=”-mtune=generic -Os -pipe” CXXFLAGS=”-mtune=generic -Os -pipe” LDFLAGS=”-Wl,-O1″

引数はお好みに会わせてと言うのがピーマンさんからのメッセージです。ただ、最後の「CFLAGS=”-mtune=generic -Os -pipe” CXXFLAGS=”-mtune=generic -Os -pipe” LDFLAGS=”-Wl,-O1″」の部分だけは必須です。

tc@box:~/mpd-0.19.15$ make

エラーが出ないことを天に祈りながら(^^;、ひたすら待つ!!
エラーが出ることなく無事にコンパイルできれば、mpdディレクトリーにmpdをインストールします。

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

ビルドしたMPDをtcz化して「Tiny Core」に組み込む

ここからが、私のリサーチ能力の至らなさで、ピーマンさんに一番感謝した部分です。
「mksquashfs」というコマンドでTCZ化できるんですね。!!(^^;
こう言うときに、若い頃にもっと真面目に英語を勉強しておけば良かったと痛感させられます。

tc@box:~$ mksquashfs mpd mpd-0.19.15.tcz
tc@box:~$ md5sum mpd-0.19.15.tcz > mpd-0.19.15.tcz.md5.txt

次ぎに、TCZ化した「mpd-0.19.15.tcz」と「mpd-0.19.15.tcz.md5.txt」を「/mnt/sda2/tce/optional/」に移動、もしくはコピーをします。
なお、「/mnt/sdb2」は、時によって「/mnt/sda2」になったりします。「USBメモリ」が何処にマウントされているのかはバックアップの「filetool.sh -b」を実行すれば確認できます。

tc@box:~$ filetool.sh -b
Backing up files to /mnt/sda2/tce/mydata.tgztc@box:~$

この場合は「/mnt/sda」となりますので、コマンドは以下の通りです。

tc@box:~$ sudo mv mpd-0.19.15.tcz* /mnt/sda2/tce/optional/

そして、この「mpd-0.19.15.tcz」が起動時に読み込まれるように、「/mnt/sdb2/tce/onboot.lst」に「mpd-0.19.15.tcz」しておきます。

tc@box:~$ sudo vi /mnt/sdb2/tce/onboot.lst
mpd-0.19.15.tcz //追記する

「SOX]を組み込む

さらに、「SOX」関連のライブラリをピーマンが配布してくれています。これに関しても、同じ要領でコンパイルしてビルドしたものをTCZ化させることも可能ですが、ここは有り難く頂戴しておきましょう。

頂戴の仕方は「mpd-0.19.15.tcz」と同じで、ピーマンさんが配布してくれているページから、「soxr.tcz」「audiofile.tcz」「libmpdclient.tcz」を落としてきて、「/mnt/sda2/tce/optional/」にコピーします。
この時に、「RLogin」のファイル転送モードが非常に便利です。「RLogin」でのファイル転送の仕方は自力でマニュアルを確認してください。

それから、「/mnt/sdb2/tce/onboot.lst」に追記します。

tc@box:~$ sudo vi /mnt/sdb2/tce/onboot.lst
soxr.tcz
audiofile.tcz
libmpdclient.tcz

mpd.confの作成

最後に、mpd.confを作成します。配布しているイメージファイルは以下のような設定になっています。メモリ再生を前提としていますが、NASからの通常の再生にしたいときには自分の環境に合わせて変更してください。

tc@box:~$ vi mpd.cof

#music_directory “/home/tc/.mpd/music”
playlist_directory “/home/tc/.mpd/music/playlists”
#db_file “/home/tc/.mpd/database”
log_file “/home/tc/.mpd/log”
pid_file “/home/tc/.mpd/pid”
state_file “/home/tc/.mpd/state”
sticker_file “/home/tc/.mpd/sticker.sql”
music_directory “/media”
#playlist_directory “/media/music/playlists”
db_file “/media/database”
#log_file “/media/log”
#pid_file “/media/pid”
#state_file “/media/state”
#sticker_file “/media/sticker.sql”
port “6600”
follow_outside_symlinks “yes”
follow_inside_symlinks “yes”
zeroconf_enabled “yes”
audio_output {
type “alsa”
name “My ALSA Device”
device “hw:0,0” # optional
format “88400:24:2”
}
audio_buffer_size “4096”
buffer_before_play “95%”
filesystem_charset “UTF-8”
#LIBSAMPLERATE
samplerate_converter “Best Sinc interpolato”
# SOXR
#samplerate_converter “soxr very high”

music_directory “/media”
playlist_directory “/media/playlists”
db_file “/media/database”
log_file “/home/tc/.mpd/log”
pid_file “/home/tc/.mpd/pid”
state_file “/home/tc/.mpd/state”
sticker_file “/home/tc/.mpd/sticker.sql”

port “6600”
follow_outside_symlinks “yes”
follow_inside_symlinks “yes”
zeroconf_enabled “no”

#decoder {
# plugin “sndfile”
# enabled “no”
#}

realtime_option {
memlock “yes”
stack_reserve “1024”
heap_reserve “10240”
main_priority “OTHER:0”
player_priority “FIFO:52”
decoder_priority “FIFO:51”
update_priority “OTHER:0”
}

audio_output {
type “alsa”
name “hiFace Evo”
device “hw:0,0”
priority “FIFO:99”
mixer_type “none”
# replay_gain_handler “none”
# mixer_device “default” # optional
# mixer_control “PCM” # optional
# mixer_index “0” # optional
# auto_resample “no”
dsd_usb “no”
format “176400:24:2” # “192000:24:2” “176400:24:2” “88200:24:2”
buffer_time “30000”
period_time “7500”
}

audio_buffer_size “352”
buffer_before_play “50%”
#samplerate_converter “Best Sinc Interpolator”
samplerate_converter “soxr very high”
mixer_type “none”
log_level “default” # “verbose” “default”
filesystem_charset “UTF-8”
auto_update “no”

input {
# plugin “file”
# plugin “alsa”
plugin “curl”
# proxy “proxy.isp.com:8080”
# proxy_user “user”
# proxy_password “password”
}

それから、この設定にあわせて、「.mpd」と「/music」のシンボリックリンクを作成しておきます。

tc@box:~$ mkdir .mpd
tc@box:~$ lm -s /music .mpd/music
tc@box:~$ filetool.sh -b //最後にお忘れなく!!
tc@box:~$ sudo reboot

これで再起動すれば音楽が聴けるはずです。
ただし、もしかしたら、この設定では「realtime_option」がエラーになって起動しない可能性があります。
その時は、「realtime_option」の記述を全てコメントアウトするか、もしくはピーマンさんが配布してくれている「mpd-0.19.15.tcz」を有り難く頂戴して入れ替えるかすれば大丈夫です。(^^;;(何のために自前でコンパイルしたのよ?)

非常に敷居が高くて大変と言えば大変なのですが、「自由」を手に入れるためにはこれくらいの「コスト」は必要だと言うことです。
次回は、ここから「開発環境」を省いた起動用「USBメモリ」を作成したいと思います。これは簡単です。


2 comments for “メモリ再生(9)~64bit版 Tiny Coreを使ってみる。~その2(MPDをコンパイルして組み込む)

  1. シネマー
    2016年10月23日 at 4:46 PM

    N3150-ITXでTinyCore7.0のメモリー再生を満喫しています。十分に良い音ですが、最近mpdやカーネルをカスタマイズしてみたくなり、頭はピーマンさんの作成の手順書を見ながらトライしています。
    mpdを手順書のとおり、rtopのパッチを当てなければ、無事終了しますが、rtopのパッチを当てると、makeでエラーとなり完了しません。N3150-ITXを使用してエラーとなるため、apu1cでもトライしましたが、同じようにエラーとなります。
    いろいろ調べてトライしてみましたが、変化なしです。
    手順書に書かれた内容以外に、作業することがありますか?
    よろしくお願いします。

  2. yung
    2016年10月23日 at 9:09 PM

    mpdを手順書のとおり、rtopのパッチを当てなければ、無事終了しますが、rtopのパッチを当てると、makeでエラーとなり完了しません。

    どうも、TinyCoreのヴァージョンによって上手くいくときとそうでないときがあるような気がします。少し記憶が古いのですが、「7」ヴァージョンは相性が悪くてエラーになったような・・・・。
    ただし、記憶は曖昧です。

    そう言うときは、いささか釈然とはしないのですが、ピーマンさんの配布してくれている「mpd-0.19.15.tcz」を有り難く頂くのが一番楽なのですが、確かに、自力でコンパイルはしたいですよね。

Comments are closed.