1
5

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 3 years have passed since last update.

BeagleBoneBlackで学ぶYoctoLinuxの基礎 (1) ~ Ubuntuインストールからbitbakeまで ~ 

Last updated at Posted at 2021-03-20

あらまし

数年ぶりに組み込みLinuxに触ったので、その内容をメモしたいと思う。

環境は以下の通り、Bitbake等はVMware上で動作するUbuntuで実行した。

項目 内容
HostOS Win10
GuestOS Ubuntu 18.04.5 LTS
ボード BeagleBoneBlack
Boot Device SDカード

Ubuntu Setup

まずは、VMware上でUbuntuに必要な環境一式をインストールする。

  • Yocto Project Reference Manualに書かれているパッケージ一式をインストールする。
  • このほかに、リモートデバッグ環境構築用にcmake-qt-guisshpassWiresharkVSCode等をインストールした。
  • シリアルコンソール用にpicocomをインストールした。Windowsでシリアルコンソールを使う場合は不要となる。
  • viが苦手なのでエディタはnanoを利用したが、お好みで。
Ubuntu
> sudo apt install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm python-crypto cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libssl-dev
> sudo apt install cmake-qt-gui picocom sshpass wireshark
> sudo apt install nano htop mc tree
> sudo snap install --classic code

Bitbakeの準備

gitで各環境を取得する

まずは、~/以下に作業フォルダBBBを作成する。

Ubuntu
> cd ~
> mkdir BBB

YoctoのバージョンはYocto Releaseを参照し、LTSとなっているDunfellを選択した。

Ubuntu
> git clone git://git.yoctoproject.org/poky.git -b dunfell
> cd ./poky
> git clone git://git.yoctoproject.org/meta-security.git -b dunfell 
> git clone git://git.openembedded.org/meta-openembedded -b dunfell
> git clone git://git.yoctoproject.org/meta-ti -b dunfell 
> git clone git://git.yoctoproject.org/meta-arm -b dunfell 

まずは、source ~/BBB/poky/oe-init-build-envで実施する。これにより、環境変数一式が読み込まれ、なければBuildディレクトリ等が作成される。

local.confの作成

~/BBB/poky/build/conf以下にlocal.confのひな形が作成されるので、以下の通り変更した。 (コメントアウト部分は割愛)

設定項目 概要
MACHINE beagleboneを設定した。ネットの情報等によると、beaglebone-yoctoでも可能とのこと。
DL_DIR / SSTATE_DIR お作法的に設定した。
##configure username and password ログインパスワードの設定。
IMAGE_FSTYPES SDカードに直接書き込むことを想定したため、wicを選択した。標準では、wic.tarが出力された。
追加Image gdbserver / ssh-server 等を追加。
# add sdk on Yocto / not for kernel build Yocto側でセルフビルドしたくなった時のためにあらかじめ追加しておいた。ただし、KernelのセルフビルドはYoctoは非対応らしい。
local.conf
MACHINE ??= "beaglebone"
DL_DIR ?= "/home/user/Yocto/downloads"
SSTATE_DIR ?= "/home/user/Yocto/sstate"
#TMPDIR = "${TOPDIR}/tmp"
DISTRO ?= "poky"
PACKAGE_CLASSES ?= "package_rpm"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
USER_CLASSES ?= "buildstats image-mklibs image-prelink"
PATCHRESOLVE = "noop"
BB_DISKMON_DIRS ??= "\
    STOPTASKS,${TMPDIR},1G,100K \
    STOPTASKS,${DL_DIR},1G,100K \
    STOPTASKS,${SSTATE_DIR},1G,100K \
    STOPTASKS,/tmp,100M,100K \
    ABORT,${TMPDIR},100M,1K \
    ABORT,${DL_DIR},100M,1K \
    ABORT,${SSTATE_DIR},100M,1K \
    ABORT,/tmp,10M,1K"

CONF_VERSION = "1"

## configure username and password
INHERIT_append = " extrausers"
EXTRA_USERS_PARAMS = "usermod -P root root; useradd -P user user;"

# configure build image to wic
IMAGE_FSTYPES = "wic"

# add additional image
## gdbserver for remote debugging
IMAGE_INSTALL_append = " gdbserver"

## ssh server for remote login
EXTRA_IMAGE_FEATURES += "ssh-server-openssh"

## text editor and mc
IMAGE_INSTALL_append = " nano"
IMAGE_INSTALL_append = " mc"

# add sdk on Yocto / not for kernel build
IMAGE_FEATURES += "dev-pkgs tools-debug"
IMAGE_INSTALL_append = " packagegroup-core-buildessential "
TOLLCHAIN_HOST_TASK += "nativesdk-cmake"

bblaypers.conf

BBLAYERSのパスは絶対パス指定が必要。

bblayers.conf
# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/user/BBB/poky/meta \
  /home/user/BBB/poky/meta-poky \
  /home/user/BBB/poky/meta-yocto-bsp \
  /home/user/BBB/poky/meta-openembedded/meta-oe \
  /home/user/BBB/poky/meta-openembedded/meta-python \
  /home/user/BBB/poky/meta-openembedded/meta-networking \
  /home/user/BBB/poky/meta-ti \
  /home/user/BBB/poky/meta-arm/meta-arm \
  /home/user/BBB/poky/meta-arm/meta-arm-toolchain \
  "

Kernel Buildの実行

YoctoのイメージとSDKの作成。

Ubuntu
> bitbake core-image-minimal
> bitbake core-image-minimal -c populate_sdk

Bitbakeが成功すると、~/BBB/poky/build/tmp/deploy/beaglebone/images以下に各イメージが生成され、~/BBB/poky/build/tmp/deploy/sdkにSDKが生成される。

Ubuntu
user@ubuntu:~/BBB/poky/build/tmp/deploy$ tree -L 1
.
├── images
├── licenses
├── rpm
└── sdk

まとめ

BBB上で動作するYocto環境を構築した。
標準のレシピに対して、デバッグ環境等を追加した。

1
5
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
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?