みつきんのメモ

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

kasを便利に使う

はじめに bitbakeをラップして、操作を簡略化するためのツールとして以前にも何回か取り上げたkas Yocto meta-raspberrypi環境の作成にkasを使ってみる https://mickey-happygolucky.hatenablog.com/entry/2020/11/18/112507 Yocot Project CROPSを拡張してk…

Yocto イメージレシピの調査

はじめに bitbakeでビルド可能なイメージについて調査する。 pokyのmetaレイヤに含まれるものは下記のようになっている。 イメージのレシピ ディレクトリ build-appliance-image_15.0.0.bb recipes-core/images core-image-base.bb recipes-core/images core…

YoctoProject wic入門

はじめに YoctoProjectではbitbakeで生成された成果物をもとに、SDカードなどに直接書き込むことができるディスクイメージを作成するため、 wicというコマンドを提供している。ヘルプにwicは次のようなものだという記載がある。 The 'wic' command generates…

YoctoProject LICHEE RV DOCKを動かす

はじめに SiPEED LICHEE RV DOCKが転がっている。 これにはAllwinner D1が搭載されている。meta-riscvのマシン定義にnezha-allwinner-d1があるので試してみる。 環境を構築する 作業環境 $ mkdir -p ~/work/yocto/nezha-kirkstone $ cd ~/work/yocto/nezha-k…

Yocto Project Kirkstone(4.0) タスクのネットワークアクセス制限の実現方法

はじめに 前回で、Kirkstoneではdo_fetch以外のタスクからは原則ネットワークアクセスができなくなっていることについて調査した。 Release 4.0 (kirkstone)には下記のように記載があり、カーネル機能を使用しているとのことだったが、具体的にどのような機…

Yocto Project Kirkstone(4.0) do_fetch以外でのネットワークアクセスについて

はじめに GW前にYoctoProject 4.0(kirkstone)がリリースされた。 変更点の詳細はRelease 4.0 (kirkstone)を参照。 使ってみようと思っていたら、ツイッターで下記のような情報が流れてきた。 yocto 4.0になってから、cmakeのexternal_projectでダウンロード…

pandocのdockerでEisvogelを使用する

はじめに pandocが提供しているDockerコンテナpandoc/latexをベースにEisvogelを使用できる環境を作成する。 目指すゴールは下記が全て機能すること。 PlantUMLが使用できる Eisvogelを使用してきれいなPDFを出力できる pandoc-crossrefが使用できる [2022/4…

pandoc-crossrefとEisvogelを併用する

はじめに pandoc-crossrefフィルタとEisvogelを併用すると下記のようなエラーが発生する。 Error producing PDF. ! LaTeX Error: Environment lstlisting undefined. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help.</return>…

pandoc-crossref + PlantUML

はじめに pandocには図や表、ソースコードを相互参照するための便利な機能として pandoc-crossrefというフィルタある。 PlantUMLで作成した図をpandoc-crossrefで相互参照したい。 以前は PlantUMLの図はテキストで記述するためコードブロックを使用する。 `…

Dockerを使用して比較的新しいpandoc環境を簡単に構築する

pandocは便利で手放せないが、LTSのディストロを使用したりすると、 更新が追いつかなくなる。 自前で環境を作るにも結構手間がかかるため、一度環境を作ってしまうと、 秘伝のタレのように使い続けてしまいがちになる。 そのため、PCを新調したり、OSを入れ…

Yocto Honister ラズパイ4でVulkanデモプログラムを動かしてみる

はじめに なんとなく、Raspberry Pi 4 で Vulkan を試すと同様のことをPokyでもやってみた。 使用するのはラズベリーパイ4 動かすデモプログラムはSaschaWillems/Vulkan。これはVulkanのデモとしては有名なものらしい。 run_crops.sh(余談) gistに置いた。 …

Yocot Project CROPSを拡張してkasを使ってみる

はじめに CROPSを使用すると、ホスト環境の差異を気にせずにbitbakeができるようになるので 非常に便利だが、たまにhosttoolsを追加したりCROPSのDockerイメージを拡張したいケースがある。 その際にCROPSの提供物を直接編集することなく、Dockerイメージを…

Yocto Project CROPSでmeta-riscvをビルドしてみる

はじめに "Yocto Project CROPSを使ってみる"を拝見して、、、Fedoraのpodmanでもできました。https://t.co/YGURc1j6hz— nb.o (@Nextremer_nb_o) February 9, 2022 私の記事を参考にして、meta-riscvをビルドしようとしたけどうまくいかないらしかったので試…

Yocto Honister ラズパイ4でTPMエミュレータを使ってみる

はじめに Yocto ProjectでもいくつかのレイヤでTPMをサポートしている。 ラズベリーパイシリーズはTPMモジュールは搭載されておらず、外付けのモジュールを使用するか エミュレータを使用する必要がある。 meta-security配下にあるmeta-tpmではTPMエミュレー…

Yocto Project CROPSでmeta-raspberrypiをビルド

はじめに 前回CROPSを動かしてみた。 CROPSでmeta-raspberrypiをビルドしてみる。今回はラズベリーパイ4を使用する。 run_crops.sh 今回も前回作成したrun_crops.shを使用する。 #!/bin/sh cmd="source /workdir/poky/oe-init-build-env" if [ $# -gt 0 ] ; …

Yocto Project HONISTERの注意点

はじめに 最近やっと時間が取れるようになって(なってない)、HONISTERをいじり始めた。 初っ端から下記のようなエラーが発生して面食らった。 ERROR: Variable DISTRO_FEATURES_append contains an operation using the old override syntax. Please convert…

Yocto Project CROPSを使ってみる

はじめに Yocto Projectではbitbakeを実行するためのDockerコンテナを提供している。 そのコンテナはCROss PlatformS(CROPS)と呼ばれている。CROPSの詳細はSetting Up to Use CROss PlatformS (CROPS)を参照のこと。 使い方 使い方についてのざっくりな説明…

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 …

emacs markdown-modeで表を作成する

はじめに 筆者はemacsでmarkdownを書く時にはmarkdown-modeのパッケージをインストールして、gfm-modeを使用する。 .emacs/init.elは多分こんな感じ。 ;; Markdown mode (use-package markdown-mode :ensure t :init (add-to-list 'auto-mode-alist '("\\.md…

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では簡単に実現することができる。 実機でやったほうが楽しいのでラ…

Raspberry Pi Pico タイマーでLチカ

はじめに Raspberry Pi Pico(Pico)は4つの64ビットタイマーを持っている。それぞれ割り込みを発生させることができる。 ここまででSysTickやその割り込みを使ってLチカをしてきたが、すべてビジーループでタイミングを測っていた。 今回はWFIを使ってスリー…

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…