みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

Yocto Project アーカイバ調査

はじめに オープンソースでは要求に応じて、ソースコードを開示する必要がある。 Yocto ProjectではBitBakeで作成されたOSイメージに含まれるすべてのOSSライセンスのパッケージについて ソースコードをアーカイブする機能としてアーカイバを提供している。 …

ラズベリーパイ4のmini UARTとcore_freqについて

はじめに ラズベリーパイ3、4などの無線機能付きの機種ではデフォルトではデバッグシリアルが無効化されている。 これは2種類あるUARTのうちPL011をBluetooth制御に割り当てるようになっているため。 ラズベリーパイ4に関してはUART2〜5としてPL011が追加さ…

Yocto Project QEMUでu-boot

はじめに Yocto ProjectでビルドしたQEMUはrunqemuで起動できるが、 デフォルトではカーネルからの起動シーケンスが実行される。 u-bootやGRUBなどのブートローダから起動シーケンスを実行できるのでこれを試す。 環境構築 scarthgapを使用する。 作業環境 $…

Yocto Project 5.1(styhead)以降の注意点

はじめに ぼやぼやしているうちにYocto Projectも5.2がリリーズ済みとなり、5.1はサポート終了していた。 しかし、Migration notes for 5.1 (styhead)を見ると、do_unpackでのWORKDIRの扱いが変更されたため、これまでの一部のレシピについて互換性がなくな…

Yocto Project ラズベリーパイ4でディスクレス

ルートFSのサイズが小さいLinuxでは、OSの起動時にRAM上にすべてのファイルを展開することで、 ストレージデバイスに全くアクセスしないシステム構成を捕ることができる。 これはKnoppixやPuppy Linuxなど古くから存在する手法である。下記にRAM上での動作が…

Yocto ProjectでKakipの野良ビルドを諦めた話(その2)

はじめに Yocto ProjectでKakipの野良ビルドを諦めた話(その1) Kakipというボードが一部で話題となっている。 Yocto Projectで野良ビルドすることを目指して作業を開始したが、meta-renesasをビルドするだけで力尽きた。 今回はその続き。 Kakipの起動に必要…

Yocto ProjectでKakipの野良ビルドを諦めた話(その1)

はじめに Kakipというボードが一部で話題となっている。 開発開始当初はYocto ProjectベースでBSPが提供される予定だったが、途中でUbuntuにシフトチェンジしたとのこと。 どうでもいいが筆者は「Yocto Linux」という呼称を認めない。Yocto ProjectはLinuxを…

Yocto ProjectでOllamaを試す

はじめに Yocto Projectの環境でOllamaを試したい気分になった。 一からビルドするのは大変そうなので、マニュアルインストールの手順を試す。 環境構築 環境を構築する。 作業環境 $ mkdir -p ~/yocto/scarthgap $ cd ~/yocto/scarthgap pokyの取得 $ git c…

Yocto ProjectのSBOM生成機能をためす

はじめに Yocto ProjectではSBOM(Software Bill Of Materials)を出力する機能がある。SBOMはcreate-spdx.bbclassの機能によって出力される。 また、Nanbield(4.3)からこの機能がデフォルトで有効化されている。 今回はScarthgap(5.0)でこの機能を試してみた…

yoctoでコンテナイメージを取り込む(その2)

はじめに シリーズもの。 yoctoでコンテナイメージを取り込む(その1) 前回、コンテナを組み込むためのレシピを作成した。 今回は下記の構成でコンテナを組み込む方法を検討する。 コンテナ タイミング podmand pkg_postinst_ontarget コンテナ dockerと比較…

yoctoでコンテナイメージを取り込む(その1)

yoctoでコンテナイメージを取り込む(その1) はじめに 前回作成したイメージをbitbakeで作成するイメージに取り込む方法を考える。 理想は、bitbakeした時点でイメージがdockerやpodmanにインポートされた状態になり、 初回起動時のdocker imagesやpodman ima…

yoctoでコンテナ用イメージを作成する

はじめに Yocto Projectではmeta-virtualizationでdockerなどのコンテナや仮想化に関する機能を提供している。 dockerを組み込むことは YoctoProject ラズパイ4でdocker で行ったが、コンテナ用イメージ自体を作成することもできるようになっている。 bitbak…

Yocto標準SDKでROS2ノードをビルド〜YoctoでROS2に入門する(その3)

はじめに YoctoでROS2入門シリーズ YoctoでROS2に入門する(その1) YoctoでROS2に入門する(その2) 前回作成したscarthgap+humbleの環境向けに標準SDKを作成してROS2ノードをビルドできるようにする。 全体の流れ ROS2ノードのためのワークスペースなどを作成…

YoctoでROS2に入門する(その2)

はじめに 前回はkasを使用してビルド環境を構築した。kasが強力なので使いやすい反面、実際に何が行われているか分かりづらく、トラブルシュートやカスタマイズをするための知識が得づらくなっている。 今回はkasを使用せずにビルド環境を構築する。 環境構…

YoctoでROS2に入門する(その1)

はじめに ロボット制御のソフトウェアを開発するのにROSが有名である。 ROSはLinux上で動くミドルウェアとなっている。なのでYocto Projectでも使える。 Yocto Projectのためにmeta-rosというものが存在する。 環境構築も含めて全く触ったことがなかったので…

