MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
設定 - Yoctoのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
設定 - Yocto
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == Yocto Projectは、組み込みLinuxシステムのカスタムディストリビューションを構築するためのオープンソースプロジェクトである。<br> <br> Yocto Projectは、以下の主要なコンポーネントで構成される。<br> * Poky *: Yocto Projectのリファレンスディストリビューションであり、ビルドシステムの基盤となる。 * BitBake *: Pythonで実装されたタスク実行エンジンであり、レシピを解析してビルドタスクを実行する。 * OpenEmbedded-Core *: 基本的なレシピ、クラス、設定ファイルのコレクションである。 <br><br> == Yocto Projectの基本概念 == ==== ディレクトリ構成 ==== ~/yocto-project/ ├── poky/ # Yocto Project Poky │ ├── meta/ # OpenEmbedded-Core │ ├── meta-poky/ # Pokyディストロ設定 │ └── meta-yocto-bsp/ # リファレンスBSP ├── meta-custom-distro/ # カスタムレイヤ │ ├── conf/ │ │ ├── layer.conf # レイヤ設定 │ │ ├── machine/ # マシン設定 │ │ └── distro/ # ディストロ設定 │ ├── recipes-core/ # コアレシピ │ │ ├── images/ # イメージレシピ │ │ ├── packagegroups/ # パッケージグループ │ │ └── base-files/ # base-files拡張 │ ├── recipes-apps/ # アプリケーションレシピ │ └── recipes-kernel/ # カーネル関連 └── build/ # ビルドディレクトリ ├── conf/ │ ├── local.conf # ローカル設定 │ └── bblayers.conf # レイヤ設定 └── tmp/ └── deploy/ ├── images/ # 生成イメージ └── sdk/ # SDK <br> ==== レイヤの概念 ==== レイヤは、関連するレシピ、設定、クラスをグループ化したものである。<br> レイヤを使用することで、機能の追加や変更を既存のコードベースに影響を与えずに行うことができる。<br> <br> 一般的なレイヤ構造は以下の通りである。<br> meta-layername/ ├── conf/ │ └── layer.conf # レイヤ設定ファイル ├── recipes-core/ # コアレシピ ├── recipes-kernel/ # カーネル関連レシピ ├── recipes-apps/ # アプリケーションレシピ └── classes/ # BitBakeクラス <br> ==== レシピの構造 ==== レシピ (.bbファイル) は、ソフトウェアパッケージのビルド方法を定義する。<br> <br> 主要な変数として以下がある。<br> * DESCRIPTION *: パッケージの説明 * LICENSE *: ライセンス種別 * SRC_URI *: ソースコードの取得先 * S *: ソースディレクトリ * do_compile *: コンパイル処理 * do_install *: インストール処理 <br> ==== マシン設定とディストリビューション設定 ==== マシン設定 (.conf) は、ターゲットハードウェアの特性 (CPU、メモリ、ペリフェラル等) を定義する。<br> ディストリビューション設定 (.conf) は、ディストリビューションの特性(パッケージマネージャ、init システム等)を定義する。<br> <br><br> == 開発環境の構築 == ==== 依存関係のパッケージのインストール ==== Yocto Projectを使用するには、以下に示すパッケージをインストールする。<br> # RHEL ## CRBリポジトリの有効化 ## 開発に必要なパッケージはCodeReady Linux Builder (CRB) リポジトリに含まれているため sudo subscription-manager repos --enable codeready-builder-for-rhel-10-$(arch)-rpms ## EPELリポジトリのインストール sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm ## 基本的な開発ツール sudo dnf groupinstall "Development Tools" ## Yocto Project必須パッケージ sudo dnf install git tar python3 python3-pip gcc gcc-c++ make wget curl \ chrpath diffstat texinfo cpio xz bzip2 gzip unzip \ patch perl perl-Data-Dumper perl-Thread-Queue perl-bignum \ glibc-devel glibc-devel.i686 libstdc++-devel libstdc++-devel.i686 \ zlib-devel zlib-devel.i686 SDL-devel xterm \ rpcgen libnsl2-devel rpcsvc-proto-devel \ socat screen tmux lz4 zstd hostname file which # SUSE sudo zypper install git tar python3 python3-pip gcc gcc-c++ make wget \ chrpath diffstat texinfo cpio xz bzip2 gzip unzip \ patch perl perl-Data-Dumper perl-Thread-Queue \ glibc-devel glibc-devel-32bit libstdc++-devel \ libstdc++-devel-32bit zlib-devel zlib-devel-32bit \ SDL-devel xterm rpcgen libnsl-devel rpcsvc-proto-devel \ socat screen tmux <br> BitBakeの実行にはPythonの追加パッケージが必要である。<br> # RHEL sudo dnf install python3-pexpect python3-jinja2 python3-subunit \ python3-pip python3-GitPython python3-distro # SUSE sudo zypper install python3-pexpect python3-Jinja2 python3-subunit \ python3-pip python3-GitPython python3-distro # pipを使用した追加パッケージ (必要に応じて) pip3 install --user kas <br> クロスコンパイル時に32ビットライブラリが必要になる場合がある。<br> # RHEL sudo dnf install glibc.i686 libgcc.i686 libstdc++.i686 zlib.i686 \ ncurses-libs.i686 readline.i686 # SUSE sudo zypper install glibc-32bit libgcc_s1-32bit libstdc++6-32bit \ libz1-32bit libncurses6-32bit libreadline8-32bit <br> ==== ロケール設定の確認 ==== ロケール設定が正しく行われているかどうかを確認する。<br> # en_US.UTF-8ロケールの生成確認 locale -a | grep en_US # ロケールが存在しない場合は生成 sudo dnf install glibc-langpack-en # 環境変数の設定 export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 <br> 上記の環境変数は、~/.profileファイル等に設定することを推奨する。<br> <br> ==== SELinuxの設定 ==== SELinuxを使用している場合、ビルド中にSELinuxが問題を引き起こす場合があるため、必要に応じてPermissiveモードに設定する。<br> # 現在のSELinux状態の確認 getenforce # 一時的にPermissiveモードに変更 sudo setenforce 0 <br> 恒久的に変更する場合は、<u>/etc/selinux/config</u> ファイルを編集する。<br> sudo vi /etc/selinux/config <br> # /etc/selinux/configファイル SELINUX=permissive <br> <u>※注意</u><br> <u>本番環境ではSELinuxを無効化せず、適切なポリシーを設定することを推奨する。</u><br> <br> ==== ファイアウォールの設定 ==== ビルド中にソースコードをダウンロードするため、ネットワークアクセスが必要である。<br> # ファイアウォールの状態確認 sudo firewall-cmd --state # 必要に応じてHTTP/HTTPSを許可 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload <br> ==== Gitの設定 ==== Yoctoのビルドシステムでは、Gitの設定が必要である。<br> git config --global user.name "Your Name" git config --global user.email "your.email@example.com" <br> ==== Pokyのダウンロード ==== 作業ディレクトリを作成して、Pokyをダウンロードする。<br> mkdir -p ~/yocto-project cd ~/yocto-project # Scarthgap (LTS) ブランチを使用 git clone -b scarthgap git://git.yoctoproject.org/poky.git <br> ==== ビルド環境の初期化 ==== ビルド環境を初期化する。<br> cd ~/yocto-project/poky source oe-init-build-env ../build <br> 上記のコマンドを実行すると、buildディレクトリが作成され、自動的にそのディレクトリに移動する。<br> <br><br> == 標準レイヤの構造分析 == ==== metaレイヤ ==== metaはOpenEmbedded-Coreレイヤであり、基本的なレシピとクラスが含まれる。<br> meta/ ├── classes/ # BitBakeクラス (base.bbclass、image.bbclass等) ├── conf/ # 基本設定ファイル │ ├── bitbake.conf # BitBakeのグローバル設定 │ └── machine/ # 汎用マシン設定 ├── recipes-core/ # init、busybox、base-files等 ├── recipes-kernel/ # Linuxカーネル関連 └── recipes-support/ # サポートライブラリ <br> ==== meta-pokyレイヤ ==== meta-pokyレイヤーはPokyディストリビューション固有の設定を含む。<br> meta-poky/ ├── conf/ │ └── distro/ │ └── poky.conf # Pokyディストロ設定 └── recipes-core/ # Poky固有のレシピ <br> ==== meta-yocto-bspレイヤ ==== meta-yocto-bspレイヤーは、リファレンスBSP (Board Support Package) を提供する。<br> <br> meta-yocto-bsp/ ├── conf/ │ └── machine/ │ ├── beaglebone-yocto.conf │ └── genericarm64.conf └── recipes-kernel/ # BSP固有のカーネル設定 <br><br> == カスタムレイヤの作成 == ==== レイヤディレクトリの作成 ==== カスタムディストリビューション用のレイヤを作成する。<br> cd ~/yocto-project mkdir -p meta-custom-distro/conf mkdir -p meta-custom-distro/recipes-core/images mkdir -p meta-custom-distro/recipes-core/packagegroups mkdir -p meta-custom-distro/recipes-apps mkdir -p meta-custom-distro/recipes-kernel/linux <br> ==== layer.confの作成 ==== レイヤ設定ファイルを作成する。<br> vi ~/yocto-project/meta-custom-distro/conf/layer.conf <br> # レイヤ設定ファイル # meta-custom-distro レイヤ # レシピとアペンドファイルの収集パターン BBPATH .= ":${LAYERDIR}" BBFILES += " \ ${LAYERDIR}/recipes-*/*/*.bb \ ${LAYERDIR}/recipes-*/*/*.bbappend \ " BBFILE_COLLECTIONS += "meta-custom-distro" BBFILE_PATTERN_meta-custom-distro = "^${LAYERDIR}/" # レイヤの優先度(数値が大きいほど優先) BBFILE_PRIORITY_meta-custom-distro = "7" # 互換性のあるYoctoバージョン LAYERCOMPAT_meta-custom-distro = "scarthgap" # レイヤの依存関係 LAYERDEPENDS_meta-custom-distro = "core" <br> ==== ビルド設定へのレイヤ追加 ==== bblayers.confにカスタムレイヤを追加する。<br> vi ~/yocto-project/build/conf/bblayers.conf <br> BBLAYERS ?= " \ /home/user/yocto-project/poky/meta \ /home/user/yocto-project/poky/meta-poky \ /home/user/yocto-project/poky/meta-yocto-bsp \ /home/user/yocto-project/meta-custom-distro \ " <br> または、bitbake-layersコマンドを使用する。<br> cd ~/yocto-project/build bitbake-layers add-layer ../meta-custom-distro <br> ==== BitBakeコマンド ==== * bitbake <image-name> *: イメージのビルド * bitbake -c <task> <recipe> *: 特定タスクの実行 * bitbake -e <recipe> *: レシピの変数展開を表示 * bitbake -g <recipe> *: 依存関係グラフの生成 * bitbake-layers show-layers *: レイヤ一覧の表示 * bitbake-layers show-recipes *: レシピ一覧の表示 * bitbake -s *: 利用可能なレシピの表示 <br><br> == カスタムマシン設定の作成 == 例えば、Cortex-A53向けのカスタムマシン設定を行う場合を示す。<br> <br> ==== マシン設定ディレクトリの作成 ==== 任意のアーキテクチャ向けのカスタムマシン設定を作成する。<br> mkdir -p ~/yocto-project/meta-custom-distro/conf/machine vi ~/yocto-project/meta-custom-distro/conf/machine/custom-cortexa53.conf <br> ==== マシン設定ファイルの内容 ==== # custom-cortexa53.conf # Cortex-A53ベースのカスタムマシン設定 # マシンの説明 #@TYPE: Machine #@NAME: Custom Cortex-A53 Machine #@DESCRIPTION: Custom machine configuration for Cortex-A53 based boards # 汎用ARM64設定をインクルード require conf/machine/include/arm/armv8a/tune-cortexa53.inc # マシン固有の設定 MACHINE_FEATURES = "usbhost vfat ext2 screen alsa" # カーネル設定 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" KERNEL_IMAGETYPE = "Image" KERNEL_DEVICETREE = "" # ブートローダー設定 PREFERRED_PROVIDER_virtual/bootloader ?= "u-boot" UBOOT_MACHINE = "qemu_arm64_defconfig" # シリアルコンソール設定 SERIAL_CONSOLES = "115200;ttyAMA0" # ルートファイルシステム設定 IMAGE_FSTYPES = "tar.gz ext4 wic" WKS_FILE = "sdimage-bootpart.wks" # QEMU設定(エミュレーション用) MACHINE_EXTRA_RRECOMMENDS += "kernel-modules" # イメージオーバーヘッド設定 IMAGE_ROOTFS_EXTRA_SPACE = "262144" <br> ==== local.confでのマシン指定 ==== ビルド設定でカスタムマシンを指定する。<br> vi ~/yocto-project/build/conf/local.conf <br> # カスタムマシンを使用 MACHINE = "custom-cortexa53" <br><br> == カスタムディストリビューション設定の作成 == ==== ディストリビューション設定ディレクトリの作成 ==== カスタムディストリビューション設定を作成する。<br> mkdir -p ~/yocto-project/meta-custom-distro/conf/distro vi ~/yocto-project/meta-custom-distro/conf/distro/custom-embedded.conf <br> ==== ディストリビューション設定ファイルの内容 ==== # custom-embedded.conf # カスタム組み込みLinuxディストリビューション設定 # Pokyディストロ設定をベースとする require conf/distro/poky.conf # ディストリビューション名とバージョン DISTRO = "custom-embedded" DISTRO_NAME = "Custom Embedded Linux" DISTRO_VERSION = "1.0.0" DISTRO_CODENAME = "stable" # メンテナ情報 MAINTAINER = "Your Name <your.email@example.com>" # ディストリビューション機能 DISTRO_FEATURES = "acl argp ext2 ipv4 ipv6 largefile usbhost wifi \ systemd usrmerge" # systemdを使用 DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit" VIRTUAL-RUNTIME_init_manager = "systemd" VIRTUAL-RUNTIME_initscripts = "systemd-compat-units" # パッケージマネージャ設定 PACKAGE_CLASSES = "package_rpm" # SDKの設定 SDK_VENDOR = "-customsdk" SDK_VERSION = "${DISTRO_VERSION}" SDK_NAME = "${DISTRO}-${TCLIBC}-${SDKMACHINE}-${IMAGE_BASENAME}-${TUNE_PKGARCH}-${MACHINE}" # ビルド最適化 INHERIT += "rm_work" # ライセンス許可設定 LICENSE_FLAGS_ACCEPTED = "commercial" <br> ==== local.confでのディストリビューション指定 ==== ビルド設定でカスタムディストリビューションを指定する。<br> vi ~/yocto-project/build/conf/local.conf <br> # カスタムディストリビューションを使用 DISTRO = "custom-embedded" <br><br> == カスタムレシピの作成 == ==== アプリケーションレシピの作成 ==== サンプルアプリケーションのレシピを作成する。<br> mkdir -p ~/yocto-project/meta-custom-distro/recipes-apps/hello-custom/files vi ~/yocto-project/meta-custom-distro/recipes-apps/hello-custom/hello-custom_1.0.bb <br> # hello-custom_1.0.bb # サンプルアプリケーションレシピ SUMMARY = "Custom Hello World Application" DESCRIPTION = "A simple hello world application for the custom distribution" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" SRC_URI = "file://hello-custom.c \ file://Makefile" S = "${WORKDIR}" do_compile() { oe_runmake } do_install() { install -d ${D}${bindir} install -m 0755 hello-custom ${D}${bindir}/ } <br> ===== ソースコードの作成 ===== hello-custom.cを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-apps/hello-custom/files/hello-custom.c <br> <syntaxhighlight lang="c"> #include <stdio.h> int main(int argc, char *argv[]) { printf("Hello from Custom Embedded Linux!\n"); printf("Build Date: %s %s\n", __DATE__, __TIME__); return 0; } </syntaxhighlight> <br> Makefileを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-apps/hello-custom/files/Makefile <br> <syntaxhighlight lang="make"> CC ?= gcc CFLAGS ?= -Wall -O2 all: hello-custom hello-custom: hello-custom.c $(CC) $(CFLAGS) -o $@ $< clean: rm -f hello-custom </syntaxhighlight> <br> ==== base-filesのbbappend作成 ==== base-filesを拡張して、カスタムシステム情報を追加する。<br> mkdir -p ~/yocto-project/meta-custom-distro/recipes-core/base-files vi ~/yocto-project/meta-custom-distro/recipes-core/base-files/base-files_%.bbappend <br> # base-files_%.bbappend # base-filesレシピの拡張 FILESEXTRAPATHS:prepend := "${THISDIR}/files:" do_install:append() { # カスタムissueファイルを作成 echo "Custom Embedded Linux ${DISTRO_VERSION}" > ${D}${sysconfdir}/issue echo "Kernel \r on \m" >> ${D}${sysconfdir}/issue echo "" >> ${D}${sysconfdir}/issue # /etc/os-releaseをカスタマイズ echo 'NAME="${DISTRO_NAME}"' > ${D}${sysconfdir}/os-release echo 'VERSION="${DISTRO_VERSION}"' >> ${D}${sysconfdir}/os-release echo 'ID=custom-embedded' >> ${D}${sysconfdir}/os-release echo 'VERSION_ID="${DISTRO_VERSION}"' >> ${D}${sysconfdir}/os-release echo 'PRETTY_NAME="${DISTRO_NAME} ${DISTRO_VERSION}"' >> ${D}${sysconfdir}/os-release } <br> ==== カーネル設定のbbappend作成 ==== カーネル設定をカスタマイズするbbappendを作成する。<br> mkdir -p ~/yocto-project/meta-custom-distro/recipes-kernel/linux/files vi ~/yocto-project/meta-custom-distro/recipes-kernel/linux/linux-yocto_%.bbappend <br> # linux-yocto_%.bbappend # カーネル設定の拡張 FILESEXTRAPATHS:prepend := "${THISDIR}/files:" SRC_URI += "file://custom-kernel.cfg" # カーネル設定フラグメント KERNEL_CONFIG_FRAGMENTS += "${WORKDIR}/custom-kernel.cfg" <br> カーネル設定フラグメントを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-kernel/linux/files/custom-kernel.cfg <br> # カスタムカーネル設定 CONFIG_LOCALVERSION="-custom" CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y CONFIG_HIGH_RES_TIMERS=y CONFIG_PREEMPT=y CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y CONFIG_CGROUPS=y CONFIG_NAMESPACES=y <br> ==== パッケージグループの作成 ==== 基本パッケージグループを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-core/packagegroups/packagegroup-custom-base.bb <br> # packagegroup-custom-base.bb # 基本パッケージグループ SUMMARY = "Custom Base Package Group" DESCRIPTION = "Essential packages for the custom embedded distribution" inherit packagegroup RDEPENDS:${PN} = " \ base-files \ base-passwd \ busybox \ sysvinit-inittab \ systemd \ systemd-compat-units \ udev \ util-linux \ e2fsprogs \ dosfstools \ iproute2 \ openssh \ openssl \ ca-certificates \ " <br> 開発用パッケージグループを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-core/packagegroups/packagegroup-custom-dev.bb <br> # packagegroup-custom-dev.bb # 開発用パッケージグループ SUMMARY = "Custom Development Package Group" DESCRIPTION = "Development and debugging tools" inherit packagegroup RDEPENDS:${PN} = " \ gdb \ strace \ ltrace \ tcpdump \ iperf3 \ htop \ nano \ vim \ git \ cmake \ make \ gcc \ g++ \ binutils \ python3 \ python3-pip \ " <br><br> == カスタムイメージの作成 == ==== 最小イメージの作成 ==== 最小構成のイメージレシピを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-core/images/custom-image-minimal.bb <br> # custom-image-minimal.bb # 最小構成イメージ SUMMARY = "Custom Minimal Image" DESCRIPTION = "A minimal image for the custom embedded distribution" LICENSE = "MIT" inherit core-image IMAGE_FEATURES += "ssh-server-openssh" IMAGE_INSTALL = " \ packagegroup-core-boot \ packagegroup-custom-base \ hello-custom \ kernel-modules \ " # ルートファイルシステムサイズ IMAGE_ROOTFS_SIZE ?= "262144" IMAGE_ROOTFS_EXTRA_SPACE = "131072" # デフォルトロケール IMAGE_LINGUAS = "en-us" <br> ==== 開発用イメージの作成 ==== 開発ツールを含むイメージレシピを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-core/images/custom-image-dev.bb <br> # custom-image-dev.bb # 開発用イメージ SUMMARY = "Custom Development Image" DESCRIPTION = "A development image with debugging tools" LICENSE = "MIT" # 最小イメージをベースとする require custom-image-minimal.bb IMAGE_FEATURES += "debug-tweaks dev-pkgs dbg-pkgs tools-debug tools-sdk" IMAGE_INSTALL += " \ packagegroup-custom-dev \ packagegroup-core-buildessential \ " # 開発用に追加のスペースを確保 IMAGE_ROOTFS_EXTRA_SPACE = "524288" <br> ==== 本番用イメージの作成 ==== 本番環境向けのイメージレシピを作成する。<br> vi ~/yocto-project/meta-custom-distro/recipes-core/images/custom-image-production.bb <br> # custom-image-production.bb # 本番用イメージ SUMMARY = "Custom Production Image" DESCRIPTION = "A production-ready image with security hardening" LICENSE = "MIT" # 最小イメージをベースとする require custom-image-minimal.bb # セキュリティ強化 IMAGE_FEATURES:remove = "debug-tweaks" IMAGE_FEATURES += "read-only-rootfs" # 追加パッケージ IMAGE_INSTALL += " \ watchdog \ logrotate \ " # 本番用の最適化 EXTRA_IMAGE_FEATURES = "" # パスワード設定を強制 INHERIT += "extrausers" EXTRA_USERS_PARAMS = "usermod -P 'rootpassword' root;" <br><br> == ビルドの実行と確認 == ==== ビルドの開始 ==== イメージをビルドする。<br> cd ~/yocto-project/build source ../poky/oe-init-build-env . # 最小イメージのビルド bitbake custom-image-minimal <br> ==== ビルドの監視 ==== ビルド状況を監視する方法は以下の通りである。<br> <br> # 別ターミナルでログを監視 tail -f ~/yocto-project/build/tmp/log/cooker/custom-cortexa53/console-latest.log # ビルドタスクの確認 bitbake -g custom-image-minimal cat pn-buildlist <br> ==== ビルド成果物の確認 ==== ビルドが完了すると、以下のディレクトリに成果物が生成される。<br> ls -la ~/yocto-project/build/tmp/deploy/images/custom-cortexa53/ <br> 主な成果物は以下の通りである。<br> custom-image-minimal-custom-cortexa53.tar.gz : ルートファイルシステム (tar.gz) custom-image-minimal-custom-cortexa53.ext4 : ルートファイルシステム (ext4) custom-image-minimal-custom-cortexa53.wic : ブート可能なディスクイメージ Image : Linuxカーネルイメージ modules-custom-cortexa53.tgz : カーネルモジュール <br><br> == 一般的なビルドエラーと対処法 == ==== do_fetchエラー ==== ソースコードのダウンロードに失敗した場合は、以下に示す事柄を確認する。<br> # ネットワーク接続の確認 ping git.yoctoproject.org # プロキシ設定の確認(必要な場合) export HTTP_PROXY="http://proxy.example.com:8080" export HTTPS_PROXY="http://proxy.example.com:8080" <br> ==== do_compileエラー ==== コンパイルエラーの場合は、ログファイルを確認する。<br> # エラーログの確認 cat ~/yocto-project/build/tmp/work/*/package-name/*/temp/log.do_compile # 依存関係の確認 bitbake -e package-name | grep ^DEPENDS <br> ==== ディスク容量不足 ==== ビルドには大量のディスク容量が必要である。(最低50[GB]を推奨する)<br> # ディスク使用量の確認 df -h ~/yocto-project # 不要なビルド成果物の削除 bitbake -c cleanall package-name <br><br> == デプロイメントとテスト == ==== QEMUでのテスト ==== QEMUを使用してイメージをテストする。<br> cd ~/yocto-project/build runqemu custom-cortexa53 nographic <br> QEMUを終了する場合は、[Ctrl] + [A]キーを押下した後、[X]キーを押下する。<br> <br> ==== WICイメージの書き込み ==== WICイメージをSDカードに書き込む。<br> # SDカードデバイスの確認 lsblk # イメージの書き込み # sdXは実際のデバイス名に置換すること sudo dd if=~/yocto-project/build/tmp/deploy/images/custom-cortexa53/custom-image-minimal-custom-cortexa53.wic \ of=/dev/sdX bs=4M status=progress conv=fsync sync <br> <u>※注意</u><br> <u>ddコマンドは誤ったデバイスを指定するとデータが失われるため、デバイス名を十分に確認すること。</u><br> <br> ==== NFSブートの設定 ==== 開発時にはNFSブートを使用すると便利である。<br> <br> ホストPCでNFSサーバを設定する。<br> # NFSサーバのインストール sudo zypper install nfs-kernel-server <br> エクスポート設定を行う。<br> sudo vi /etc/exports <br> /home/<ユーザ名>/yocto-project/build/tmp/deploy/images/custom-cortexa53/custom-image-minimal-custom-cortexa53-*.rootfs *(rw,no_root_squash,no_subtree_check) <br> NFSサーバを起動する。<br> sudo systemctl enable nfs-server sudo systemctl start nfs-server sudo exportfs -a <br> ==== SDKの生成 ==== クロスコンパイル用のSDKを生成する。<br> bitbake custom-image-minimal -c populate_sdk <br> SDKは以下のディレクトリに生成される。<br> ls ~/yocto-project/build/tmp/deploy/sdk/ <br> SDKのインストールと使用方法は以下の通りである。<br> # SDKのインストール ./poky-glibc-x86_64-custom-image-minimal-cortexa53-custom-cortexa53-toolchain-*.sh # 環境のセットアップ source /opt/poky/*/environment-setup-cortexa53-poky-linux # クロスコンパイルの確認 $CC --version $CC -o hello hello.c <br><br> == 保守とアップデート == ==== バージョン管理 ==== カスタムレイヤをGitで管理することを推奨する。<br> cd ~/yocto-project/meta-custom-distro git init git add . git commit -m "Initial commit of custom distribution layer" <br> タグを使用してリリースを管理する。<br> git tag -a v1.0.0 -m "Release version 1.0.0" git push origin v1.0.0 <br> ==== Yoctoバージョンのアップグレード ==== Yoctoの新しいLTSバージョンにアップグレードする手順は以下の通りである。<br> cd ~/yocto-project/poky git fetch --all git checkout scarthgap # または新しいLTSブランチ # カスタムレイヤのLAYERCOMPATを更新 vi ~/yocto-project/meta-custom-distro/conf/layer.conf <br> LAYERCOMPAT_meta-custom-distro = "scarthgap" # 新しいバージョンに更新 <br> ==== セキュリティアップデート ==== CVE (脆弱性) チェックを有効にする。<br> vi ~/yocto-project/build/conf/local.conf <br> # CVEチェックを有効化 INHERIT += "cve-check" <br> CVEレポートを生成する。<br> bitbake custom-image-minimal -c cve_check # レポートの確認 cat ~/yocto-project/build/tmp/deploy/cve/custom-image-minimal-cve.txt <br> ==== ドキュメントの整備 ==== 以下に示すドキュメントを整備することを推奨する。<br> # レイヤのREADME vi ~/yocto-project/meta-custom-distro/README.md <br> # meta-custom-distro ## 概要 Custom Embedded Linux ディストリビューション用のYoctoレイヤ ## 対応Yoctoバージョン - Scarthgap (LTS) ## 依存レイヤ - poky/meta - poky/meta-poky - poky/meta-yocto-bsp ## 使用方法 1. ビルド環境の初期化 source poky/oe-init-build-env build 2. レイヤの追加 bitbake-layers add-layer ../meta-custom-distro 3. local.confの設定 MACHINE = "custom-cortexa53" DISTRO = "custom-embedded" 4. ビルドの実行 bitbake custom-image-minimal ## 含まれるレシピ - custom-image-minimal : 最小構成イメージ - custom-image-dev : 開発用イメージ - custom-image-production : 本番用イメージ - hello-custom : サンプルアプリケーション - packagegroup-custom-base : 基本パッケージグループ - packagegroup-custom-dev : 開発用パッケージグループ ## ライセンス MIT License <br><br> == 参考情報 == * Yocto Project公式ドキュメント *: https://docs.yoctoproject.org/ * BitBakeユーザマニュアル *: https://docs.yoctoproject.org/bitbake/ * OpenEmbeddedレイヤインデックス *: https://layers.openembedded.org/ <br><br> {{#seo: |title={{PAGENAME}} : Exploring Electronics, SUSE Linux and RHEL | MochiuWiki |keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,RHEL,Red Hat,Red Hat Enterprise Linux,RHEL 10,uCLnux,Podman,Yocto,Yocto Project,BitBake,Poky,OpenEmbedded,Embedded Linux,組み込みLinux,電気回路,電子回路,基板,プリント基板 |description={{PAGENAME}} - 電子回路、SUSE LinuxおよびRHELに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits, SUSE Linux and RHEL |image=/resources/assets/MochiuLogo_Single_Blue.png }} __FORCETOC__ [[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Qt]]
設定 - Yocto
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse