summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMilton Miller <miltonm@us.ibm.com>2016-06-14 14:42:05 -0500
committerMilton Miller <miltonm@us.ibm.com>2016-06-30 14:46:44 -0500
commit61fba335a99b33f17c1c190043b7d5d980c59181 (patch)
tree838018eb3395414b39a9b27a5c15c7ec598cbb5f
parent9476a6a51c1bebb363e098c8e741a210aefbf88a (diff)
downloadtalos-openbmc-61fba335a99b33f17c1c190043b7d5d980c59181.tar.gz
talos-openbmc-61fba335a99b33f17c1c190043b7d5d980c59181.zip
image-types_uboot: Package a self contained netboot image
Create a cpio containing the base read-only image, and create a single combined initramfs image consisting of the image-rofs and the existing initramfs. There has been a desire to have a self contained netboot image present for developer testing and experimentation. The init script already supports having the rofs layer sourced from a file packaged into the initramfs, and will use it if found. While this image will not fit in the current flash layout in the initrd space, it will load over the network. This method leaves the squashfs compressed in RAM, decompreses is invoked as needed at runtime, trading boot time and memory space for runtime decompress on demand. This will also give similar file access overheads and performance to reading the data from flash. Because the rofs is already compressed with xz compression, don't try to compress this cpio (the cpio packaging adds about 40 bytes of ascii before and after, plus some alignment padding). Because the kernel requires uncompressed cpios to appear on a 4-byte boundary with 0 byte fill between archives, place this cpio first in the combined image. Signed-off-by: Milton Miller <miltonm@us.ibm.com>
-rw-r--r--meta-phosphor/classes/obmc-phosphor-image_types_uboot.bbclass10
1 files changed, 10 insertions, 0 deletions
diff --git a/meta-phosphor/classes/obmc-phosphor-image_types_uboot.bbclass b/meta-phosphor/classes/obmc-phosphor-image_types_uboot.bbclass
index 67a389fbc..dd990bc5e 100644
--- a/meta-phosphor/classes/obmc-phosphor-image_types_uboot.bbclass
+++ b/meta-phosphor/classes/obmc-phosphor-image_types_uboot.bbclass
@@ -51,6 +51,8 @@ do_generate_flash() {
uinitrd="${initrd}.u-boot"
rootfs="${IMAGE_LINK_NAME}.${IMAGE_BASETYPE}"
rwfs="rwfs.${OVERLAY_BASETYPE}"
+ rofsimg=rofs.${IMAGE_BASETYPE}.cpio
+ netimg=initramfs-netboot.cpio
if [ ! -f $ddir/$kernel ]; then
bbfatal "Kernel file ${ddir}/${kernel} does not exist"
@@ -94,4 +96,12 @@ do_generate_flash() {
tar -h -cvf ${ddir}/${MACHINE}-${DATETIME}.all.tar -C ${ddir} image-bmc
tar -h -cvf ${ddir}/${MACHINE}-${DATETIME}.tar -C ${ddir} image-u-boot image-kernel image-initramfs image-rofs image-rwfs
+
+ # Package the root image (rofs layer) with the initramfs for net booting.
+ # Uses the symlink above to get the desired name in the cpio
+ ( cd $ddir && echo image-rofs | cpio -oHnewc -L > ${rofsimg} )
+ # Prepend the rofs cpio -- being uncompressed it must be 4-byte aligned
+ cat ${ddir}/${rofsimg} ${ddir}/${initrd} > ${ddir}/${netimg}
+ oe_mkimage "${netimg}" "${INITRD_CTYPE}"
+
}
OpenPOWER on IntegriCloud