Yocto Project Poetryプロジェクトのレシピ

はじめに 前回pythonのサンプルプログラムを作成するためにpoetryを使用したが、あまりにも素人過ぎていろいろ雑だったのでもう少し調べる。 環境 Yocto Project VS Code連携機能を試す(C/C++)の環境を使用する。 poetryのプロジェクト poetry poetryはpipで…

Yocto Project VS Code連携機能を試す(Python)

はじめに 前回ではVS CodeでC/C++プログラムをデバッグする機能をためした。 今回はPythonのプログラムのデバッグを試してみる。 ベースの環境は前回のものを使用する。 pythonプログラム poetry pythonのパッケージを作成するには自前でsetup.pyなどを書く…

Yocto Project VS Code連携機能を試す(C/C++)

はじめに ScarthgapからVS Codeを使用してプログラムをデバッグする機能が実装された。 この機能を使用すると、VS Codeで実機上のプログラムにブレークポイントを貼ったり変数を見たり、 ソースコードでレベルのデバッグが可能となる。 ユーザーランドのプロ…

Yocto Project bitbake-layersの新機能を試す その2

はじめに 前前回 Scarthgapのリリースに伴うbitbake-layersの新機能を紹介した。この機能がかなり強力なので具体的な例を示してみる。 今回紹介する機能 Scarthgapで追加された下記のサブコマンドについて紹介する。 save-build-conf save-build-conf このコ…

Yocto Project bitbake-layersの新機能を試す その1

はじめに 前回 Scarthgapのリリースに伴うbitbake-layersの新機能を紹介した。この機能がかなり強力なので具体的な例を示してみる。 今回紹介する機能 Scarthgapで追加された下記のサブコマンドについて紹介する。 create-layers-setup create-layers-setup …

Yocto Project 5.0リリース

はじめに 4/30にKirkstoneの次のLTSとなるScarthgap(YP-5.0)がリリースされた。 LangdaleからNanbieldまででレシピのバージョンアップだけでなく、機能の追加などが行われているのでKirkstoneと比較すると結構便利になっている。 大きい点としてはSDKでRust…

YoctoProject Toaster使ってみる

はじめに YoctoProjectはToasterというWebインターフェースを提供している。 Toasterを使うとコマンドラインに慣れていないユーザーでもYoctoProjectを使用して ビルドを行うことができ、ビルドされたイメージをブラウザでダウンロードすることもできる。 筆…

emacsのlanguage serverをEglotに乗り換える

はじめに lsp-modeがあまり使いやすくないのでemacs 29から標準に入ったEglotに乗り換える。 環境設定 emacs Ubuntu 22.04のemacsは古いのでsnapを使用する。 aptなどでインストール済みのものがある場合は削除しておく。 $ sudo snap install emacs --class…

sshとtmuxを組み合わせる

はじめに ssh先でもローカルでもbash起動時にtmuxが起動した状態にしたい。 設定 bashrc bashを起動した時点でdefaultというセッションでtmuxを起動したい。 すでにdefaultセッションが存在する場合にはアタッチする。 ~/.bashrcに下記を追加する if [ -z ${…

YoctoProject bitbake-hashservを使ってみる(TCP/IP編)

はじめに 前回はunix domain socketでローカルPC上でsstate-cacheを共有した。 今回はリモートPCでsstate-cacheを共有してみる。 bitbake-hashservの実行 サーバのIPアドレス リモートPCから接続するためにIPアドレスを決めておく必要がある。 今回は192.168…

YoctoProject bitbake-hashservを使ってみる(unix domain socket編)

はじめに bitbakeではShared State Cache(sstate-cache)という仕組みを持っていて、今回ビルドしたいものが前回ビルドしたものと変更がなければ、成果物をそのまま再利用するようになっている。 手っ取り早い方法は複数のビルドディレクトリのlocal.confで設…

YoctoProject devtoolを使ってみる(modify編)

はじめに 下記ではdevtoolについて解説してきた。 YoctoProject devtoolを使ってみる(add編) YoctoProject devtool addでローカルのソースをレシピ化することを考える devtoolでは以下のことができる。 レシピの新規作成 レシピの編集 レシピのアップグレー…

YoctoProject devtool addでローカルのソースをレシピ化することを考える

はじめに devtool addはレシピ作成の大半の処理をrecipetool createで行っているが、 どちらのツールもネットワーク越しに公開されているソースコードからレシピを作成することを前提としている。 つまり、ローカルストレージ上にあってネットワーク上で公開…

YoctoProject devtoolを使ってみる(add編)

はじめに YoctoProjecではdevtoolというツールを提供している。 このツールはbitbake環境か拡張SDKの環境で使用することができる。 devtoolには様々なサブコマンドが用意されており、次のようなことができるようになっている。 レシピの新規作成 レシピの編…

ものすごく久しぶりにAutotoolsを使ってみた

c++

はじめに 表題のとおり。 プロジェクト作成 Autotoolsを使用したプロジェクトを作成する。 ディレクトリ構造 ディレクトリ構造は以下のようになる。 hello ├── Makefile.am ├── configure.ac └── src ├── Makefile.am ├── hello.cpp ├── hello.h └── main.cp…