2022/12/13

mender-yocto build test.

  • 必須要enable mender-client 的 dbus 功能。
  • 數於 add-on
  • mender-connect 有 opensource,有 build from source 的說明
這一篇有 mender 的 yocto for rpi3 的 build instruction。
build 完,dd 發現沒有 enable ssh server。
參考這一篇,選 target : core-image-full-cmdline 就會包含 ssh server。
或是修改 build/conf/local.conf ,用 EXTRA_IMAGE_FEATURES 變數加上 ssh-server-openssh

其實..依照說明O:
export BRANCH="dunfell"
source setup-environment raspberrypi
之後,就會進入 build 目錄,然後顯示:
You can now run 'bitbake <target>'

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

其中 core-image-sato 就是有dropbear (小型 ssh server) 的 config。

core-image-sato 的話,出現 Error:
ERROR: File system image of partition None is larger (417792 kB) than its allowed size 204800 kB
sato 好像包含x11, 太大了。
在 build/conf/local.conf 中,comments 有:
 Mender storage configuration
#
# More details on these variables is available at
#    https://docs.mender.io/devices/yocto-project/partition-configuration#configuring-storage
#
# Also, please be sure to check other config files as other
# layers, config fragments, etc may attempt to set values
# for specific platforms.  Using "bitbake -e "
# can help determine which files are setting these values
# in a given configuration.
#
# MENDER_STORAGE_TOTAL_SIZE_MB = "2048"
# MENDER_BOOT_PART_SIZE_MB = "16"
# MENDER_DATA_PART_SIZE_MB = "1024"
# MENDER_STORAGE_DEVICE = "/dev/mmcblk0"
# MENDER_BOOT_PART = "${MENDER_STORAGE_DEVICE_BASE}1"
# MENDER_DATA_PART = "${MENDER_STORAGE_DEVICE_BASE}4"
# MENDER_ROOTFS_PART_A = "${MENDER_STORAGE_DEVICE_BASE}2"
# MENDER_ROOTFS_PART_B = "${MENDER_STORAGE_DEVICE_BASE}3"
可能可以用來改 partition 大小。
加入 MENDER_STORAGE_TOTAL_SIZE_MB = "4096" 後,好像就 build OK 了。

這個 target run 起來沒有 uart console。所以還是不能用。
最後是用 core-image-full-cmdline
run 起來後有 ssh
但是 mender authorize 還是有問題。

ref: 說明 meta-mender layer
下面的各個 layer:

meta-mender-core:
  • build command
  • image partition
  • bootloader

meta-mender-community: 一堆板子相關的設定

meta-mender-demo 跟 demo 板有關。
build for production有說明如何build profuction image (不是跟 demo server 連線?)

要先remove meta-mender-demo layer。
要準備好 cert.ca,如果server 是 self signed,那還要有 server 的 ca.


對應的 mender server,不要做demo mode,做 production mode。參考installation with docker compose

依照3.4.0 板來做,最後 ./run up -d 之後,user-admin 這個container 一直 fail, restart。
用 docker log 看,是 key 的 permission。
發現是依照keygen 的 production/key-generated/keys/useradm/private.key 和 deviceauth/private.key 的 attrib 沒有 rw,都改 777 後再啟動就 OK 了。

另外,browser 要對 domain name,不能對 ip 作用。

結果 server.crt 還是沒 build 進去,因為缺了 meder-server-certifaction 這個 layer.
查,dunfell 這個branch 還沒有這個 layer..

yocto 的 branch name : Release

所以dunfell 後的LTS 是 Kirkstone
嘗試用這格 branch 試試..

一樣先follow 這個,只是 BRANCH=kirkstone。
作完setup-environment 後,在 build 下,依照這篇 修改 local.conf
certification 那邊,就抄local.conf 的, copy 過來,果然是新版bitbake 的語法。

這個..參考yocto: fetching from local directory:
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
是真的 project folder 下有一個 files 目錄。
然後..下面這個file..
SRC_URI += " file://app.tgz"
是說,找local file,不是到網路上的link..

沒有留言:

張貼留言