feat(coreos-installer): add coreos-installer for eagle40-03
This commit is contained in:
parent
6a87dab5a8
commit
689a92ec08
|
|
@ -3,33 +3,35 @@
|
||||||
CoreOS Installer
|
CoreOS Installer
|
||||||
****************
|
****************
|
||||||
|
|
||||||
The CoreOS installer is a set of script running on the target and a
|
The CoreOS installer is a set of scripts running on the target and a
|
||||||
corresponding bitbake image that is used into the bootstrap process of CoreOS.
|
corresponding bitbake image that is used into the bootstrap process of CoreOS.
|
||||||
|
|
||||||
coreos-image-installer
|
coreos-image-installer
|
||||||
======================
|
======================
|
||||||
|
|
||||||
The CoreOS installer image is a single binary EFI file that include a kernel,
|
The CoreOS image installer results in an image contairing only a single binary
|
||||||
device tree and an initramfs with all the tools needed to install CoreOS.
|
EFI file. This EFI file includes a kernel, a device tree and an initramfs with
|
||||||
|
all (and only) the tools needed to install CoreOS.
|
||||||
|
|
||||||
An installer image is automatically built in parallel of a normal image.
|
The installer image is not automatically built in parallel of a normal image.
|
||||||
This can be deactivated by setting `COREOS_IMAGE_GENERATE_INSTALLER` to 0.
|
This can be changed by setting `COREOS_IMAGE_GENERATE_INSTALLER` to 1 in the
|
||||||
|
image file (as it is done for example in coreos-image-all-features.bb).
|
||||||
|
|
||||||
The installer image build by default only a single EFI binary named
|
The installer image build by default only a single EFI binary named
|
||||||
coreos-installer-MACHINE.efi. An SDCard image can be generate if
|
coreos-installer-MACHINE.efi. An SDCard or USB image can be generated if
|
||||||
`COREOS_INSTALLER_WKS_FILE` is set to a wks file.
|
`COREOS_INSTALLER_WKS_FILE` is set to a wks file.
|
||||||
|
|
||||||
coreos-installer
|
coreos-installer
|
||||||
================
|
================
|
||||||
|
|
||||||
The coreos-installer recipe installs some script that is used at startup
|
The coreos-installer recipe installs scripts that are used at startup to
|
||||||
to automatically format the internal emmc of the device. It also contains
|
automatically format the internal emmc of the device. The recipe also contains
|
||||||
a swupdate configuration file to setup swupdate correctly for that use case.
|
a swupdate configuration file to setup swupdate correctly for that use case.
|
||||||
|
|
||||||
coreos-installer-config
|
coreos-installer-config
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
The coreos-installer-config recipe installs device specific configuration file
|
The coreos-installer-config recipe installs device specific configuration file
|
||||||
used by the coreos-installer. This includes the partitionner config file. Distro
|
used by the coreos-installer. This includes the partitioner config file. Distros
|
||||||
and project based on CoreOS can change the partionning scheme or partition size
|
and projects based on CoreOS can change the partioning scheme or partition size
|
||||||
by installing their own version of this package using a `bbappend file`.
|
by installing their own version of this package using a `bbappend file`.
|
||||||
|
|
|
||||||
|
|
@ -28,11 +28,10 @@ APPEND += "console=ttyS0,115200"
|
||||||
# Ensure that both flash-image.bin and boot.scr are generated as they are needed
|
# Ensure that both flash-image.bin and boot.scr are generated as they are needed
|
||||||
# for a wic image
|
# for a wic image
|
||||||
WKS_FILE = "generic-uefi.wks.in"
|
WKS_FILE = "generic-uefi.wks.in"
|
||||||
# COREOS_INSTALLER_WKS_FILE ?= "" --> TBD
|
COREOS_INSTALLER_WKS_FILE ?= "generic-uefi-usb-installer.wks"
|
||||||
IMAGE_FSTYPES += "wic.xz wic.bmap"
|
IMAGE_FSTYPES += "wic.xz wic.bmap"
|
||||||
|
|
||||||
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " kernel-modules"
|
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " kernel-modules"
|
||||||
# COREOS_IMAGE_SWUPDATE_EXTRACLASSES += "" --> TBD
|
|
||||||
|
|
||||||
# No watchdog available yet
|
# No watchdog available yet
|
||||||
EFIBOOTGUARD_TIMEOUT ?= "0"
|
EFIBOOTGUARD_TIMEOUT ?= "0"
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,20 @@
|
||||||
|
# Variables used in WKS file
|
||||||
# Variable used in WKS file
|
|
||||||
|
|
||||||
WKS_PART_EFI ??= 'part --source efibootguard-efi --label efi --part-type=EF00'
|
WKS_PART_EFI ??= 'part --source efibootguard-efi --label efi --part-type=EF00'
|
||||||
WKS_PART_EFIBOOTGUARD_A ??= 'part --source efibootguard-boot --label ebg0 --part-type=0700 --sourceparams "args=coreos.root=rootfs0,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=2,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI"'
|
WKS_PART_EFIBOOTGUARD_A ??= 'part --source efibootguard-boot --label ebg0 --part-type=0700 --sourceparams "args=coreos.root=rootfs0,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=2,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI"'
|
||||||
WKS_PART_EFIBOOTGUARD_B ??= 'part --source efibootguard-boot --label ebg1 --part-type=0700 --sourceparams "args=coreos.root=rootfs1,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=1,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI"'
|
WKS_PART_EFIBOOTGUARD_B ??= 'part --source efibootguard-boot --label ebg1 --part-type=0700 --sourceparams "args=coreos.root=rootfs1,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=1,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI"'
|
||||||
WKS_PART_ROOT_A ??= 'part / --source rootfs --fstype=ext4 --label rootfs0'
|
WKS_PART_ROOT_A ??= 'part / --source rootfs --fstype=ext4 --label rootfs0'
|
||||||
WKS_PART_ROOT_B ??= 'part --fstype=ext4 --label rootfs1'
|
WKS_PART_ROOT_B ??= 'part --fstype=ext4 --label rootfs1'
|
||||||
WKS_PART_ROOT_SIZE ??= '1G'
|
|
||||||
WKS_PART_USERDATA_SIZE ??= '1G'
|
|
||||||
WKS_PART_USERDATA ??= 'part /usr/local/data --fstype=btrfs --label userdata'
|
WKS_PART_USERDATA ??= 'part /usr/local/data --fstype=btrfs --label userdata'
|
||||||
|
|
||||||
|
PART_EFI_SIZE ??= '64M'
|
||||||
|
PART_ROOT_SIZE ??= '1G'
|
||||||
|
PART_EFIBG_SIZE ??= '128M'
|
||||||
|
PART_USERDATA_SIZE ??= '1G'
|
||||||
|
|
||||||
|
# Variables used in SFDISK file
|
||||||
SFDISK_PART_EFI ??= 'type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, name="efi"'
|
SFDISK_PART_EFI ??= 'type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, name="efi"'
|
||||||
SFDISK_PART_EFIBOOTGUARD_A ??= 'type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="ebg0"'
|
SFDISK_PART_EFIBOOTGUARD_A ??= 'type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="ebg0"'
|
||||||
SFDISK_PART_EFIBOOTGUARD_B ??= 'type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="ebg1"'
|
SFDISK_PART_EFIBOOTGUARD_B ??= 'type=EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, name="ebg1"'
|
||||||
SFDISK_PART_ROOT_A ??= 'type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="rootfs0"'
|
SFDISK_PART_ROOT_A ??= 'type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="rootfs0"'
|
||||||
SFDISK_PART_ROOT_B ??= 'type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="rootfs0"'
|
SFDISK_PART_ROOT_B ??= 'type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="rootfs1"'
|
||||||
|
SFDISK_PART_USERDATA ??= 'type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, name="userdata"'
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ sector-size: 512
|
||||||
/dev/mmcblk1p1 : start= 256, size= 512, type=4DA6E9DA-C803-4BE4-BAC4-8192717C5EB0, name="mlo", attrs="RequiredPartition"
|
/dev/mmcblk1p1 : start= 256, size= 512, type=4DA6E9DA-C803-4BE4-BAC4-8192717C5EB0, name="mlo", attrs="RequiredPartition"
|
||||||
/dev/mmcblk1p2 : start= 768, size= 8192, type=5B97345D-B7A1-47D3-A491-ED40F4841639, name="uboot", attrs="RequiredPartition"
|
/dev/mmcblk1p2 : start= 768, size= 8192, type=5B97345D-B7A1-47D3-A491-ED40F4841639, name="uboot", attrs="RequiredPartition"
|
||||||
|
|
||||||
/dev/mmcblk1p3 : start= 8960, size= 131072, ${SFDISK_PART_EFI}
|
/dev/mmcblk1p3 : size= ${PART_EFI_SIZE}, ${SFDISK_PART_EFI}
|
||||||
/dev/mmcblk1p4 : start= 140032, size= 262144, ${SFDISK_PART_EFIBOOTGUARD_A}
|
/dev/mmcblk1p4 : size= ${PART_EFIBG_SIZE}, ${SFDISK_PART_EFIBOOTGUARD_A}
|
||||||
/dev/mmcblk1p5 : start= 402176, size= 262144, ${SFDISK_PART_EFIBOOTGUARD_B}
|
/dev/mmcblk1p5 : size= ${PART_EFIBG_SIZE}, ${SFDISK_PART_EFIBOOTGUARD_B}
|
||||||
/dev/mmcblk1p6 : start= 664320, size= 3403375, ${SFDISK_PART_ROOT_A}
|
/dev/mmcblk1p6 : size= ${PART_ROOT_SIZE}, ${SFDISK_PART_ROOT_A}
|
||||||
/dev/mmcblk1p7 : start= 4067695, size= 3403375, ${SFDISK_PART_ROOT_B}
|
/dev/mmcblk1p7 : size= ${PART_ROOT_SIZE}, ${SFDISK_PART_ROOT_B}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
label: gpt
|
||||||
|
device: /dev/mmcblk2
|
||||||
|
unit: sectors
|
||||||
|
first-lba: 34
|
||||||
|
last-lba: 7471070
|
||||||
|
sector-size: 512
|
||||||
|
|
||||||
|
/dev/mmcblk2p1 : start= 256, size= ${PART_EFI_SIZE}, ${SFDISK_PART_EFI}
|
||||||
|
/dev/mmcblk2p2 : size= ${PART_ROOT_SIZE}, ${SFDISK_PART_ROOT_A}
|
||||||
|
/dev/mmcblk2p3 : size= ${PART_ROOT_SIZE}, ${SFDISK_PART_ROOT_B}
|
||||||
|
/dev/mmcblk2p4 : size= ${PART_EFIBG_SIZE}, ${SFDISK_PART_EFIBOOTGUARD_A}
|
||||||
|
/dev/mmcblk2p5 : size= ${PART_EFIBG_SIZE}, ${SFDISK_PART_EFIBOOTGUARD_B}
|
||||||
|
/dev/mmcblk2p6 : size= ${PART_USERDATA_SIZE}, ${SFDISK_PART_USERDATA}
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
FILESEXTRAPATHS:prepend := "${THISDIR}/coreos-installer-config:"
|
FILESEXTRAPATHS:prepend := "${THISDIR}/coreos-installer-config:"
|
||||||
|
|
||||||
SRC_URI:append:beaglebone = " file://beaglebone_1.0.sfdisk"
|
SRC_URI:append:beaglebone = " file://beaglebone_1.0.sfdisk"
|
||||||
|
SRC_URI:append:eagle40-03 = " file://eagle40-03_1.0.sfdisk"
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,8 @@ part --offset 768S --source rawcopy --sourceparams="file=u-boot.img" --ondisk mm
|
||||||
# Let's define a 4MiB maximum size for the bootloader
|
# Let's define a 4MiB maximum size for the bootloader
|
||||||
# 4MiB => 4*1024*1024/512=8192S | 768S + 8192S => 8960S
|
# 4MiB => 4*1024*1024/512=8192S | 768S + 8192S => 8960S
|
||||||
${WKS_PART_EFI} --ondisk mmcblk0 --offset 8960S --fixed-size 32M
|
${WKS_PART_EFI} --ondisk mmcblk0 --offset 8960S --fixed-size 32M
|
||||||
${WKS_PART_EFIBOOTGUARD_A} --ondisk mmcblk0 --fixed-size 128M
|
${WKS_PART_EFIBOOTGUARD_A} --ondisk mmcblk0 --fixed-size ${PART_EFIBG_SIZE}
|
||||||
${WKS_PART_EFIBOOTGUARD_B} --ondisk mmcblk0 --fixed-size 128M
|
${WKS_PART_EFIBOOTGUARD_B} --ondisk mmcblk0 --fixed-size ${PART_EFIBG_SIZE}
|
||||||
${WKS_PART_ROOT_A} --ondisk mmcblk0 --fixed-size ${WKS_PART_ROOT_SIZE}
|
${WKS_PART_ROOT_A} --ondisk mmcblk0 --fixed-size ${PART_ROOT_SIZE}
|
||||||
${WKS_PART_ROOT_B} --ondisk mmcblk0 --fixed-size ${WKS_PART_ROOT_SIZE}
|
${WKS_PART_ROOT_B} --ondisk mmcblk0 --fixed-size ${PART_ROOT_SIZE}
|
||||||
bootloader --ptable gpt
|
bootloader --ptable gpt
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
# short-description: Create USB image for Eagle 40-03
|
||||||
|
# long-description: Creates a partitioned USB image for Eagle 40-03.
|
||||||
|
|
||||||
|
# offset 1S => 1 sector (1x512 byte)
|
||||||
|
# The bootloader can be at 4 different position in raw mode: 0S, 256S, 512S, 768S
|
||||||
|
# MBR disk use only the sector 0, so 1S is free
|
||||||
|
# GPT disk use sector 0-33S, so first free slot is 256S
|
||||||
|
# Offset are from the BBB default settings
|
||||||
|
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
# Don't name partition in the installer disk image, otherwise the installer may not work as it rely on partition label!
|
||||||
|
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
part --offset 256S --source bootimg-partition --part-type=EF00 --ondisk mmcblk0
|
||||||
|
part --fixed-size 3G --fstype=vfat --label=image
|
||||||
|
bootloader --ptable gpt
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
# short-description: Create an EFI disk image for genericx86*
|
# short-description: Create an EFI disk image for genericx86*
|
||||||
# long-description: Creates a partitioned EFI disk image for genericx86* machines
|
# long-description: Creates a partitioned EFI disk image for genericx86* machines
|
||||||
${WKS_PART_EFI} --align 1024 --size 64M --extra-space 0 --overhead-factor 1
|
|
||||||
${WKS_PART_ROOT_A} --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_EFI} --align 1024 --size ${PART_EFI_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_ROOT_B} --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_ROOT_A} --size ${PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_EFIBOOTGUARD_A} --align 1024 --size 128M --extra-space 0 --overhead-factor 1
|
${WKS_PART_ROOT_B} --size ${PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_EFIBOOTGUARD_B} --align 1024 --size 128M --extra-space 0 --overhead-factor 1
|
${WKS_PART_EFIBOOTGUARD_A} --align 1024 --size ${PART_EFIBG_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_USERDATA} --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_EFIBOOTGUARD_B} --align 1024 --size ${PART_EFIBG_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
|
${WKS_PART_USERDATA} --size ${PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
|
|
||||||
bootloader --ptable gpt
|
bootloader --ptable gpt
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,11 @@
|
||||||
# long-description: Creates a partitioned EFI disk image that the user
|
# long-description: Creates a partitioned EFI disk image that the user
|
||||||
# can directly dd to boot media.
|
# can directly dd to boot media.
|
||||||
|
|
||||||
part --source efibootguard-efi --label efi --part-type=EF00 --use-uuid --offset 20480S --size 64M --extra-space 0 --overhead-factor 1
|
part --source efibootguard-efi --label efi --part-type=EF00 --use-uuid --offset 20480S --size ${PART_EFI_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
part / --source rootfs --fstype=ext4 --label rootfs0 --use-uuid --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
part / --source rootfs --fstype=ext4 --label rootfs0 --use-uuid --size ${PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
part --fstype=ext4 --label rootfs1 --use-uuid --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
part --fstype=ext4 --label rootfs1 --use-uuid --size ${PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
part --source efibootguard-boot --label ebg0 --part-type=0700 --sourceparams "args=coreos.root=rootfs0,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=2,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --use-uuid --align 1024 --size 128M --extra-space 0 --overhead-factor 1
|
part --source efibootguard-boot --label ebg0 --part-type=0700 --sourceparams "args=coreos.root=rootfs0,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=2,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --use-uuid --align 1024 --size ${PART_EFIBG_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
part --source efibootguard-boot --label ebg1 --part-type=0700 --sourceparams "args=coreos.root=rootfs1,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=1,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --use-uuid --align 1024 --size 128M --extra-space 0 --overhead-factor 1
|
part --source efibootguard-boot --label ebg1 --part-type=0700 --sourceparams "args=coreos.root=rootfs1,watchdog=${EFIBOOTGUARD_TIMEOUT},revision=1,kernel=${COREOS_KERNEL_FILENAME};KERNEL.EFI" --use-uuid --align 1024 --size ${PART_EFIBG_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_USERDATA} --use-uuid --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_USERDATA} --use-uuid --size ${PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
|
|
||||||
bootloader --ptable gpt
|
bootloader --ptable gpt
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
# Class used to generate image based on Belden CoreOS
|
||||||
|
|
||||||
|
export IMAGE_BASENAME = "${MLPREFIX}${PN}"
|
||||||
|
IMAGE_NAME_SUFFIX ?= ""
|
||||||
|
IMAGE_LINGUAS = ""
|
||||||
|
|
||||||
|
LICENSE = "MIT"
|
||||||
|
|
||||||
|
IMAGE_FSTYPES = "cpio.gz"
|
||||||
|
|
||||||
|
# Support for generating a SDCard or USB installer is optional
|
||||||
|
COREOS_INSTALLER_WKS_FILE ??= ""
|
||||||
|
WKS_FILE = "${COREOS_INSTALLER_WKS_FILE}"
|
||||||
|
IMAGE_FSTYPES += "${@'wic.xz wic.bmap' if d.getVar('COREOS_INSTALLER_WKS_FILE') else ''}"
|
||||||
|
IMAGE_BOOT_FILES = "${COREOS_KERNEL_FILENAME};EFI/BOOT/${EFI_BOOT_IMAGE}"
|
||||||
|
|
||||||
|
COREOS_IMAGE_GENERATE_UKI = "1"
|
||||||
|
|
||||||
|
# IMGDEPLOYDIR has to be used instead of DEPLOY_DIR_IMAGE here, because it will
|
||||||
|
# run during image generation
|
||||||
|
COREOS_UKI_PART_INITRAMFS = "${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.cpio.gz"
|
||||||
|
COREOS_IMAGE_GENERATE_SWU = "0"
|
||||||
|
|
||||||
|
# Change generated UKI filename and reset the bundled command line to "APPEND"
|
||||||
|
# to ensure that root is not set in the kernel command line
|
||||||
|
COREOS_KERNEL_NAME ?= "coreos-installer-${MACHINE}"
|
||||||
|
COREOS_KERNEL_CMDLINE ?= "${APPEND}"
|
||||||
|
|
||||||
|
inherit coreos-image
|
||||||
|
|
||||||
|
# Only install a reduced set of package and feature to keep image size small
|
||||||
|
IMAGE_INSTALL = "packagegroup-coreos-boot coreos-installer coreos-installer-unattended util-linux-sfdisk util-linux-fdisk util-linux-cfdisk efibootguard efibootguard-tools"
|
||||||
|
IMAGE_FEATURES = "debug-tweaks swupdate"
|
||||||
|
NO_RECOMMENDATIONS = "1"
|
||||||
|
|
||||||
|
IMAGE_ROOTFS_SIZE = "8192"
|
||||||
|
INITRAMFS_MAXSIZE = "976562"
|
||||||
|
IMAGE_ROOTFS_EXTRA_SPACE = "0"
|
||||||
|
|
||||||
|
# Use the same restriction as initramfs-module-install
|
||||||
|
COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
|
||||||
|
|
@ -90,8 +90,10 @@ IMAGE_ROOTFS_EXTRA_SPACE:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'sys
|
||||||
# Unified kernel image and swupdate support
|
# Unified kernel image and swupdate support
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
# Support for Unified Kernel Image and Swupdate are optional
|
# The CoreOS image installer is disabled by default.
|
||||||
COREOS_IMAGE_GENERATE_INSTALLER ?= "${@"1" if "efi" in d.getVar('COMBINED_FEATURES') and "swupdate" in d.getVar("DISTRO_FEATURES") else "0"}"
|
COREOS_IMAGE_GENERATE_INSTALLER ?= "0"
|
||||||
|
|
||||||
|
# Support for Unified Kernel Image and Swupdate are optional.
|
||||||
COREOS_IMAGE_GENERATE_UKI ?= "${@bb.utils.contains("COMBINED_FEATURES", "efi", "1", "0", d)}"
|
COREOS_IMAGE_GENERATE_UKI ?= "${@bb.utils.contains("COMBINED_FEATURES", "efi", "1", "0", d)}"
|
||||||
COREOS_IMAGE_GENERATE_SWU ?= "${@"1" if "efi" in d.getVar('COMBINED_FEATURES') and "swupdate" in d.getVar("DISTRO_FEATURES") else "0"}"
|
COREOS_IMAGE_GENERATE_SWU ?= "${@"1" if "efi" in d.getVar('COMBINED_FEATURES') and "swupdate" in d.getVar("DISTRO_FEATURES") else "0"}"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,3 +10,6 @@ IMAGE_INSTALL:append = "${@bb.utils.contains("IMAGE_FEATURES", "swupdate", " swu
|
||||||
|
|
||||||
# development tools
|
# development tools
|
||||||
IMAGE_INSTALL:append = " systemd-analyze"
|
IMAGE_INSTALL:append = " systemd-analyze"
|
||||||
|
|
||||||
|
# Enable the optional image installer
|
||||||
|
COREOS_IMAGE_GENERATE_INSTALLER = "1"
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,4 @@
|
||||||
DESCRIPTION = "Initramfs image with the CoreOS emmc installer"
|
DESCRIPTION = "Initramfs image with the CoreOS emmc installer"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Don't reboot the device at reboot and don't do A/B switching
|
|
||||||
BAD_RECOMMENDATIONS = "swupdate-progress swupdate-coreos-config"
|
|
||||||
|
|
||||||
export IMAGE_BASENAME = "${MLPREFIX}${PN}"
|
|
||||||
IMAGE_NAME_SUFFIX ?= ""
|
|
||||||
IMAGE_LINGUAS = ""
|
|
||||||
|
|
||||||
LICENSE = "MIT"
|
LICENSE = "MIT"
|
||||||
|
|
||||||
IMAGE_FSTYPES = "cpio.gz"
|
inherit coreos-image-installer
|
||||||
|
|
||||||
# Support for generating a SDCard installer is optional
|
|
||||||
COREOS_INSTALLER_WKS_FILE ??= ""
|
|
||||||
WKS_FILE = "${COREOS_INSTALLER_WKS_FILE}"
|
|
||||||
IMAGE_FSTYPES += "${@'wic.xz wic.bmap' if d.getVar('COREOS_INSTALLER_WKS_FILE') else ''}"
|
|
||||||
IMAGE_BOOT_FILES = "${COREOS_KERNEL_FILENAME};EFI/BOOT/${EFI_BOOT_IMAGE}"
|
|
||||||
|
|
||||||
COREOS_IMAGE_GENERATE_UKI = "1"
|
|
||||||
|
|
||||||
# Avoid dependancy loop, we are already in an installer image, so we don't need
|
|
||||||
# to bundle another one
|
|
||||||
COREOS_IMAGE_GENERATE_INSTALLER = "0"
|
|
||||||
|
|
||||||
# IMGDEPLOYDIR has to be used instead of DEPLOY_DIR_IMAGE here, because it will
|
|
||||||
# run during image generation
|
|
||||||
COREOS_UKI_PART_INITRAMFS = "${IMGDEPLOYDIR}/${IMAGE_BASENAME}-${MACHINE}.cpio.gz"
|
|
||||||
COREOS_IMAGE_GENERATE_SWU = "0"
|
|
||||||
|
|
||||||
# Change generated UKI filename and reset the bundled command line to "APPEND"
|
|
||||||
# to ensure that root is not set in the kernel command line
|
|
||||||
COREOS_KERNEL_NAME ?= "coreos-installer-${MACHINE}"
|
|
||||||
COREOS_KERNEL_CMDLINE ?= "${APPEND}"
|
|
||||||
|
|
||||||
inherit coreos-image
|
|
||||||
|
|
||||||
# Only install a reduced set of package and feature to keep image size small
|
|
||||||
IMAGE_INSTALL = "packagegroup-coreos-boot coreos-installer swupdate-www util-linux-sfdisk util-linux-fdisk util-linux-cfdisk efibootguard efibootguard-tools"
|
|
||||||
IMAGE_FEATURES = "debug-tweaks swupdate networkmanager"
|
|
||||||
NO_RECOMMENDATIONS = "1"
|
|
||||||
|
|
||||||
IMAGE_ROOTFS_SIZE = "8192"
|
|
||||||
INITRAMFS_MAXSIZE = "976562"
|
|
||||||
IMAGE_ROOTFS_EXTRA_SPACE = "0"
|
|
||||||
|
|
||||||
# Use the same restriction as initramfs-module-install
|
|
||||||
COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)'
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# catch errors from previous source files
|
||||||
|
if [ "$SWUPDATE_EXIT" != "" ]; then
|
||||||
|
# Notify the installation status indicator about the failed installation.
|
||||||
|
# This can result in the red LED lighting up.
|
||||||
|
dbus-send --system /org/belden/CoreOSInstallationStatusIndicator org.belden.CoreOSInstallationStatusIndicator.InstallationStatusFailure
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Notify the installation status indicator about the success with partitioning
|
||||||
|
# the blockdevice. This can result in the first green LED lighting up.
|
||||||
|
dbus-send --system /org/belden/CoreOSInstallationStatusIndicator org.belden.CoreOSInstallationStatusIndicator.InstallationStatusPartitioningSuccess
|
||||||
|
|
||||||
|
mount /dev/disk/by-label/image /mnt
|
||||||
|
if [ ! -f "/mnt/image.swu" ]; then
|
||||||
|
echo "Could not find image.swu on the vfat partition!"
|
||||||
|
dbus-send --system /org/belden/CoreOSInstallationStatusIndicator org.belden.CoreOSInstallationStatusIndicator.InstallationStatusFailure
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SWUPDATE_ARGS="${SWUPDATE_ARGS} -p /usr/lib/swupdate/post-install.sh"
|
||||||
|
SWUPDATE_ARGS="${SWUPDATE_ARGS} -i /mnt/image.swu"
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
# Notify the installation status indicator about the success with flashing the image.
|
||||||
|
# This can result in the second green LED lighting up.
|
||||||
|
dbus-send --system /org/belden/CoreOSInstallationStatusIndicator org.belden.CoreOSInstallationStatusIndicator.InstallationStatusImageFlashingSuccess
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
DESCRIPTION = "CoreOS scripts for unattended installation"
|
||||||
|
SECTION = "coreos"
|
||||||
|
LICENSE = "CLOSED"
|
||||||
|
|
||||||
|
SRC_URI += "\
|
||||||
|
file://99-overwrite.sh \
|
||||||
|
file://post-install.sh \
|
||||||
|
"
|
||||||
|
|
||||||
|
FILES:${PN} = "\
|
||||||
|
${libdir}/swupdate/conf.d/99-overwrite.sh \
|
||||||
|
${libdir}/swupdate/post-install.sh \
|
||||||
|
"
|
||||||
|
|
||||||
|
RDEPENDS:${PN} = "coreos-installer"
|
||||||
|
|
||||||
|
RCONFLICTS:${PN} = "swupdate-www"
|
||||||
|
|
||||||
|
do_install() {
|
||||||
|
install -d ${D}${libdir}/swupdate/conf.d
|
||||||
|
install -m 755 ${WORKDIR}/post-install.sh ${D}${libdir}/swupdate/
|
||||||
|
install -m 755 ${WORKDIR}/99-overwrite.sh ${D}${libdir}/swupdate/conf.d/
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
#!/usr/bin/env sh
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
set -o errtrace
|
||||||
|
trap 'echo "An error occured in line $LINENO: $BASH_COMMAND, exiting..."; SWUPDATE_EXIT=1; exit;' ERR
|
||||||
|
|
||||||
# Read /etc/hwrevision and turn it into a stripped string
|
# Read /etc/hwrevision and turn it into a stripped string
|
||||||
# with the format ${MACHINE}_${VERSION}
|
# with the format ${MACHINE}_${VERSION}
|
||||||
HWREVISION=$(tr ' ' '_' < /etc/hwrevision | tr -d '[:space:]')
|
HWREVISION=$(tr ' ' '_' < /etc/hwrevision | tr -d '[:space:]')
|
||||||
|
|
@ -15,6 +18,13 @@ fi
|
||||||
|
|
||||||
DISK=$(grep "^device:\s" < "${SFDISK_DUMP_FILE}" | cut -d ' ' -f 2)
|
DISK=$(grep "^device:\s" < "${SFDISK_DUMP_FILE}" | cut -d ' ' -f 2)
|
||||||
|
|
||||||
|
# Remove the partition table signature, if there is already one.
|
||||||
|
# This ensures that sfdisk always finds a 'clean' disk to install / recover
|
||||||
|
wipefs -a -f ${DISK}
|
||||||
|
|
||||||
|
# Give the kernel some time to reload the partition
|
||||||
|
sleep 3
|
||||||
|
|
||||||
echo "Flashing ${SFDISK_DUMP_FILE} to ${DISK}"
|
echo "Flashing ${SFDISK_DUMP_FILE} to ${DISK}"
|
||||||
cat "${SFDISK_DUMP_FILE}"
|
cat "${SFDISK_DUMP_FILE}"
|
||||||
sfdisk "${DISK}" < "${SFDISK_DUMP_FILE}"
|
sfdisk "${DISK}" < "${SFDISK_DUMP_FILE}"
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,18 @@
|
||||||
DESCRIPTION = "CoreOS Installer scripts"
|
DESCRIPTION = "CoreOS Installer scripts"
|
||||||
LICENSE = "CLOSED"
|
|
||||||
SECTION = "coreos"
|
SECTION = "coreos"
|
||||||
|
LICENSE = "CLOSED"
|
||||||
|
|
||||||
SRC_URI+= " \
|
SRC_URI += "file://25-installer-config.sh"
|
||||||
file://25-installer-config.sh \
|
|
||||||
"
|
|
||||||
|
|
||||||
# This package ship an alternate configuration for SWUpade to disable A/B
|
FILES:${PN} = "${libdir}/swupdate/conf.d/25-installer-config.sh"
|
||||||
# switching and always flash A
|
|
||||||
RCONFLICTS:${PN}= "swupdate-coreos-config"
|
|
||||||
|
|
||||||
FILES:${PN} = " \
|
|
||||||
${libdir}/swupdate/conf.d/25-installer-config.sh \
|
|
||||||
"
|
|
||||||
|
|
||||||
# glibc-utils provide iconv
|
# glibc-utils provide iconv
|
||||||
# glibc-gconv-utf-16 provide utf-16 support to iconv
|
# glibc-gconv-utf-16 provide utf-16 support to iconv
|
||||||
RDEPENDS:${PN} = "coreos-installer-config dosfstools util-linux-lsblk util-linux-sfdisk glibc-utils glibc-gconv-utf-16"
|
RDEPENDS:${PN} = "coreos-installer-config dosfstools glibc-gconv-utf-16 glibc-utils util-linux-lsblk util-linux-sfdisk util-linux-wipefs"
|
||||||
|
|
||||||
|
# This package ships an alternate configuration for SWUpdate to disable A/B
|
||||||
|
# switching and always flash A
|
||||||
|
RCONFLICTS:${PN} = "swupdate-coreos-config"
|
||||||
|
|
||||||
do_install() {
|
do_install() {
|
||||||
install -d ${D}${libdir}/swupdate/conf.d
|
install -d ${D}${libdir}/swupdate/conf.d
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ CONFIG_DISKPART=y
|
||||||
CONFIG_DISKPART_FORMAT=y
|
CONFIG_DISKPART_FORMAT=y
|
||||||
CONFIG_FAT_FILESYSTEM=y
|
CONFIG_FAT_FILESYSTEM=y
|
||||||
CONFIG_EXT_FILESYSTEM=y
|
CONFIG_EXT_FILESYSTEM=y
|
||||||
|
CONFIG_SIGNED=y
|
||||||
CONFIG_SIGNED_IMAGES=y
|
CONFIG_SIGNED_IMAGES=y
|
||||||
CONFIG_SIGALG_RAWRSA=n
|
CONFIG_SIGALG_RAWRSA=n
|
||||||
CONFIG_SIGALG_CMS=y
|
CONFIG_SIGALG_CMS=y
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ sector-size: 512
|
||||||
/dev/mmcblk0p1 : start= 4096, size= 8192, type=71B02716-C000-4F0D-AE03-2F5DC0A114CD, name="fw0", attrs="RequiredPartition"
|
/dev/mmcblk0p1 : start= 4096, size= 8192, type=71B02716-C000-4F0D-AE03-2F5DC0A114CD, name="fw0", attrs="RequiredPartition"
|
||||||
/dev/mmcblk0p2 : start= 12288, size= 8192, type=71B02716-C000-4F0D-AE03-2F5DC0A114CD, name="fw1", attrs="RequiredPartition"
|
/dev/mmcblk0p2 : start= 12288, size= 8192, type=71B02716-C000-4F0D-AE03-2F5DC0A114CD, name="fw1", attrs="RequiredPartition"
|
||||||
|
|
||||||
/dev/mmcblk0p3 : start= 20480, size= 131072, ${SFDISK_PART_EFI}
|
/dev/mmcblk0p3 : size= ${PART_EFI_SIZE}, ${SFDISK_PART_EFI}
|
||||||
/dev/mmcblk0p4 : start= 151552, size= 262144, ${SFDISK_PART_EFIBOOTGUARD_A}
|
/dev/mmcblk0p4 : size= ${PART_EFIBG_SIZE}, ${SFDISK_PART_EFIBOOTGUARD_A}
|
||||||
/dev/mmcblk0p5 : start= 413696, size= 262144, ${SFDISK_PART_EFIBOOTGUARD_B}
|
/dev/mmcblk0p5 : size= ${PART_EFIBG_SIZE}, ${SFDISK_PART_EFIBOOTGUARD_B}
|
||||||
/dev/mmcblk0p6 : start= 675840, size= 7294976, ${SFDISK_PART_ROOT_A}
|
/dev/mmcblk0p6 : size= ${PART_ROOT_SIZE}, ${SFDISK_PART_ROOT_A}
|
||||||
/dev/mmcblk0p7 : start= 7970816, size= 7294976, ${SFDISK_PART_ROOT_B}
|
/dev/mmcblk0p7 : size= ${PART_ROOT_SIZE}, ${SFDISK_PART_ROOT_B}
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@
|
||||||
part --offset 4096S --source rawcopy --sourceparams="file=flash-image.bin" --ondisk mmcblk1 --size 4M --extra-space 0 --overhead-factor 1 --part-name fw0
|
part --offset 4096S --source rawcopy --sourceparams="file=flash-image.bin" --ondisk mmcblk1 --size 4M --extra-space 0 --overhead-factor 1 --part-name fw0
|
||||||
part --offset 12288S --source rawcopy --sourceparams="file=flash-image.bin" --ondisk mmcblk1 --size 4M --extra-space 0 --overhead-factor 1 --part-name fw1
|
part --offset 12288S --source rawcopy --sourceparams="file=flash-image.bin" --ondisk mmcblk1 --size 4M --extra-space 0 --overhead-factor 1 --part-name fw1
|
||||||
|
|
||||||
${WKS_PART_EFI} --ondisk mmcblk1 --offset 20480S --size 64M --extra-space 0 --overhead-factor 1
|
${WKS_PART_EFI} --ondisk mmcblk1 --offset 20480S --size ${PART_EFI_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_ROOT_A} --ondisk mmcblk1 --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_ROOT_A} --ondisk mmcblk1 --size ${PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_ROOT_B} --ondisk mmcblk1 --size ${WKS_PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_ROOT_B} --ondisk mmcblk1 --size ${PART_ROOT_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_EFIBOOTGUARD_A} --ondisk mmcblk1 --align 1024 --size 128M --extra-space 0 --overhead-factor 1
|
${WKS_PART_EFIBOOTGUARD_A} --ondisk mmcblk1 --align 1024 --size ${PART_EFIBG_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_EFIBOOTGUARD_B} --ondisk mmcblk1 --align 1024 --size 128M --extra-space 0 --overhead-factor 1
|
${WKS_PART_EFIBOOTGUARD_B} --ondisk mmcblk1 --align 1024 --size ${PART_EFIBG_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
${WKS_PART_USERDATA} --ondisk mmcblk1 --size ${WKS_PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1
|
${WKS_PART_USERDATA} --ondisk mmcblk1 --size ${PART_USERDATA_SIZE} --extra-space 0 --overhead-factor 1
|
||||||
|
|
||||||
bootloader --ptable gpt
|
bootloader --ptable gpt
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue