summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-phosphor/classes/image-overlay.bbclass144
-rw-r--r--meta-phosphor/classes/image_types_phosphor.bbclass205
-rw-r--r--meta-phosphor/conf/machine/include/obmc-bsp-common.inc2
3 files changed, 203 insertions, 148 deletions
diff --git a/meta-phosphor/classes/image-overlay.bbclass b/meta-phosphor/classes/image-overlay.bbclass
deleted file mode 100644
index 443c27131..000000000
--- a/meta-phosphor/classes/image-overlay.bbclass
+++ /dev/null
@@ -1,144 +0,0 @@
-# Constructs a bootable, fixed-offset mtd image with u-boot
-# bootloader, kernel fitimage, read only root filesystem,
-# and writeable overlay filesystem.
-
-IMAGE_BASETYPE ?= "squashfs-xz"
-OVERLAY_BASETYPE ?= "jffs2"
-
-IMAGE_TYPES += "overlay"
-
-IMAGE_TYPEDEP_overlay = "${IMAGE_BASETYPE}"
-IMAGE_TYPES_MASKED += "overlay"
-
-FLASH_KERNEL_IMAGE ?= "fitImage-${INITRAMFS_IMAGE}-${MACHINE}.bin"
-
-FLASH_UBOOT_OFFSET ?= "0"
-FLASH_KERNEL_OFFSET ?= "512"
-FLASH_ROFS_OFFSET ?= "4864"
-FLASH_RWFS_OFFSET ?= "28672"
-RWFS_SIZE ?= "4096"
-
-# Allow rwfs mkfs configuration through OVERLAY_MKFS_OPTS and OVERRIDES. However,
-# avoid setting 'ext4' or 'jffs2' in OVERRIDES as such raw filesystem types are
-# reserved for the primary image (and setting them currently breaks the build).
-# Instead, prefix the overlay override value with 'rwfs-' to avoid collisions.
-DISTROOVERRIDES .= ":rwfs-${OVERLAY_BASETYPE}"
-
-OVERLAY_MKFS_OPTS_rwfs-ext4 = "-b 4096 -F -O^huge_file"
-
-# $(( ${FLASH_SIZE} - ${FLASH_RWFS_OFFSET} ))
-
-mk_nor_image() {
- image_dst="$1"
- image_size_kb=$2
- dd if=/dev/zero bs=1k count=$image_size_kb \
- | tr '\000' '\377' > $image_dst
-}
-
-do_generate_flash() {
- ddir="${IMGDEPLOYDIR}"
- kernel="${FLASH_KERNEL_IMAGE}"
- uboot="u-boot.${UBOOT_SUFFIX}"
- rootfs="${IMAGE_LINK_NAME}.${IMAGE_BASETYPE}"
- rwfs="rwfs.${OVERLAY_BASETYPE}"
-
- flash="${IMAGE_NAME}.overlay"
-
- mk_nor_image ${S}/$rwfs ${RWFS_SIZE}
- if [ "${OVERLAY_BASETYPE}" != jffs2 ]; then
- mkfs.${OVERLAY_BASETYPE} ${OVERLAY_MKFS_OPTS} ${S}/$rwfs || \
- bbfatal "mkfs rwfs"
- fi
-
- # Assemble the flash image
- dst="$ddir/$flash"
- mk_nor_image $dst ${FLASH_SIZE}
- dd if=${DEPLOY_DIR_IMAGE}/$uboot of=$dst bs=1k conv=notrunc seek=${FLASH_UBOOT_OFFSET}
- dd if=${DEPLOY_DIR_IMAGE}/$kernel of=$dst bs=1k conv=notrunc seek=${FLASH_KERNEL_OFFSET}
- dd if=$ddir/$rootfs of=$dst bs=1k conv=notrunc seek=${FLASH_ROFS_OFFSET}
- dd if=${S}/$rwfs of=$dst bs=1k conv=notrunc seek=${FLASH_RWFS_OFFSET}
-
- cd ${IMGDEPLOYDIR}
- ln -sf $flash ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.overlay
-
- # Maintain a number of non-standard name legacy links.
- ln -sf $flash ${IMGDEPLOYDIR}/flash-${MACHINE}
- ln -sf $flash ${IMGDEPLOYDIR}/image-bmc
- ln -sf $uboot ${IMGDEPLOYDIR}/image-u-boot
- ln -sf $kernel ${IMGDEPLOYDIR}/image-kernel
- ln -sf $rootfs ${IMGDEPLOYDIR}/image-rofs
- cp ${S}/$rwfs ${IMGDEPLOYDIR}/$rwfs
- ln -sf $rwfs ${IMGDEPLOYDIR}/image-rwfs
-}
-
-make_overlay_tars() {
- ddir="${IMGDEPLOYDIR}"
- kernel="${FLASH_KERNEL_IMAGE}"
- uboot="u-boot.${UBOOT_SUFFIX}"
- rootfs="${IMAGE_LINK_NAME}.${IMAGE_BASETYPE}"
- rwfs="rwfs.${OVERLAY_BASETYPE}"
-
- flash="${IMAGE_NAME}.overlay"
- alltar="${IMAGE_NAME}.all.tar"
- tar="${IMAGE_NAME}.tar"
-
- # Create some links to help make the tar archives
- ln -sf $ddir/${IMAGE_LINK_NAME}.overlay ${S}/image-bmc
- ln -sf ${DEPLOY_DIR_IMAGE}/$uboot ${S}/image-u-boot
- ln -sf ${DEPLOY_DIR_IMAGE}/$kernel ${S}/image-kernel
- ln -sf $ddir/$rootfs ${S}/image-rofs
- ln -sf $rwfs ${S}/image-rwfs
-
- # Create the tar archives
- tar -h -cvf $ddir/$alltar -C ${S} image-bmc MANIFEST
- tar -h -cvf $ddir/$tar -C ${S} image-u-boot image-kernel image-rofs image-rwfs MANIFEST
-
- cd ${IMGDEPLOYDIR}
- ln -sf $alltar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.all.tar
- ln -sf $tar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.tar
-
- # Maintain a number of non-standard name legacy links.
- ln -sf $tar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.tar
- ln -sf $alltar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.all.tar
-}
-
-make_overlay_tars[vardepsexclude] = "DATETIME"
-
-def generate_manifest(d):
- import configparser
- import io
- path = d.getVar('STAGING_DIR_HOST', True) + d.getVar('sysconfdir', True)
- path = os.path.join(path, 'os-release')
- parser = configparser.SafeConfigParser(strict=False)
- parser.optionxform = str
- version = ''
- with open(path, 'r') as fd:
- buf = '[root]\n' + fd.read()
- fd = io.StringIO(buf)
- parser.readfp(fd)
- version = parser['root']['VERSION_ID']
-
- with open(os.path.join(d.getVar('S', True), 'MANIFEST'), 'w') as fd:
- fd.write('purpose=xyz.openbmc_project.Software.Version.VersionPurpose.BMC\n')
- fd.write('version={}\n'.format(version.strip('"')))
-
-
-python do_generate_tars() {
- generate_manifest(d)
- bb.build.exec_func('make_overlay_tars', d)
-}
-
-
-do_generate_flash[depends] += " \
- ${PN}:do_image_${@d.getVar('IMAGE_BASETYPE', True).replace('-', '_')} \
- virtual/kernel:do_deploy \
- u-boot:do_populate_sysroot \
- "
-
-do_generate_tars[depends] += " \
- ${PN}:do_generate_flash \
- os-release:do_populate_sysroot \
- "
-
-addtask generate_flash before do_image_complete
-addtask generate_tars before do_image_complete
diff --git a/meta-phosphor/classes/image_types_phosphor.bbclass b/meta-phosphor/classes/image_types_phosphor.bbclass
index eef1b1c67..51259df12 100644
--- a/meta-phosphor/classes/image_types_phosphor.bbclass
+++ b/meta-phosphor/classes/image_types_phosphor.bbclass
@@ -11,6 +11,205 @@ def build_uboot(d):
IMAGE_TYPE_uboot = '${@build_uboot(d)}'
inherit ${IMAGE_TYPE_uboot}
-# Inherit the overlay class if overlay is in use.
-IMAGE_TYPE_overlay = '${@bb.utils.contains("IMAGE_FSTYPES", "overlay", "image-overlay", "", d)}'
-inherit ${IMAGE_TYPE_overlay}
+# Phosphor image types
+#
+# Phosphor OpenBMC supports a fixed partition mtd layout.
+
+# Image composition
+FLASH_KERNEL_IMAGE ?= "fitImage-${INITRAMFS_IMAGE}-${MACHINE}.bin"
+IMAGE_BASETYPE ?= "squashfs-xz"
+OVERLAY_BASETYPE ?= "jffs2"
+
+IMAGE_TYPES += "mtd-static mtd-static-alltar mtd-static-tar"
+
+IMAGE_TYPEDEP_mtd-static = "${IMAGE_BASETYPE}"
+IMAGE_TYPEDEP_mtd-static-tar = "${IMAGE_BASETYPE}"
+IMAGE_TYPEDEP_mtd-static-alltar = "mtd-static"
+IMAGE_TYPES_MASKED += "mtd-static mtd-static-alltar mtd-static-tar"
+
+# Flash characteristics
+FLASH_SIZE ?= "32768"
+
+# Fixed partition offsets
+FLASH_UBOOT_OFFSET ?= "0"
+FLASH_KERNEL_OFFSET ?= "512"
+FLASH_ROFS_OFFSET ?= "4864"
+FLASH_RWFS_OFFSET ?= "28672"
+
+# Allow rwfs mkfs configuration through OVERLAY_MKFS_OPTS and OVERRIDES. However,
+# avoid setting 'ext4' or 'jffs2' in OVERRIDES as such raw filesystem types are
+# reserved for the primary image (and setting them currently breaks the build).
+# Instead, prefix the overlay override value with 'rwfs-' to avoid collisions.
+DISTROOVERRIDES .= ":static-rwfs-${OVERLAY_BASETYPE}"
+
+JFFS2_RWFS_CMD = "mkfs.jffs2 --root=jffs2 --faketime --output=rwfs.jffs2"
+
+FLASH_STATIC_RWFS_CMD_static-rwfs-jffs2 = "${JFFS2_RWFS_CMD}"
+
+mk_nor_image() {
+ image_dst="$1"
+ image_size_kb=$2
+ dd if=/dev/zero bs=1k count=$image_size_kb \
+ | tr '\000' '\377' > $image_dst
+}
+
+make_rwfs() {
+ type=$1
+ cmd=$2
+ shift
+ shift
+ opts="$@"
+
+ rm -f rwfs.$type
+ rm -rf $type
+ mkdir $type
+
+ $cmd $opts
+}
+
+do_generate_rwfs_static() {
+ make_rwfs ${OVERLAY_BASETYPE} "${FLASH_STATIC_RWFS_CMD}" ${OVERLAY_MKFS_OPTS}
+}
+do_generate_rwfs_static[dirs] = " ${S}/static"
+do_generate_rwfs_static[depends] += " \
+ mtd-utils-native:do_populate_sysroot \
+ "
+
+do_generate_static() {
+ # Assemble the flash image
+ mk_nor_image ${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd ${FLASH_SIZE}
+ dd bs=1k conv=notrunc seek=${FLASH_UBOOT_OFFSET} \
+ if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
+ of=${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd
+
+ dd bs=1k conv=notrunc seek=${FLASH_KERNEL_OFFSET} \
+ if=${DEPLOY_DIR_IMAGE}/${FLASH_KERNEL_IMAGE} \
+ of=${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd
+
+ dd bs=1k conv=notrunc seek=${FLASH_ROFS_OFFSET} \
+ if=${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.${IMAGE_BASETYPE} \
+ of=${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd
+
+ dd bs=1k conv=notrunc seek=${FLASH_RWFS_OFFSET} \
+ if=rwfs.${OVERLAY_BASETYPE} \
+ of=${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd
+ # File needed for generating non-standard legacy links below
+ cp rwfs.${OVERLAY_BASETYPE} ${IMGDEPLOYDIR}/rwfs.${OVERLAY_BASETYPE}
+
+ cd ${IMGDEPLOYDIR}
+ ln -sf ${IMAGE_NAME}.static.mtd ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.static.mtd
+
+ # Maintain non-standard legacy links
+ ln -sf ${IMAGE_NAME}.static.mtd ${IMGDEPLOYDIR}/flash-${MACHINE}
+ ln -sf ${IMAGE_NAME}.static.mtd ${IMGDEPLOYDIR}/image-bmc
+ ln -sf u-boot.${UBOOT_SUFFIX} ${IMGDEPLOYDIR}/image-u-boot
+ ln -sf ${FLASH_KERNEL_IMAGE} ${IMGDEPLOYDIR}/image-kernel
+ ln -sf ${IMAGE_LINK_NAME}.${IMAGE_BASETYPE} ${IMGDEPLOYDIR}/image-rofs
+ ln -sf rwfs.${OVERLAY_BASETYPE} ${IMGDEPLOYDIR}/image-rwfs
+}
+do_generate_static[dirs] = "${S}/static"
+do_generate_static[depends] += " \
+ ${PN}:do_image_${@d.getVar('IMAGE_BASETYPE', True).replace('-', '_')} \
+ virtual/kernel:do_deploy \
+ u-boot:do_populate_sysroot \
+ "
+
+do_generate_static_alltar() {
+ ln -sf ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.static.mtd image-bmc
+ tar -h -cvf ${IMGDEPLOYDIR}/${IMAGE_NAME}.static.mtd.all.tar image-bmc
+
+ cd ${IMGDEPLOYDIR}
+
+ ln -sf ${IMAGE_NAME}.static.mtd.all.tar \
+ ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.static.mtd.all.tar
+
+ # Maintain non-standard legacy link.
+ ln -sf ${IMAGE_NAME}.static.mtd.all.tar \
+ ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.all.tar
+}
+do_generate_static_alltar[vardepsexclude] = "DATETIME"
+do_generate_static_alltar[dirs] = "${S}/static"
+
+make_tar_of_images() {
+ rwfs=$1
+ rofs=$2
+ type=$3
+ shift
+ shift
+ shift
+ extra_files="$@"
+
+ # Create some links to help make the tar archive
+ ln -sf ${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} image-u-boot
+ ln -sf ${DEPLOY_DIR_IMAGE}/${FLASH_KERNEL_IMAGE} image-kernel
+ ln -sf ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$rofs image-rofs
+ ln -sf rwfs.$rwfs image-rwfs
+
+ # Create the tar archive
+ tar -h -cvf ${IMGDEPLOYDIR}/${IMAGE_NAME}.$type.mtd.tar \
+ image-u-boot image-kernel image-rofs image-rwfs $extra_files
+
+ cd ${IMGDEPLOYDIR}
+ ln -sf ${IMAGE_NAME}.$type.mtd.tar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$type.mtd.tar
+}
+
+do_generate_static_tar() {
+ make_tar_of_images ${OVERLAY_BASETYPE} ${IMAGE_BASETYPE} static
+
+ # Maintain non-standard legacy link.
+ cd ${IMGDEPLOYDIR}
+ ln -sf ${IMAGE_NAME}.static.mtd.tar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.tar
+}
+do_generate_static_tar[dirs] = " ${S}/static"
+do_generate_static_tar[depends] += " \
+ ${PN}:do_image_${@d.getVar('IMAGE_BASETYPE', True).replace('-', '_')} \
+ virtual/kernel:do_deploy \
+ u-boot:do_populate_sysroot \
+ "
+do_generate_static_tar[vardepsexclude] = "DATETIME"
+
+python do_generate_phosphor_manifest() {
+ import configparser
+ import io
+ path = d.getVar('STAGING_DIR_HOST', True) + d.getVar('sysconfdir', True)
+ path = os.path.join(path, 'os-release')
+ parser = configparser.SafeConfigParser(strict=False)
+ parser.optionxform = str
+ version = ''
+ with open(path, 'r') as fd:
+ buf = '[root]\n' + fd.read()
+ fd = io.StringIO(buf)
+ parser.readfp(fd)
+ version = parser['root']['VERSION_ID']
+
+ with open('MANIFEST', 'w') as fd:
+ fd.write('purpose=xyz.openbmc_project.Software.Version.VersionPurpose.BMC\n')
+ fd.write('version={}\n'.format(version.strip('"')))
+}
+do_generate_phosphor_manifest[dirs] = "${S}"
+do_generate_phosphor_manifest[depends] += " \
+ os-release:do_populate_sysroot \
+ "
+
+addtask generate_phosphor_manifest after do_rootfs
+addtask generate_rwfs_static after do_rootfs
+
+python() {
+ types = d.getVar('IMAGE_FSTYPES', True).split()
+
+ if any([x in types for x in ['mtd-static', 'mtd-static-alltar']]):
+ bb.build.addtask(
+ 'do_generate_static',
+ 'do_image_complete',
+ 'do_generate_rwfs_static', d)
+ if 'mtd-static-alltar' in types:
+ bb.build.addtask(
+ 'do_generate_static_alltar',
+ 'do_image_complete',
+ 'do_generate_static', d)
+ if 'mtd-static-tar' in types:
+ bb.build.addtask(
+ 'do_generate_static_tar',
+ 'do_image_complete',
+ 'do_generate_rwfs_static', d)
+}
diff --git a/meta-phosphor/conf/machine/include/obmc-bsp-common.inc b/meta-phosphor/conf/machine/include/obmc-bsp-common.inc
index 03e73b340..63c5e1ab9 100644
--- a/meta-phosphor/conf/machine/include/obmc-bsp-common.inc
+++ b/meta-phosphor/conf/machine/include/obmc-bsp-common.inc
@@ -10,7 +10,7 @@ UBOOT_SUFFIX ?= "bin"
MACHINEOVERRIDES =. "openbmc:"
-IMAGE_FSTYPES += "cpio.${INITRAMFS_CTYPE}.u-boot overlay"
+IMAGE_FSTYPES += "cpio.${INITRAMFS_CTYPE}.u-boot mtd-static mtd-static-tar mtd-static-alltar"
OBMC_IMAGE_EXTRA_INSTALL_append = " u-boot-fw-utils"
INITRAMFS_CTYPE ?= "lzma"
OpenPOWER on IntegriCloud