Simple configuration (dunfell)

Hello! I am trying to build a simple yocto build with core-image-sato. Everything is perfect and the image is bootable until I add mender to the build. When building with mender, all grub options disappear except one - to go to the firmware settings.

There are the layers:

BBLAYERS ?= " \
  ../poky/meta \
  ../poky/meta-poky \
  ../poky/meta-yocto-bsp \
  ../poky/meta-intel \
  ../poky/meta-mender/meta-mender-core \
"

Should I just include the meta-mender-demo layer? I think it could be something because of the layer priorities?

layer                 path                                      priority
==========================================================================
meta                  /poky/meta  5
meta-poky             /poky/meta-poky  5
meta-yocto-bsp        /poky/meta-yocto-bsp  5
meta-intel            /poky/meta-intel  5
meta-mender-core      /poky/meta-mender/meta-mender-core  6

I would even disable any options from grub menu. Just to load straight to the system. This way psplash would hide all system logs, right?

All of the layers are from their dunfell branch. Seems that’s the latest which mender supports.

Thanks for the help!

Do you add any of the configuration options for mender in e.g local.conf?

Things that are covered here,

Should I just include the meta-mender-demo layer? I think it could be something because of the layer priorities?

This is not strictly required, but can easy with testing.

Thanks for the fast response! These are the settings I set in the local.conf

MENDER_ARTIFACT_NAME = "release-1"
INHERIT += "mender-full" 

DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager = "systemd"
DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
VIRTUAL-RUNTIME_initscripts = ""
ARTIFACTIMG_FSTYPE = "ext4"

MENDER_SERVER_URL = "https://hosted.mender.io"
MENDER_TENANT_TOKEN = "XXXXX" // the token from my mender acc
MENDER_STORAGE_TOTAL_SIZE_MB = "2048"
MENDER_STORAGE_DEVICE = "/dev/sdb" // because boot from usb device

I just tested with meta-mender-demo but the result is the same.

Looks good,

And which image do you use to provision the device?

The image I try to build is core-image-full-cmdline. Build Configuration:

BB_VERSION           = "1.46.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "x86_64-poky-linux"
MACHINE              = "intel-corei7-64"
DISTRO               = "poky"
DISTRO_VERSION       = "3.1.4"
TUNE_FEATURES        = "m64 corei7"
TARGET_FPU           = ""
meta                 
meta-poky            
meta-yocto-bsp       = "dunfell:861cfcd52f0b769772c3726530210f2f43c3449b"
meta-intel           = "dunfell:7fe349c03bad8a2609429b6783c0909d2aef3694"
meta-mender-core     
meta-mender-demo     = "dunfell:cc1fdd90820bf8912007b399217bdc3278473165"

Sorry, didn’t get it. .uefiimg.

I can not spot anything obvious. It all looks ok to me.

Normally you would not get any menus in GRUB with meta-mender, it would just boot. The fact that it gets to the “Firmware Interface” means that something went wrong in grub.cfg

I would check the grub.cfg file on the boot part of your USB to try to spot anything. You could also enable it to halt at strategic locations to prevent GRUB from clearing the buffer, this should probably tell you what is actually going wrong

In the grub.cfg file seems everything is okey and all come from mender. Will try to format the USB and clean the bitbake cache and try again to see what would be the result.
Something interesting in the grub file I found:

mender_kernel_root_base=/dev/mmcblk0p

But in the local.conf I already set to /dev/sdb - or it is something different?

This looks correct, so indeed it looks strange that grub.cfg does not represent this.

Can you check in your build e.g bitbake core-image-sate -e | grep ^MENDER_STORAGE_DEVICE

MENDER_STORAGE_DEVICE="/dev/sdb"
MENDER_STORAGE_DEVICE_BASE="/dev/sdb"
MENDER_STORAGE_DEVICE_BASE_DEFAULT="/dev/sdb"
MENDER_STORAGE_DEVICE_BASE_DEFAULT_mender-ubi="/dev/sdb_"
MENDER_STORAGE_DEVICE_DEFAULT="/dev/mmcblk0"
MENDER_STORAGE_DEVICE_DEFAULT_mender-ubi="ubi0"

Seems it is ok as mender_kernel_root_base=${MENDER_STORAGE_DEVICE_BASE} should set the right device.

As I use meta-intel it includes it’s own grub efi. And from this:

# Set EFI_PROVIDER. Not all MACHINE configs use it but notably
# intel-corei7-64 does and without this we use the default of systemd-boot.

EFI_PROVIDER ?= "${_MENDER_EFI_PROVIDER_DEFAULT}"
_MENDER_EFI_PROVIDER_DEFAULT = ""
_MENDER_EFI_PROVIDER_DEFAULT_mender-grub = "grub-efi"
_MENDER_EFI_PROVIDER_DEFAULT_mender-grub_mender-bios = ""

mender disables it with _MENDER_EFI_PROVIDER_DEFAULT = "", isn’t it? But after running bitbake core-image-full-cmdline -e | grep ^_MENDER_EFI_PROVIDER_DEFAULT I got this:

_MENDER_EFI_PROVIDER_DEFAULT="grub-efi"
_MENDER_EFI_PROVIDER_DEFAULT_mender-grub="grub-efi"
_MENDER_EFI_PROVIDER_DEFAULT_mender-grub_mender-bios=""

Respectively, EFI_PROVIDER="systemd-boot".

If I am right there is an issue setting _MENDER_EFI_PROVIDER_DEFAULT.

Something else I just noticed while building is this warning:

WARNING: mender-client-2.4.1-r0 do_configure: QA Issue: mender-client: invalid PACKAGECONFIG: inventory-network-scripts [invalid-packageconfig]

Is it something that can be ignored for the moment?

Hello,

seems like I’m having almost similar problems: Intel-uefiimg is not bootable

However, I just checked and in my case, mender_kernel_root_base is correctly set according to my settings from local.conf - maybe this is not the root cause for those issues.

Did you find any other reasons so far?

Best,
Valentin

Same setup, same problem.

JJ

I resolved the problem but the project is not in front of me at the moment and cannot tell you exactly what was the issue. However, I remember it was related to the INITRAMFS_IMAGE. There were some issues with the WKS - systemd was enabled. Hope this can help!