メディアセンターのディストリビューションをつくってみる。
環境構築
ラズベリーパイ3向けの環境。いつものやつ。
sumo(2.5)をベースにすると後述のCMAのエラーが発生するため、thud(2.6)をベースにする。
ソース取得
$ mkdir -p rpi-kodi/layers $ cd rpi-kodi/layers $ git clone git://git.yoctoproject.org/poky.git -b thud $ git clone git://git.yoctoproject.org/meta-raspberrypi -b thud $ git clone git://git.openembedded.org/meta-openembedded -b thud
kodiのレイヤをダウンロード
meta-kodiはthudブランチがないため、sumoブランチを使用する。
LAYERSERIES_COMPAT_meta-kodi = "sumo thud"
となっているため互換性は問題ない。
$ git clone https://github.com/koenkooi/meta-kodi.git -b sumo $ cd ../
環境変数設定
$ source layers/poky/oe-init-build-env build
自動的にビルドディレクトリに移動される。 これで、bitbake関連のツールが使用可能になる。
レイヤ追加
$ bitbake-layers add-layer ../layers/meta-openembedded/meta-oe $ bitbake-layers add-layer ../layers/meta-openembedded/meta-python $ bitbake-layers add-layer ../layers/meta-openembedded/meta-multimedia $ bitbake-layers add-layer ../layers/meta-openembedded/meta-networking $ bitbake-layers add-layer ../layers/meta-raspberrypi $ bitbake-layers add-layer ../layers/meta-kodi
local.confの修正
MACHINEの行を修正する。
MACHINE = "raspberrypi3" DL_DIR ?= "${TOPDIR}/../downloads" # enable uart ENABLE_UART = "1" # systemd DISTRO_FEATURES_append = " systemd pam" VIRTUAL-RUNTIME_init_manager = "systemd" DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" VIRTUAL-RUNTIME_initscripts = "" # IMAGE_INSTALL_append = " connman connman-client" IMAGE_ROOTFS_SIZE = "1782579" # kodi IMAGE_INSTALL_appen = " \ kodi \ kodi-addon-inputstream-adaptive \ kodi-addon-pvr-hts \ libkodiplatform \ "
kodiのconfigureでエラー
下記のエラーが発生してdo_configureで失敗する。
Could NOT find GBM (missing: GBM_LIBRARY GBM_INCLUDE_DIR)
例えば下記のようにlocal.confを修正して、GBMを無効にしてみる。
EXTRA_OECMAKE_append_pn-kodi = " -DENABLE_GBM=OFF"
すると、次のようなメッセージがログに追加される。
| CMake Warning at CMakeLists.txt:111 (message): | Your request to disable the dependency GBM required on platform gbm was | ignored. Please choose another platform or add "-DENABLE_GBM=ON" to your | CMake command line to resolve this warning.
つまり、GBMを有効化できないなら他のプラットフォームを使えと。
そげな。。。
いろいろ調べると、libgbmはmesaの持ち物らしい。 meta-raspberrypiのプラットフォームでmesaを有効にするにはlocal.confに次の行を記述する。
MACHINE_FEATURES += "vc4graphics"
CMAの確保に失敗する
sumoをベースにkodiを構築した場合、起動してしばらくすると次のエラーが発生しkodiが制御不能になる。
カーネル自体は動作しているので、シリアルコンソールなどでコマンドは実行できる。
[ 364.142061] vc4-drm soc:gpu: failed to allocate buffer with size 16777216 [ 364.170268] vc4-drm soc:gpu: failed to allocate buffer with size 16777216 [ 364.197362] vc4-drm soc:gpu: failed to allocate buffer with size 16777216 [ 364.204449] [drm:vc4_bo_create [vc4]] *ERROR* Failed to allocate from CMA: [ 364.211492] [drm] kernel: 8100kb BOs (1) [ 364.217836] [drm] V3D: 47104kb BOs (85) [ 364.224269] [drm] V3D shader: 44kb BOs (11) [ 364.230654] vc4_v3d 3fc00000.v3d: Failed to allocate memory for tile binning: -12. You may need to enable CMA or give it more memory.
CMAのアロケーションに失敗しているが、cat /proc/meminfo | grep -i cma
などして、CMAFreeのサイズを確認しても、十分にサイズは余っている。
カーネルのバージョンに依存する不具合のようで、thudブランチに切り替えたところ、現時点ではこのエラーは発生していない。