summaryrefslogtreecommitdiffstats
path: root/meta/classes
diff options
context:
space:
mode:
authorJason Wessel <jason.wessel@windriver.com>2013-09-17 13:32:18 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-30 22:11:56 +0100
commitfde291198386dae7eca868276d5e1a7b069fda58 (patch)
tree2021d61a9a8c429bb7611bca335c2f22f7cc8c84 /meta/classes
parent4a0ff9c74dcf41847c23f30616e95f18309e59c1 (diff)
downloadpoky-fde291198386dae7eca868276d5e1a7b069fda58.tar.gz
bootimage.bbclass, zisofs-tools-native: add ability to compress ISO images
The mkzftree is needed to allow ISO images to be compressed with minimal runtime overhead. Below is an example of the savings on a core-image-minimal. Before ls -l: 24117248 core-image-minimal-qemux86-64.iso Using the mkzftree ls -l: 16777216 core-image-minimal-qemux86-64.iso (From OE-Core rev: 808d4371939ec48ed62e0c0b6614b96d61b1f7b8) Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Reviewed-by: Darren Hart <dvhart@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r--meta/classes/bootimg.bbclass24
1 files changed, 21 insertions, 3 deletions
diff --git a/meta/classes/bootimg.bbclass b/meta/classes/bootimg.bbclass
index fdd4ea9561..c61c4e985e 100644
--- a/meta/classes/bootimg.bbclass
+++ b/meta/classes/bootimg.bbclass
@@ -19,13 +19,15 @@
19 19
20# External variables (also used by syslinux.bbclass) 20# External variables (also used by syslinux.bbclass)
21# ${INITRD} - indicates a filesystem image to use as an initrd (optional) 21# ${INITRD} - indicates a filesystem image to use as an initrd (optional)
22# ${COMPRESSISO} - Transparent compress ISO, reduce size ~40% if set to 1
22# ${NOISO} - skip building the ISO image if set to 1 23# ${NOISO} - skip building the ISO image if set to 1
23# ${NOHDD} - skip building the HDD image if set to 1 24# ${NOHDD} - skip building the HDD image if set to 1
24# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional) 25# ${ROOTFS} - indicates a filesystem image to include as the root filesystem (optional)
25 26
26do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \ 27do_bootimg[depends] += "dosfstools-native:do_populate_sysroot \
27 mtools-native:do_populate_sysroot \ 28 mtools-native:do_populate_sysroot \
28 cdrtools-native:do_populate_sysroot" 29 cdrtools-native:do_populate_sysroot \
30 ${@oe.utils.ifelse(d.getVar('COMPRESSISO'),'zisofs-tools-native:do_populate_sysroot','')}"
29 31
30PACKAGES = " " 32PACKAGES = " "
31EXCLUDE_FROM_WORLD = "1" 33EXCLUDE_FROM_WORLD = "1"
@@ -33,6 +35,8 @@ EXCLUDE_FROM_WORLD = "1"
33HDDDIR = "${S}/hddimg" 35HDDDIR = "${S}/hddimg"
34ISODIR = "${S}/iso" 36ISODIR = "${S}/iso"
35EFIIMGDIR = "${S}/efi_img" 37EFIIMGDIR = "${S}/efi_img"
38COMPACT_ISODIR = "${S}/iso.z"
39COMPRESSISO ?= "0"
36 40
37BOOTIMG_VOLUME_ID ?= "boot" 41BOOTIMG_VOLUME_ID ?= "boot"
38BOOTIMG_EXTRA_SPACE ?= "512" 42BOOTIMG_EXTRA_SPACE ?= "512"
@@ -97,18 +101,32 @@ build_iso() {
97 install -m 0644 ${STAGING_DATADIR}/syslinux/isolinux.bin ${ISODIR}${ISOLINUXDIR} 101 install -m 0644 ${STAGING_DATADIR}/syslinux/isolinux.bin ${ISODIR}${ISOLINUXDIR}
98 fi 102 fi
99 103
104 if [ "${COMPRESSISO}" = "1" ] ; then
105 # create compact directory, compress iso
106 mkdir -p ${COMPACT_ISODIR}
107 mkzftree -z 9 -p 4 -F ${ISODIR}/rootfs.img ${COMPACT_ISODIR}/rootfs.img
108
109 # move compact iso to iso, then remove compact directory
110 mv ${COMPACT_ISODIR}/rootfs.img ${ISODIR}/rootfs.img
111 rm -Rf ${COMPACT_ISODIR}
112 mkisofs_compress_opts="-R -z -D -l"
113 else
114 mkisofs_compress_opts="-r"
115 fi
116
100 if [ "${PCBIOS}" = "1" ] && [ "${EFI}" != "1" ] ; then 117 if [ "${PCBIOS}" = "1" ] && [ "${EFI}" != "1" ] ; then
101 # PCBIOS only media 118 # PCBIOS only media
102 mkisofs -V ${BOOTIMG_VOLUME_ID} \ 119 mkisofs -V ${BOOTIMG_VOLUME_ID} \
103 -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ 120 -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
104 -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \ 121 -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} \
122 $mkisofs_compress_opts \
105 ${MKISOFS_OPTIONS} ${ISODIR} 123 ${MKISOFS_OPTIONS} ${ISODIR}
106 else 124 else
107 # EFI only OR EFI+PCBIOS 125 # EFI only OR EFI+PCBIOS
108 mkisofs -A ${BOOTIMG_VOLUME_ID} -V ${BOOTIMG_VOLUME_ID} \ 126 mkisofs -A ${BOOTIMG_VOLUME_ID} -V ${BOOTIMG_VOLUME_ID} \
109 -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \ 127 -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
110 -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} \ 128 -b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} \
111 -r ${MKISOFS_OPTIONS} \ 129 $mkisofs_compress_opts ${MKISOFS_OPTIONS} \
112 -eltorito-alt-boot -eltorito-platform efi \ 130 -eltorito-alt-boot -eltorito-platform efi \
113 -b efi.img -no-emul-boot \ 131 -b efi.img -no-emul-boot \
114 ${ISODIR} 132 ${ISODIR}