0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

raspberrypi3b用yoctoイメージを作成①dunfell core-image-minimal編

Last updated at Posted at 2022-08-13

目的

最近のARMマイコンではLinuxOSを使用することが多い。raspberrypiのように有名なボードの場合は多くの機能を盛り込んだ専用のOSイメージが提供されているが、マイコンという特性上、必要な機能を最低限に抑え、かつ必要な機能を後付けしたりということが必要であったりする。
yocotというLinuxOSを使用することで、機能が最小限かつオリジナルのOSイメージを作成することができる。

今回はraspberrypi3bを対象にyoctoのOSイメージの作成をしてみることにした。

作成環境・対象イメージ

PC環境

OS:ubuntu20.4LTS
CPU:Corei5 3470
メモリ:8GB
HDD:2TB

作成するイメージ

yocto3.1.17(dunfell)
core-image-minimal

対象機器

raspberrypi3b

事前準備

1.各種ソフトウェアインストール

$ sudo apt install git
$ sudo apt install bmap-tools 
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo \
gcc-multilib build-essential chrpath socat cpio python python3 \
python3-pip python3-pexpect xz-utils debianutils iputils-ping \
python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 \
xterm p7zip-full

2.Ubuntuをリモートデスクトップ接続設定する場合(必要であれば)

別のWindowsPCからUbuntuPCへリモートデスクトップ接続する場合は以下のようにxdrpをインストールします。

$ sudo apt install xdrp

3.Emacsをインストール(必要であれば)

Ubuntu20.4LTSに標準でインストールされているviエディタやnanoエディタでOKという方は省略してOK。

$ sudo apt install emacs

4.vsftpdをインストール(必要であれば)

$ sudo apt install vsftpd

gitconfig設定

$ git config --global user.email "xxxxxxx@yahoo.co.jp"
$ git config --global user.name "xxxxxxx"
$ git config --global url."https://".insteadOf git://
$ git config --global url."https://git.yoctoproject.org/git/".insteadOf git://git.yoctoproject.org/
$ git config --global url."https://anongit.freedesktop.org/git/".insteadOf git://anongit.freedesktop.org/
$ git config --global http.postBuffer 54288000
$ git config -l

イメージ作成手順

dunfellフォルダを作成

$ mkdir dunfell
$ cd dunfell

poky meta-raspberrypi meta-openembedded をgitからダウンロード

$ git clone -b dunfell git://git.yoctoproject.org/poky.git
Cloning into 'poky'...
remote: Enumerating objects: 568269, done.
remote: Counting objects: 100% (689/689), done.
remote: Compressing objects: 100% (315/315), done.
remote: Total 568269 (delta 514), reused 405 (delta 371), pack-reused 567580
Receiving objects: 100% (568269/568269), 184.13 MiB | 5.36 MiB/s, done.
Resolving deltas: 100% (412811/412811), done.
$ git clone -b dunfell https://github.com/agherzan/meta-raspberrypi.git
Cloning into 'meta-raspberrypi'...
remote: Enumerating objects: 9964, done.
remote: Counting objects: 100% (1406/1406), done.
remote: Compressing objects: 100% (696/696), done.
remote: Total 9964 (delta 775), reused 1092 (delta 667), pack-reused 8558
Receiving objects: 100% (9964/9964), 2.22 MiB | 7.48 MiB/s, done.
Resolving deltas: 100% (5184/5184), done.
$ git clone -b dunfell git://git.openembedded.org/meta-openembedded
Cloning into 'meta-openembedded'...

環境変数を設定

$ source poky/oe-init-build-env 

You had no conf/local.conf file. This configuration file has therefore been
created for you with some default values. You may wish to edit it to, for
example, select a different MACHINE (target hardware). See conf/local.conf
for more information as common configuration options are commented.

You had no conf/bblayers.conf file. This configuration file has therefore been
created for you with some default values. To add additional metadata layers
into your configuration please add entries to conf/bblayers.conf.

The Yocto Project has extensive documentation about OE including a reference
manual which can be found at:
    https://docs.yoctoproject.org

For more information about OpenEmbedded see their website:
    https://www.openembedded.org/


### Shell environment set up for builds. ###

You can now run 'bitbake <target>'

Common targets are:
    core-image-minimal
    core-image-sato
    meta-toolchain
    meta-ide-support

You can also run generated qemu images with a command like 'runqemu qemux86'

