Как интегрировать mender в lk-bootloader на основе проекта Yocto - PullRequest
0 голосов
/ 24 декабря 2018

Я новичок в yocto, теперь я использую демо-плату MTK для создания базы linux-distro на Yocto.Я хочу реализовать OTA с помощью mender, следуя этому руководству: https://docs.mender.io/1.0/Devices/Integrating-with-U-Boot.

, но Mender по умолчанию поддерживает загрузку u-boot, MTK использует загрузчик lk, тогда как реализовать эту функцию?

Точка доступа, которую я использовал, - MT8183. Список шагов, которые я сделал, приведен ниже: 1. /meta/meta-mediatek/recipes-bsp/lk/lk_2.0.0.0.bb.добавьте следующий код:

require recipes-bsp/u-boot/u-boot-mender.inc
PROVIDES += "u-boot"
RPROVIDES_{PN} += "u-boot"

2.cp lk_2.0.0.0 lk-fw-utils_2.0.0.0 и измените файл следующим образом:

 a. delete do_genkey{} function;
 b. add EXTRA_OEMAKE_class-target = 'CROSS_COMPILE=${TARGET_PREFIX} CC="${CC} ${CFLAGS} ${LDFLAGS}" V=1' 
 c. add "oe_runmake env" in function do_compile()
 d. add PROVIDES_${PN} = "lk-fw-utils"
        RPROVIDES_${PN} = "lk-fw-utils"
        DEPENDS += "mtd-utils"

3. /build / local.conf, добавьте этот код

  MENDER_ARTIFACT_NAME = "release-1"
  INHERIT += "mender-full"
  MACHINE = "aiv8183m1v2"
  PREFERRED_VERSION_pn-mender = "1.0.%"
  PREFERRED_VERSION_pn-mender-artifact = "1.0.%"
  PREFERRED_VERSION_pn-mender-artifact-native = "1.0.%"

  DISTRO_FEATURES_append = "systemd"
  VIRTUAL-RUNTIME_init_manager = "systemed"
  DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
  VIRTUAL-RUNTIME_initscripts = ""
  IMAGE_FSTYPES = "ext4"

4. Выполните битовый слой-слой add-layer / meta / meta-mender / meta-mender-core

5.bitbake-layermeta-mylayer create-layer, в этом слое я mkdir -p / recipes-mender / mender / files, в mender каталога, я касаюсь mender _%. bbappend file следующим образом:

FILESEXTARPATHS_prepend := "${THISDIR}/file:"
SRC_URI_append = "file://server.crt"
and put servert.crt in the the file directory.

6.inmancine.conf (aiv8183m1v2.conf), я добавил

PREFERRED_PROVIDER_u-boot-fw-utils = "lk-fw-utils"
  PREFERRED_PROVIDER_u-boot = "lk"
  IMAGE_INSTALL_append = "kernel-modules"
  MENDER_STORAGE_DEVICE = "/dev/mmcblk0"

7. / meta-mender / meta-mender-core / classes / mender-full.bbclass

 MENDER_FEATURES_ENABLE_append_arm = ""
  MENDER_FEATURES_ENABLE_append_aarch64 = ""

результат, который я ожидал, - linux can OTA over mender.Но фактические результаты - это то, что проект не может пересекать сборку. В журнале написано:

DEBUG: Executing shell function soft_link_to_rootfs 
| ln: target ‘mender.bmap’ is not a directory 
| WARNING: /home/yewkui/yocto-linux/build/tmp/work/aiv8183m1v2-poky-linux/mtk-image-openmm-aiv/1.0-r0/temp/run.soft_link_to_rootfs.1347217:1 exit 1 from 'ln -nfs mtk-image-openmm-aiv-aiv8183m1v2-20181224064735.rootfs.ext4 mender mender.bmap /home/yewkui/yocto-linux/build/tmp/deploy/images/aiv8183m1v2/rootfs.ext4 mender mender.bmap' 
| DEBUG: Python function do_rootfs finished 
| ERROR: Function failed: soft_link_to_rootfs (log file is located at /home/yewkui/yocto-linux/build/tmp/work/aiv8183m1v2-poky-linux/mtk-image-openmm-aiv/1.0-r0/temp/log.do_rootfs.1347217) 
ERROR: Task (/home/yewkui/yocto-linux/meta/poky/../meta-mediatek-mt8183/recipes-aiv/images/mtk-image-openmm-aiv.bb:do_rootfs) failed with exit code '1' 
NOTE: Tasks Summary: Attempted 2392 tasks of which 2391 didn't need to be rerun and 1 failed. 
NOTE: Writing buildhistory


Возможно, я ошибаюсь на первом этапе, но как реализовать OTA с помощью йо-базы наMTK lk-bootloader, помогите пожалуйста!Большое спасибо!

...