summaryrefslogtreecommitdiffstats
path: root/images/enea-edge-host-common.inc
diff options
context:
space:
mode:
Diffstat (limited to 'images/enea-edge-host-common.inc')
-rw-r--r--images/enea-edge-host-common.inc59
1 files changed, 37 insertions, 22 deletions
diff --git a/images/enea-edge-host-common.inc b/images/enea-edge-host-common.inc
index 6d446a0..3df6cb9 100644
--- a/images/enea-edge-host-common.inc
+++ b/images/enea-edge-host-common.inc
@@ -1,11 +1,11 @@
1IMAGE_FSTYPES += "hddimg"
2IMAGE_FSTYPES_remove = "wic"
3
1REQUIRE_FILES = " \ 4REQUIRE_FILES = " \
2 images/enea-edge-common.inc \ 5 images/enea-edge-common.inc \
3 classes/override_grub-efi.inc \
4 " 6 "
5REQUIRE_FILES_append_df-efi-secure-boot = " \ 7REQUIRE_FILES_append_df-efi-secure-boot = " \
6 classes/override_image_types_ostree.inc \ 8 classes/override_live-vm-common.inc \
7 classes/override_image_types_ota.inc \
8 classes/override_grub-efi_secureboot.inc \
9 images/secure-boot.inc \ 9 images/secure-boot.inc \
10 " 10 "
11 11
@@ -19,28 +19,26 @@ IMAGE_INSTALL += " \
19# Set labels for GRUB and SYSLINUX 19# Set labels for GRUB and SYSLINUX
20LABELS_LIVE = "installer live-boot" 20LABELS_LIVE = "installer live-boot"
21 21
22GRUB_GFXSERIAL_x86-64 = "1"
23# Append default parameters for x86-64 targets 22# Append default parameters for x86-64 targets
24APPEND_x86-64 = "quiet" 23APPEND_x86-64 = "quiet console=tty0 console=ttyS0,115200"
25SYSLINUX_DEFAULT_CONSOLE_x86-64 = "console=ttyS0,115200" 24SYSLINUX_DEFAULT_CONSOLE_x86-64 = "console=ttyS0,115200"
26 25
27# Skip menu and boot installer immediately 26# Skip menu and boot installer immediately
28GRUB_TIMEOUT_x86-64 = "0" 27GRUB_TIMEOUT_x86-64 = "0"
29AUTO_SYSLINUXMENU_x86-64 = "0" 28AUTO_SYSLINUXMENU_x86-64 = "0"
30 29
31# grub-efi-native is needed in recipe-sysroot-native to generate the initial
32# configuration file for grub
33DEPENDS_append += " grub-efi-native"
34
35# If building with sota enabled, build the otaimg before the hddimg, because 30# If building with sota enabled, build the otaimg before the hddimg, because
36# the hddimg needs it as a base image 31# the hddimg needs it as a base image
37python __anonymous() { 32python __anonymous() {
33 ## ENEA_start ##
38 if bb.utils.contains('DISTRO_FEATURES', 'sota', True, False, d): 34 if bb.utils.contains('DISTRO_FEATURES', 'sota', True, False, d):
39 d.appendVarFlag("do_bootimg", "depends", " %s:do_image_otaimg" % d.getVar("IMAGE_BASENAME", True)) 35 d.appendVarFlag("do_bootimg", "depends", " %s:do_image_ota_ext4" % d.getVar("IMAGE_BASENAME", True))
36 ## ENEA_end ##
40} 37}
41 38
42# Append OSTree specific parameters to the kernel command line before creating the live image 39# Append OSTree specific parameters to the kernel command line before creating the live image
43python do_bootimg_prepend () { 40python do_bootimg_prepend () {
41 ## ENEA_start ##
44 if bb.utils.contains('DISTRO_FEATURES', 'sota', True, False, d): 42 if bb.utils.contains('DISTRO_FEATURES', 'sota', True, False, d):
45 ostree_osname = d.getVar('OSTREE_OSNAME') 43 ostree_osname = d.getVar('OSTREE_OSNAME')
46 checksum = bb.utils.sha256_file(d.getVar('DEPLOY_DIR_IMAGE') + "/" + d.getVar('OSTREE_KERNEL')) 44 checksum = bb.utils.sha256_file(d.getVar('DEPLOY_DIR_IMAGE') + "/" + d.getVar('OSTREE_KERNEL'))
@@ -49,21 +47,38 @@ python do_bootimg_prepend () {
49 ostree_params = " ostree=/ostree/boot.1/" + ostree_osname + "/" + checksum + "/0" 47 ostree_params = " ostree=/ostree/boot.1/" + ostree_osname + "/" + checksum + "/0"
50 48
51 d.setVar("APPEND", d.getVar("APPEND") + ostree_params) 49 d.setVar("APPEND", d.getVar("APPEND") + ostree_params)
52} 50 ## ENEA_end ##
53
54# Get rid of GRUB dependencies added by ostree. See:
55# https://git.enea.com/cgit/linux/meta-updater.git/tree/classes/image_types_ota.bbclass#n45
56python __anonymous () {
57 d.delVarFlag("do_image_otaimg", "depends")
58 d.setVarFlag("do_image_otaimg", "depends", "e2fsprogs-native:do_populate_sysroot")
59} 51}
60 52
61# Before building the OSTree image, move DPKG data to /usr/dpkg, because 53# Before building the OSTree image, move DPKG data to /usr/dpkg, because
62# OSTree does not preserve the contents of /var 54# OSTree does not preserve the contents of /var
63IMAGE_CMD_ostree_prepend () { 55IMAGE_CMD_ostree_prepend () {
64 56 ## ENEA_start ##
65 install -d ${IMAGE_ROOTFS}/usr/dpkg/lib/dpkg 57 # Note: We do configure DPKG admindir at build time, but we can't do the same for APT since
66 if [ "$(ls -A ${IMAGE_ROOTFS}/var/lib/dpkg)" ]; then 58 # yocto hardcodes /var/lib/dpkg paths in various places in OE-core, which we can't override,
67 mv ${IMAGE_ROOTFS}/var/lib/dpkg/* ${IMAGE_ROOTFS}/usr/dpkg/lib/dpkg/ 59 # so instead we move the contents to their expected location here and configure apt at runtime
60 # via a configuration fragment to use the new location.
61 mkdir -p usr/dpkg/lib/dpkg
62 if [ "$(ls -A var/lib/dpkg)" ]; then
63 mv var/lib/dpkg/* usr/dpkg/lib/dpkg/
68 fi 64 fi
65 # In Enea Edge, the EFI binaries (shim, seloader etc.) are copied from the yocto deploy dir to
66 # the installation image (hddimg) - see "classes/override_live-vm-common.inc" in this repo;
67 # and during Enea Edge installation (via utils.sh) from hddimg to the destination disk.
68 # Files installed by the package manager end up under OSTree /boot hardlink tree, but are
69 # never actually used. To avoid confusion and save some resources, clean them up.
70 rm -rf boot/*
71 ## ENEA_end ##
72}
73
74IMAGE_CMD_ota_prepend () {
75 ## ENEA_start ##
76 if [ "${OSTREE_BOOTLOADER}" = "grub" ]; then
77 # Upstream bbclass creates /boot/grub2, complement it with /boot/grub
78 # Note: /boot/grub2 is a dir with /boot/grub2/grub.cfg -> ../loader/grub.cfg symlink
79 # while /boot/grub -> loader is a symlink to also account for /boot/grub/grubenv
80 mkdir -p ${OTA_SYSROOT}/boot
81 ln -s loader ${OTA_SYSROOT}/boot/grub
82 fi
83 ## ENEA_end ##
69} 84}