Other commonly useful commands are:
 - 'devtool' and 'recipetool' handle common recipe tasks
 - 'bitbake-layers' handles common layer tasks
 - 'oe-pkgdata-util' handles common target package tasks

レイヤを追加

$ bitbake-layers -h
NOTE: Starting bitbake server...
usage: bitbake-layers [-d] [-q] [-F] [--color COLOR] [-h] <subcommand> ...

BitBake layers utility

optional arguments:
  -d, --debug           Enable debug output
  -q, --quiet           Print only errors
  -F, --force           Force add without recipe parse verification
  --color COLOR         Colorize output (where COLOR is auto, always, never)
  -h, --help            show this help message and exit

subcommands:
  <subcommand>
    add-layer           Add one or more layers to bblayers.conf.
    remove-layer        Remove one or more layers from bblayers.conf.
    flatten             flatten layer configuration into a separate output
                        directory.
    layerindex-fetch    Fetches a layer from a layer index along with its
                        dependent layers, and adds them to conf/bblayers.conf.
    layerindex-show-depends
                        Find layer dependencies from layer index.
    show-layers         show current configured layers.
    show-overlayed      list overlayed recipes (where the same recipe exists
                        in another layer)
    show-recipes        list available recipes, showing the layer they are
                        provided by
    show-appends        list bbappend files and recipe files they apply to
    show-cross-depends  Show dependencies between recipes that cross layer
                        boundaries.
    create-layer        Create a basic layer

Use bitbake-layers <subcommand> --help to get help on a specific command
$ bitbake-layers add-layer \
> /home/s8220jp/dunfell/meta-openembedded/meta-oe \
> /home/s8220jp/dunfell/meta-openembedded/meta-multimedia \
> /home/s8220jp/dunfell/meta-openembedded/meta-networking \
> /home/s8220jp/dunfell/meta-openembedded/meta-python \
> /home/s8220jp/dunfell/meta-raspberrypi
NOTE: Starting bitbake server...

local.confの末尾に以下行を追加した。
ENABLE_UART = "1"でUART通信を有効に設定。
RPI_USE_U_BOOT = "1"でraspberrypiのu_booot設定を有効に設定。

$dunfell\build\conf\local.conf
MACHINE = "raspberrypi3"
ENABLE_UART = "1"
RPI_USE_U_BOOT = "1"

core-image-minimalでイメージを作成する

$ bitbake core-image-minimal
Parsing recipes: 100% |##########################################| Time: 0:01:24
Parsing of 2199 .bb files complete (0 cached, 2199 parsed). 3297 targets, 142 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "1.46.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "ubuntu-20.04"
TARGET_SYS           = "arm-poky-linux-gnueabi"
MACHINE              = "raspberrypi3"
DISTRO               = "poky"
DISTRO_VERSION       = "3.1.17"
TUNE_FEATURES        = "arm vfp cortexa7 neon vfpv4 thumb callconvention-hard"
TARGET_FPU           = "hard"
meta                 
meta-poky            
meta-yocto-bsp       = "dunfell:17c23e485e472baf117811688d172038b6f2130d"
meta-oe              
meta-multimedia      
meta-networking      
meta-python          = "dunfell:52cee67833d1975a5bd52e4556c4cd312425a017"
meta-raspberrypi     = "dunfell:2081e1bb9a44025db7297bfd5d024977d42191ed"

NOTE: Fetching uninative binary shim http://downloads.yoctoproject.org/releases/uninative/3.6/x86_64-nativesdk-libc-3.6.tar.xz;sha256sum=9bfc4c970495b3716b2f9e52c4df9f968c02463a9a95000f6657fbc3fde1f098 (will check PREMIRRORS first)
Initialising tasks: 100% |#######################################| Time: 0:00:03
Sstate summary: Wanted 1178 Found 0 Missed 1178 Current 0 (0% match, 0% complete)
NOTE: Executing Tasks
WARNING: gnu-config-native-20200117+gitAUTOINC+5256817ace-r0 do_fetch: Failed to fetch URL git://git.savannah.gnu.org/git/config.git;protocol=https;branch=master, attempting MIRRORS if available
NOTE: Tasks Summary: Attempted 3203 tasks of which 8 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message shown.

/dunfell/build/tmp/deploy/images/raspberrypi3にcore-image-minimal-raspberrypi3.wic.bz2が生成できた。
イメージ作成完了まで半日程度かかります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?