みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

yocto

Yocto Zephyrアプリケーションのコンフィグを変更する

はじめに YoctoでビルドするZephyrアプリケーションのコンフィグを設定する方法を調べた。 micro:bitの5x5 LEDを有効化する。 最終的にはmeta-armの修正が必要となった。 作業環境はYocto Zephyrに独自のアプリケーションを追加してみるを使用する。 環境変…

Yocto Zephyrのアプリケーションをqemu + gdbでデバッグ

はじめに Yocto ProjectでビルドしたZephyrのアプリケーション(elf)をqemuとgdbでデバッグしてみる。 環境 下記で作成した環境をベースに作業する Yocto BBC micro:bit V1向けのZephyrを試してみる Yocto Zephyrに独自のアプリケーションを追加してみる gdb-…

Yocto Zephyrに独自のアプリケーションを追加してみる

はじめに Yocto ProjectでビルドするZephyrに独自のアプリケーションを追加してみる。 環境構築 この環境をベースに作業する。 環境変数設定 bitbake関連のツールを使用するために環境変数の読み込みは行う。 $ source poky/oe-init-build-env build レイヤ…

Yocto BBC micro:bit V1向けのZephyrを試してみる

はじめに YoctoでZephyrをビルドできるっぽいことは知っていたが、試したことがなかったのでやってみる。 使用するバージョンはhardknott 構築手順 ソース取得 下記のコマンドでソースを取得する。 $ mkdir -p mb-hardknott && cd mb-hardknott $ git clone …

Yocto Project 3.3(Hardknott)で日本語入力

はじめに Yocto Project 3.3(Hardknott)でラズベリーパイ4を動かすの環境をベースに、Hardknottで日本語入力環境を作成してみる。 かなり古いがyoctoで日本語入力も参考にする。 作業環境の準備 meta-oeをビルド環境に設定する。 $ cd rpi-hardknott $ sourc…

Yocto Project 3.3(Hardknott)でラズベリーパイ4を動かす

はじめに Yocto Project 3.3がリリースされていた。 リリースされた事自体は知っていたが、meta-raspberrypiをビルドする際に、bitbake-layers layerindex-fetchがうまく動かなかったので、しばらく様子を見ていた。 具体的には下記のようなこと。 OpenEmbed…

Yocto Chromiumをビルドする時に何回やってもリンカでSegmentation faultする時の対応

