raspberrypi2+DACでMPDサーバを作成する。
今回は作成済みレイヤの使用方法。
レイヤを作成する方法はこちら
機能(おさらい)
- windows10で共有しているフォルダから音楽ファイルを参照
- MPDサーバで音楽ファイルを再生
- SYSTEMDを使用
- ネットワーク設定にはconnmanを使用
DAC(おさらい)
今回はこのDACを使用する。
システム構成(おさらい)
ネットワークを含めたシステムの構成を 図 1 に示す。
図 1:システム構成
yocto環境
作業に使用するレイヤのブランチとバージョンを 表 1 に示す。 各レイヤは下記のブランチを取得し作業する。
作業に使用するレイヤのブランチとバージョンを 表 1 に示す。
表 1: レイヤのブランチとバージョン
レイヤ | ブランチ | バージョン | URL |
---|---|---|---|
poky | krogoth | 2.1 | git://git.yoctoproject.org/poky.git |
meta-openembedded | krogoth | 2.1 | git://git.openembedded.org/meta-openembedded |
meta-raspberrypi | master | - | git://git.yoctoproject.org/meta-raspberrypi |
meta-hifiberry-rpi | master | - | https://github.com/mickey-happygolucky/meta-hifiberry-rpi.git |
meta-mpd-server | master | - | https://github.com/mickey-happygolucky/meta-mpd-server.git |
作業ディレクトリ
作業は~/work/yocto/rpi
で行う。
ベース環境の作成
ベース環境の手順を示す。
- 作業ディレクトリ(\~/work/yocto/rpi)の作成
- pokyのダウンロード
- meta-openembeddedのダウンロード
- meta-raspberrypiのダウンロード
- meta-hifiberryp-rpiのダウンロード
- meta-mpd-serverのダウンロード
下記のように実行する。
$ mkdir mkdir -p ~/work/yocto/rpi && cd ~/work/yocto/rpi $ git clone git://git.yoctoproject.org/poky.git -b krogoth && cd poky $ git clone git://git.openembedded.org/meta-openembedded -b krogoth $ git clone git://git.yoctoproject.org/meta-raspberrypi $ git clone https://github.com/mickey-happygolucky/meta-hifiberry-rpi.git $ git clone https://github.com/mickey-happygolucky/meta-mpd-server.git
bitbakeの準備
次のコマンドを実行し、bitbakeするために必要な設定を行う。
$ cd ~/work/yocto/rpi $ source poky/oe-init-build-env build
bblayers.conf
bblayers.confはbitbakeがビルド対象とするレイヤを定義する。
MPDサーバをビルドするため、自動生成されたbblayers.confを コード 1 の内容にまるごと置き換える。
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf # changes incompatibly POKY_BBLAYERS_CONF_VERSION = "2" BBPATH = "${TOPDIR}" BBFILES ?= "" LAYERSTOP = "${TOPDIR}/.." BBLAYERS ?= " \ ${LAYERSTOP}/poky/meta \ ${LAYERSTOP}/poky/meta-poky \ ${LAYERSTOP}/poky/meta-yocto-bsp \ ${LAYERSTOP}/poky/meta-raspberrypi \ ${LAYERSTOP}/poky/meta-mpd-server \ ${LAYERSTOP}/poky/meta-hifiberry-rpi \ ${LAYERSTOP}/poky/meta-openembedded/meta-oe \ ${LAYERSTOP}/poky/meta-openembedded/meta-python \ ${LAYERSTOP}/poky/meta-openembedded/meta-networking \ ${LAYERSTOP}/poky/meta-openembedded/meta-multimedia \ "
local.conf
local.confはターゲットマシンの設定やインストールするレシピの追加、その他様々な設定を記述することができる。
通常は、自動生成されたものにマシンの設定とレシピの追加を行うことが多い。
自動生成されたlocal.confの先頭の方に コード 2 の内容を追加する。
MACHINE ?= "raspberrypi2" BB_NUMBER_THREADS ?= "${@oe.utils.cpu_count()}" PARALLEL_MAKE ?= "-j ${@oe.utils.cpu_count()}" GPU_MEM = "128" DL_DIR ?= "${HOME}/work/yocto/downloads" # use systemd instead of sysvinit DISTRO_FEATURES_append = " systemd" VIRTUAL-RUNTIME_init_manager = "systemd" DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" VIRTUAL-RUNTIME_initscripts = "" # # systemd-timesyncd NTP_SERVER = "ntp.nict.jp" ## cifs mount IMAGE_INSTALL_append = " cifs-utils cifs-mount-networkd" CIFS_SHARED_DIR = "//192.168.1.60/Music" CIFS_MOUNT_DIR = "/mnt/nas" CIFS_USER = "USERNAME" CIFS_PASSWD = "PASSWORD" CIFS_VERS = "3.0" # mpd LICENSE_FLAGS_WHITELIST = "commercial" IMAGE_INSTALL_append = " mpd" # connman IMAGE_INSTALL_append = " connman \ connman-wait-online \ connman-ipv4-conf \ " # static IPv4 address for connman CONNMAN_IPv4 = "192.168.1.55/255.255.255.0" CONNMAN_IPv4_NS = "192.168.1.1" # Enable I2C ENABLE_I2C = "1" # DAC S/PDIF HIFIBERRY_DIGI = "1" # MPD Music Directory IMAGE_INSTALL_append = " mpd-musicdir" MPD_MUSIC_DIR = "/mnt/nas" # misc IMAGE_INSTALL_append = " alsa-utils file"
CIFS_USER = "USERNAME"
およびCIFS_PASSWD = "PASSWORD"
は環境により適宜書き変えること。
bitbakeの実行
下記の要領で、bitbakeを実行する。
$ cd ~/work/yocto/rpi/build $ bitbake rpi-basic-image
build/tmp/deploy/images/raspberrypi2
にOSイメージファイルrpi-basic-image-raspberrypi2.rpi-sdimg
が生成される。
イメージの書き込み
ddコマンドでrpi-basic-image-raspberrypi2.rpi-sdimg
をSDカードに書き込む。
sudo dd if=tmp/deploy/images/raspberrypi2/rpi-basic-image-raspberrypi2.rpi-sdimg of=/dev/sdb bs=40M
/dev/sdb
は環境により適宜書き換える。間違うとPCのデータが破壊されて泣く事になるので注意すること。
起動
イメージを書き込んだSDカードをRPi2に挿入し電源をONする。
connman-wait-online.serviceについて
connman-wait-online.serviceをenableする。
$ systemctl enable connman-wait-online.service $ sync
connman-wait-online.serviceが実行されないと起動時の共有フォルダのマウントに失敗するため、 MPDも意図したとおり音楽ファイルを参照できない。
connman-wait-online.serviceをenableしたあと、RPi2を再起動する。