summaryrefslogtreecommitdiffstats
path: root/classes
Commit message (Collapse)AuthorAgeFilesLines
* OSTree /boot dir: Remove unused artifactsAlexandru Avadanii2021-05-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OSTree handles the contents of /boot separately from the rest of the filesystem, see [1]. By default, upstream yocto rootfs generation stores the following artifacts in /boot: - kernel-image (bzImage) as /boot/bzImage-...; - multiple packages that deploy grub.cfg, grubenv and EFI binaries: * dpkg -S /boot/efi/EFI/BOOT shim, seloader, ovmf-pkcs7-efi, grub-efi, grub-bootconf, efitools However, none of these are ever used in Enea Edge, due to the way our initial installation and subsequent upgrade work: * live image building copies the kernel image from yocto deploy dir, EFI binaries from rootfs /boot (this patch changes this to also copy from the yocto deploy dir "bootloader" dir for uniformity) to the root of the hddimg image; * Enea Edge Installer (via utils.sh) creates the ESP partition and copies all artifacts from hddimg to ESP under /EFI/BOOT [2]; * (currently) subsequent upgrades do _not_ update the contents of the ESP /EFI/BOOT directory after initial installation; * subsequent upgrades copy the kernel and ostree-initramfs from OSTree rootfs (from /usr/lib/modules where ostree-kernel package resides) to the ESP for SELoader validation; This flow leaves unused (duplicate) artifacts in the following path: /ostree/boot.x/poky/<poky hash>/0/boot/ While the kernel-image package can be omitted from installation, since ostree-kernel package already installs the same binaries in /usr/lib/modules (where OSTree will look for it), the rest of the packages (shim, seloader etc.) also install other files to the rootfs (e.g. CLI tools) and/or are used by the live image (hddimg) build process as sources when copying said artifacts to the hddimg image; so we can't simply skip installing them inside the rootfs. Also, we want non-SOTA artifacts (e.g. rootfs.ext4) to still contain these artifacts. So the only sensible solution to avoiding confusion and removing unused artifacts from OSTree images is to remove them right before creating the OSTree image. While at it, add some ENEA-specific comment markers to our prepend/ append fragments to make them stand out. [1] https://github.com/ostreedev/ostree/blob/v2020.8/docs/\ atomic-upgrades.md#the-ostreeboot-directory [2] http://sestogerrit02/cgit/linux/meta-enea-virtualization.git/tree/ recipes-enea/nfv-installer/nfv-installer/utils.sh?h=rocko#n230 Change-Id: I470c1c3d19f301cae4b8fbe184aa2906d4a25ddf Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
* grub: Fix duplicate/unused grubx64.efi, cleanupAlexandru Avadanii2021-05-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | 1. EFI_PREFIX: Fix duplicate grubx64.efi binaries by aligning paths: * by default, upstream meta-oe and meta-secure-core both install grubx64.efi, but in different locations (/boot/EFI/BOOT vs /boot/efi/EFI/BOOT) unless we explicitely override some vars to align the 2 paths; use the old behavior (/boot/efi/EFI/BOOT), as meta-secure-core has multiple recipes that reference it, while meta-oe allows changing the path via a single var override; * note that in an OSTree deployment, these paths don't even exist on target, we explicity install grubx64.efi during Enea Edge installation by copying grubx64.efi from /EFI/BOOT in hddimg; 2. live-vm-common: use ${EFI_FILES_PATH} instead of hardcoding it; 3. core-image-minimal-initramfs, enea-nfv-access: Blacklist grub-common-extras package on x86-64 machines if OSTree is used; Depends-On: I703b53fd09c5ed75731375414f3e711ec3dadc3e Change-Id: I3735bc004ece62f94172108f2e7ed4596942deea Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
* installer: grub: merge serial/gfx boot entriesAlexandru Avadanii2021-05-211-94/+0
| | | | | | | | | | | | - drop our class override that basically reverted the boot menu entry order and used to make serial the first (default) boot entry instead of graphical; - unset GRUB_GFXSERIAL that creates 2 boot entries instead of one; - extend APPEND to contain both tty0 (graphical) and ttyS0 (serial): * ttyS0 is last, so it has priority for selection as /dev/console; Change-Id: I9be029bfea00d9aca61527046fedbe30e7ec58c2 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
* classes/sota: INITRAMFS_TYPES: s/ext4/cpio/Alexandru Avadanii2021-04-122-2/+2
| | | | | | | | | | Upstream meta-updater switched from initrd to initramfs in [1], so the image format changed from ext4.gz to cpio.gz. [1] https://github.com/advancedtelematic/meta-updater/commit/212d71d2 Change-Id: Ibb1239eeba319877624fc76209f733862f52cb35 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
* classes/override_grub* sync with upstream renamesAlexandru Avadanii2021-04-123-34/+37
| | | | | | | | | | | | While at it, replace some hardcoded p7b extenstions with ${SB_FILE_EXT} and vmlinuz references with the appropiate variable (upstream no longer renames bzImage to vmlinuz in ISO root after [1]). [1] https://git.yoctoproject.org/cgit.cgi/poky/commit/?id=b6e36c01977 Change-Id: I5ce414a2f281ff2f1aeb0e26f35608cd8750855d Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* classes: Rebase override_image_types_{ota,ostree}Alexandru Avadanii2021-04-092-254/+0
| | | | | | | | | | | | | | | | | | | | | - override_image_types_ostree.inc is no longer required; - override_image_types_ota.inc is mostly superseded by upstream, except the creation of /boot/grub as a symlink to /boot/loader (note that /boot/grub2 is a real dir with /boot/grub2/grub.cfg being a symlink to /boot/loader/grub.cfg - it would be quite complicated to override the whole IMAGE_CMD_ota just to keep symlinking the parent dir instead of grub.cfg directly); /boot/grub should be a symlink so that /boot/grub/grubenv also points to /boot/loader/grubenv); fold its contents into enea-nfv-access-host-common.inc as it doesn't override a class anymore Note: Previously, OSTree did not follow symlinks, so the symlink /boot/grub2/grub.cfg was being overwritten with a real file, this is no longer an issue. Change-Id: I38ec2b3a791ef7068b97caa49010eee62b7f4aee Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* Upgrade to gatesgarthAdrian Dudau2021-03-252-2/+2
| | | | | | | | This is an initial commit, containing quick fixes and hacks to allow building the images. All these issues will be re-evaluated and fixed properly in their own commits. Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* grub: Fix backwards compatibility with OSTreefeature_CPDX-3499Alexandru Avadanii2020-12-171-0/+1
| | | | | | | | | | | | | | | Before NFVA 2.3.0, OSTree only checked for the existence of /boot/grub2/grub.cfg, skipping creating grub.cfg if that file was not present. In NFVA 2.3.0, only /boot/grub/grub.cfg is created, leading to issues when trying to downgrade to an older NFVA release. To maintain backwards compatibility with OSTree versions that only check the old path, create both /boot/{grub,grub2} as symlinks to the loader directory managed by OSTree. Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> Change-Id: Ic2c89930794e4c9d3ee3b2468d1331e5d7f63834
* grub: Fix loader link, unify grub.cfg locationstest_branchout_newtest_branchoutAlexandru Avadanii2020-09-142-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Fix an obviously broken link created during installation This led to issues creating/editing the grubenv file during NFVA installation calls to `grub-mkconfig`. These errors were not observed before, since stderr was not logged during the installation. Also, the link was fixed later on, so subsequent calls to grub-* utilities no longer complained about it; the error only happened during the NFVA installation. 2. Unify expected locations of grub.cfg Previously, there were 3 possible locations of grub.cfg used throughout the layers/scripts: - /boot/loader/grub.cfg - the proper location, used by NFVA installer components, as well as ostree related tooling; - /boot/grub/grub.cfg - used in some recipes, but not present on the board currently. Also the expected default location of our current grub-* utilites, since we build grub without an explicit `--with-grubdir` configure argument, which defaults (guessing) to the `PACKAGE` name, in our case `grub` (and not `grub2`); - /boot/grub2/grub.cfg - used in OTA image scripts by linking it to /boot/loader/grub.cfg - however the link is later converted into a real file, ending up duplicating the real grub.cfg (although they are identical content-wise, they might confuse the user); To settle this confusion, we will keep only /boot/loader/grub.cfg as the true configuration file and convert /boot/grub2 to a symlink pointing at /boot/loader, while also renaming it to /boot/grub. This has the benefit of "fixing" all grub-* tools which try to write their configuration files to /boot/grub. An alternative for that would be building grub2 with the configure flag `--with-grubdir=loader`, but that might break other things, so a symlink for the traditional /boot/grub is safer. Before creating this link, `grub-editenv list` would not work without explicitly providing the filepath of the `/boot/loader/grubenv` file, which might not be obvious for the end user. Also, before this link, `grub-mkconfig` required explicitly setting the `-p` (prefix) to '/' while running on the target. Both of these issues will be fixed with the new link. Since our ostree version (2018.7) is quite old, it requires one backport for it to also check for /boot/grub/grub.cfg and not only /boot/grub2/grub.cfg. The backport will be handled in the meta-enea-virtualiation layer, hence this change's dependency. Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com> Depends-on: I6bdc80e08a272e1534dd63717348bfaa50807d93 Change-Id: If8a61c89200414922a3f36e6c8fca58d7d3b6495
* Make the serial console as the first choice in GRUB and SYSLINUXGabriel Ionescu2019-08-091-2/+2
| | | | Change-Id: I146aafd422d0f99b25ef222380e053b08239c02f
* ostree and otaimg enhancementsMatei Valeanu2019-06-264-14/+117
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | override_image_types_ostree.inc - do_image_ostree task: -add dirs, cleandirs flags, to avoid mktemp, rm, cd, and to also remove at clean -add subimages, imgsuffix flags, to use automatic link creation -create image in IMGDEPLOYDIR, instead of DEPLOY_DIR_IMAGE to use the automatic deploy and clean mechanism (also helps in cleaning old images) override_image_types_ota.inc - do_image_otaimg task: -add dirs, cleandirs flags, to avoid mktemp, rm, cd, and to also remove at clean -avoid untar-ing the ostree image, and use OSTREE_ROOTFS -create image in IMGDEPLOYDIR, instead of DEPLOY_DIR_IMAGE to use the automatic deploy and clean mechanism Move OSTREE_REPO to "${WORKDIR}/ostree-repo", instead of DEPLOY_DIR_IMAGE, this repo is needed for otaimg creation sota_xeon-d.bbclass sota_atom-c3000.bbclass: -set ROOTFS_sota to IMGDEPLOYDIR insted of DEPLOY_DIR_IMAGE, as this is where the otaimg is now created; also use IMAGE_LINK_NAME istead of IMAGE_NAME, to have the correct reference to the image, even if the image was built in a previous run (IMAGE_NAME differs in this case) Change-Id: I44e87311d1819b80d34f924630d09e429d411d41 Signed-off-by: Matei Valeanu <Matei.Valeanu@enea.com>
* Include UEFI certificates into the hddimgAdrian Dudau2019-06-131-0/+4
| | | | | Change-Id: I27cd60e16b0b9cc469af916842141de294bddd14 Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* Split grub_efi class overrideAdrian Dudau2019-05-232-28/+27
| | | | | | | | | Split the class override into generic changes and Secure Boot specific (efi_populate). This allows us to override the secureboot parts only if the efi-secure-boot distro feature is enabled. Change-Id: I68ab1a9eae2ffceecd057506ef493b4388ff5343 Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* do_image_ostree: fix build issueMatei Valeanu2019-05-201-1/+1
| | | | | | | ostree_repo may exist even if not initialized Change-Id: Iae1d17114646128c74646cfb696f4db09638930b Signed-off-by: Matei Valeanu <Matei.Valeanu@enea.com>
* Override image_types_ostree classAdrian Dudau2019-05-131-0/+150
| | | | | | | | Override the class to install the kernel and initramfs signature files into the ostree image. Change-Id: I3cd9d1b0dcb2519802443d9a959a3b35e8a9a823 Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* Override efi-populate function from grub-efi classAdrian Dudau2019-05-131-0/+28
| | | | | | | | This override is needed to install kernel and initramfs signature files onto the hddimg. Change-Id: Id1434b930312cc601ca2c1782c8b5b5699ce3fd6 Signed-off-by: Adrian Dudau <adrian.dudau@enea.com>
* set ramdisk size from kernel configSona Sarmadi2019-05-072-2/+2
| | | | | | | | We have big number of kernel params and at some point it will be difficult to maintain all kernel boot params. Change-Id: I51ba9d21e4c041fb7e77d618d7572704715a3a25 Signed-off-by: Sona Sarmadi <sona.sarmadi@enea.com>
* OSTree: Add sota machine specific classesGabriel Ionescu2018-11-202-0/+26
| | | | | Change-Id: I5dad6a1bcb4f22e1c7c3fa4971a49d87212e15d6 Signed-off-by: Gabriel Ionescu <gabriel.ionescu@enea.com>
* boot menu: Add graphics and serial choicesMatei Valeanu2018-09-211-0/+89
Add override_grub-efi.inc to override "build_efi_cfg" function from grub-efi.bbclass, in order to add GRUB_GRAPHICS variable for grub menuentry specific parameters. Set "console=tty0" for graphic console options for grub and syslinux, and also "console=ttyS0" for serial. Change-Id: If338d9f7e1b82fc91a026ef48ae30647c1049f8b Signed-off-by: Matei Valeanu <Matei.Valeanu@enea.com>