はじめに YoctoでChromiumをビルドする時に下記のようにエラーで終了する。 ... (snip) ... nterface.o | ninja: build stopped: subcommand failed. | WARNING: exit code 1 from a shell command. | ERROR: Task (/home/mickey/work/yocto/rpi-gatesgarth/…

Yocto リードオンリーなルートファイルシステムを構築する

はじめに 組み込みシステムの場合、製品として使用するようなケースではルートファイルシステムをリードオンリーとして、 本体が持つデータを書き換えられないようにすることがある。 Yoctoでは簡単に実現することができる。 実機でやったほうが楽しいのでラ…

Yocto UEFIセキュアブート

はじめに Yoctoでx86_64向けのボードを動かす。その際にUEFIセキュアブートも有効にしてみたいと考えた。そこで、meta-efi-secure-bootというレイヤを見つけた。 実機はROCK Pi X V1.4を使用する。 UEFIセキュアブート UEFIセキュアブートは秘密鍵を使用して…

Yocto bitbake-layers layerindex-fetch

はじめに bitbake-layersコマンドの便利なサブコマンドを見つけた(認識した)。 レイヤ間の依存関係 bitbakeで取り扱うレイヤではlayer.confに下記のようにLAYERDEPENDSを記述することで、依存関係を定義することができる。 LAYERDEPENDS_gnome-layer = "core…

Yocto meta-gnomeでpolkitのエラー

はじめに デフォルトの設定でmeta-gnomeをビルドするとエラーが発生する。 エラーの内容 gnome-control-centerとsystmedがそれぞれで/usr/share/polkit-1/rules.dをインストールしようとしてコンフリクトしている。 Error: Transaction test error: file /us…

YoctoProject CVE Checkについて調べる

はじめに bitbakeではビルドするパッケージの脆弱性をCVEによってチェックを行う機能がある。 使い方 local.confに下記を追加する。 INHERIT += "cve-check" すると、各パッケージのタスクにdo_cve_checkが追加される。 bitbakeを実行すると、このタスクが実…

Giant BoardをYoctoに対応する

はじめに Giant BoardをDebian GNU/Linux 9 (stretch)で動かす動かしたGiant BoardをYoctoProjectに対応する。 ここでは新規ボード向けにYoctoProjectのレイヤを作る最小限の手順を紹介する。 新規ボードのレイヤを作る YoctoProjectが未対応のボードに対応…

YoctoのSDKでOut-of-treeのカーネルモジュールをビルドする

はじめに bitbake meta-toolchainや-c populate_sdkで作成したSDKを使用してOut-of-treeのカーネルモジュール(ドライバ)をビルドする時に少しハマったのでメモしておく。 SDKにカーネルソースを含める 作成されたSDKに確実にカーネルのソースコードを含める…

meta-clangの使い方

はじめに meta-clangの使い方を調べた。 meta-clangはbitbakeでのパッケージのビルドやSDKでgccの代わりにclangを使えるようにするためのレイヤ。 meta-clangを使う 既存のビルド環境にmeta-clangを組み込むには下記のようにする。 $ git clone https://gith…

meta-qt6を試す

はじめに Qt 6 in OpenEmbedded and Yoctoが気になったので試してみる。 ここを見る限りまだdevっぽい。 meta-qt6を覗いてみる layer.conf ...(snip)... LAYERDEPENDS_qt6-layer = "core" LAYERSERIES_COMPAT_qt6-layer = "zeus dunfell gatesgarth" ...(sni…

recipetoolでバイナリパッケージを作る

はじめに recipetoolでバイナリパッケージを作ってみる。 ちなみに今回は作ることが目的のため、作ったものの動作確認はしていない。 reciptool オプションの確認 $ recipetool create --help NOTE: Starting bitbake server... usage: recipetool create [-…

YoctoProjectのライフサイクル

はじめに YoctoProjectのリリースバージョンを確認するにはReleasesのページを参照する。 その際にSupport LevelがEOLになっているものは既にサポートが切れていると言えそう。 1つ気になったのはDunfell(3.1)のSupport Levelを見るとLong Term Supportとな…

YoctoProject 自分のレイヤから既存のbbclassの挙動を上書きする

はじめに 例えば既存のbbclassにデバッグ用のログを追加したり独自の改造を実験したい場合でも、 既存のレイヤのソースコードに手を加えるのは避けたい。 そのような場合、ちょっとした工夫で自分のレイヤから既存のbbclassの挙動を上書きすることができる。…

Kasのコンフィグファイルを提供してみる

はじめに なにか適当なレイヤをでっち上げて、kasのコンフィグファイルを作ってみる。 サンプルのレイヤとしてラズパイ向けにハローワールドプログラムを追加したレイヤを作成する。 環境の作成 ソース取得 ラズパイ環境のビルドのためのレイヤをダウンロー…

Yocto meta-raspberrypi環境の作成にkasを使ってみる

はじめに meta-raspberrypiのQuick Startを眺めていると、Quick Start with kasという項目ががあった。 kasというコマンドに見覚えがなかったので調べてみると、下記のようにあった。 This tool provides an easy mechanism to setup bitbake based projects…

Yocto meta-raspberrypi環境の書き込みにbmaptoolを使ってみる

meta-raspberrypiでbitbakeして作成されるイメージがいつの間にかrpi-sdimgからwic.bz2になっている。 イメージを書き込む手順もddやEtcherからbmaptoolになっている。 dunfellのブランチを使用して、最近の手順で試しにラズパイ4を動かしてみる。 構築手順 …

YoctoのSDKでスタティックライブラリしか提供していないパッケージを使う

はじめに meta-oeなどには様々なライブラリのパッケージが提供されている。 その中には依存関係のあるパッケージのビルド時にだけ使用する、*.aしか提供しないパッケージも存在する。 SDKを使用してアプリケーションを開発する際にそのようなパッケージの提…

Yocto環境でLogitech Unifyingデバイスが動かない場合

はじめに Jetson NanoにYocto環境を作ってLogtech Unifyingのキーボード・マウスを接続したが、 全く反応しなかった。 原因 イメージに必要なドライバがインストールされていないことが原因だった。 下記のコマンドでカーネルコンフィグを確認したところ必要…

Yocto Project 3.0(Zeus)でラズベリーパイ4を動かす

はじめに 技適が通り、やっと国内で流通し始めたラズベリーパイ4が手に入ったので、Yocto Projectで動かしてみる。 発熱がすごいらしいのでファン付きのケースも同時に購入した。 構築手順 ソース取得 依存関係がいつの間にか改善されている。最小限の構成で…

ラズベリーパイ3でYocto Project 3.0(Zeus)を試す

はじめに Yocto Project 3.0(Zeus)がリリースされていたのでラズベリーパイ3で動かす。 構築手順 ソース取得 $ mkdir -p rpi-zeus/layers $ cd rpi-zeus/layers $ git clone git://git.yoctoproject.org/poky.git -b zeus $ git clone git://git.yoctoproje…

ざっくりとALSAとPulseAudioの関係(の続きのようなもの)

はじめに 以前に書いた2015-04-04 ざっくりとALSAとPulseAudioの関係が未だにアクセスがあるようなのでちょっと振り返ってみる。 基本的な理解としては、 最終的に音を鳴らすのはデバイス デバイスを叩くためにデバイスドライバ(カーネルランド) サウンド関…

Yocto環境 callgrindでコールグラフを作成する

はじめに Linuxのユーザー空間のアプリをデバッグする際に、関数が実際にどのように呼び出されているのかを見たいことがある。 valgrindにはcallgrindというツールがあり、これを使うとコールグラフを生成することができる。 ターゲットにRPi3 Model Bを使用…

ラズベリーパイ3 warriorのglimagesinkがエラー

2019/10/09 追記 はじめに warrior(2.7)でcore-image-baseを作ってgstreamerで遊ぼうとしたら、次のコマンドでエラーが発生した。 $ export GST_GL_WINDOW=dispmanx ; export GST_GL_API=gles2 ; export GST_GL_PLATFORM=egl $ gst-launch-1.0 v4l2src devic…

yoctoでもRust

はじめに 最近流行りのRust。meta-rustを使えばyocto環境でもRustアプリケーションを使えるようにできる。 meta-rustネタとしてはこちらに先を越されたが、試したブランチがsumo、rockoと古めなのと観点がRust開発者よりなので、本記事ではすこしyocto的に見…