前回からの続き。
前回作成したイメージに、 “Hello, World!” をコンソールへ表示するシェルスクリプトを追加する。
追加するソースコードは mikoto2000/helloworld.sh 。
ファイル編集に必要なパッケージをインストール
レシピ等の定義ファイルを編集するのに vim を使うのでインストール。
レシピ作成
レシピ編集
レシピ作成で生成される helloworld_git.bb
を編集する。
・ helloworld_git.bb
do_configure
, do_compile
, do_install
内に、それぞれのフェーズで実行するコマンドを列挙する。
今回は、シェルスクリプトを /usr/bin
へコピーするだけ。
また、コピー対象ファイルを FILES_${PN}
変数へ列挙する。 FILES_${PN}
と ${D}
に展開されたファイルを確認し、不整合があった場合にエラーとなる。
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
# your responsibility to verify that the values are complete and correct.
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2e01c4af99b331098518b1d669b8a696"
SRC_URI = "git://github.com/mikoto2000/helloworld.sh;protocol=https"
# Modify these as desired
PV = "1.0+git${SRCPV}"
SRCREV = "a078be941b9f55654a1269f6de368fa11e5a7a25"
S = "${WORKDIR}/git"
FILES_${PN} = "${bindir}"
# NOTE: no Makefile found, unable to determine what needs to be done
do_configure () {
# Specify any needed configure commands here
:
}
do_compile () {
# Specify compilation commands here
:
}
do_install () {
# Specify install commands here
:
install -D -m 755 ./helloworld.sh ${D}/${bindir}/helloworld.sh
}
レシピのビルド
レイヤーを作成し、レシピをレイヤーに追加
bitbake-layers create-layer "$BUILDDIR/meta-helloworld"
bitbake-layers add-layer "$BUILDDIR/meta-helloworld"
devtool finish helloworld meta-helloworld
echo 'CORE_IMAGE_EXTRA_INSTALL += "helloworld"' >> conf/local.conf
レイヤーを追加したイメージをビルド
ビルド成果物を qemu-system-arm
で実行
root
でログインして helloworld.sh
コマンドが実行できることを確認。
qemu-system-arm -M virt -m 1024 \
-kernel tmp/deploy/images/qemuarm/zImage \
-drive if=none,file=tmp/deploy/images/qemuarm/core-image-minimal-qemuarm.ext4,format=raw,id=hd \
-device virtio-blk-device,drive=hd \
-netdev user,id=usernet \
-device virtio-net-device,netdev=usernet \
-append "root=/dev/vda" \
-nographic -no-reboot
レシピの再修正
以下のような流れになるはず。
devtool modify -n helloworld /work/poky/build/workspace/sources/helloworld
# ファイル修正
...(snip)
# ビルド
devtool build helloworld
# レシピ修正完了
devtool finish helloworld meta-helloworld
以上。
0 件のコメント:
コメントを投稿