summaryrefslogtreecommitdiffstats
path: root/meta/classes/image_types.bbclass
diff options
context:
space:
mode:
authorPatrick Ohly <patrick.ohly@intel.com>2016-03-07 18:07:52 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-03-07 17:17:43 +0000
commit26ee4ddc653d97f5c436c66a8504493209e3c65e (patch)
tree8366ab405083d255ef0aca4473aa6f1482429166 /meta/classes/image_types.bbclass
parente43fcdf1e83a95e9ee6382dec042d72213fdc600 (diff)
downloadpoky-26ee4ddc653d97f5c436c66a8504493209e3c65e.tar.gz
image creation: allow overriding .rootfs suffix
By default, the image file name contains ".rootfs" to distinguish the image file from other files created during image building. However, for certain image types (for example, .hddimg) the ".rootfs" suffix is redundant because the type suffix alone already uniquely identifies the main image file (core-image-minimal-intel-corei7-64.hddimg instead of core-image-minimal-intel-corei7-64.rootfs.hddimg). With this change, distros that prefer the shorter image name can override the .rootfs suffix unconditionally with IMAGE_NAME_SUFFIX ?= '' in their distro configuration or with some condition check like this: python () { if <whole-disk image format active>: d.setVar('IMAGE_NAME_SUFFIX', '') } The exact logic when to remove the extra suffix depends on the distro and how it enables its own image type. (From OE-Core rev: 380ee36811939d947024bf78de907e3c071b834f) Signed-off-by: Patrick Ohly <patrick.ohly@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes/image_types.bbclass')
-rw-r--r--meta/classes/image_types.bbclass63
1 files changed, 34 insertions, 29 deletions
diff --git a/meta/classes/image_types.bbclass b/meta/classes/image_types.bbclass
index db8cb37abc..22719ad554 100644
--- a/meta/classes/image_types.bbclass
+++ b/meta/classes/image_types.bbclass
@@ -1,3 +1,8 @@
1# IMAGE_NAME is the base name for everything produced when building images.
2# The actual image that contains the rootfs has an additional suffix (.rootfs
3# by default) followed by additional suffices which describe the format (.ext4,
4# .ext4.xz, etc.).
5IMAGE_NAME_SUFFIX ??= ".rootfs"
1 6
2# The default aligment of the size of the rootfs is set to 1KiB. In case 7# The default aligment of the size of the rootfs is set to 1KiB. In case
3# you're using the SD card emulation of a QEMU system simulator you may 8# you're using the SD card emulation of a QEMU system simulator you may
@@ -36,9 +41,9 @@ XZ_INTEGRITY_CHECK ?= "crc32"
36XZ_THREADS ?= "-T 0" 41XZ_THREADS ?= "-T 0"
37 42
38JFFS2_SUM_EXTRA_ARGS ?= "" 43JFFS2_SUM_EXTRA_ARGS ?= ""
39IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${EXTRA_IMAGECMD}" 44IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.jffs2 ${EXTRA_IMAGECMD}"
40 45
41IMAGE_CMD_cramfs = "mkfs.cramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cramfs ${EXTRA_IMAGECMD}" 46IMAGE_CMD_cramfs = "mkfs.cramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cramfs ${EXTRA_IMAGECMD}"
42 47
43oe_mkext234fs () { 48oe_mkext234fs () {
44 fstype=$1 49 fstype=$1
@@ -58,8 +63,8 @@ oe_mkext234fs () {
58 eval COUNT=\"$MIN_COUNT\" 63 eval COUNT=\"$MIN_COUNT\"
59 fi 64 fi
60 # Create a sparse image block 65 # Create a sparse image block
61 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype seek=$ROOTFS_SIZE count=$COUNT bs=1024 66 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype seek=$ROOTFS_SIZE count=$COUNT bs=1024
62 mkfs.$fstype -F $extra_imagecmd ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.$fstype -d ${IMAGE_ROOTFS} 67 mkfs.$fstype -F $extra_imagecmd ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.$fstype -d ${IMAGE_ROOTFS}
63} 68}
64 69
65IMAGE_CMD_ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}" 70IMAGE_CMD_ext2 = "oe_mkext234fs ext2 ${EXTRA_IMAGECMD}"
@@ -69,16 +74,16 @@ IMAGE_CMD_ext4 = "oe_mkext234fs ext4 ${EXTRA_IMAGECMD}"
69MIN_BTRFS_SIZE ?= "16384" 74MIN_BTRFS_SIZE ?= "16384"
70IMAGE_CMD_btrfs () { 75IMAGE_CMD_btrfs () {
71 if [ ${ROOTFS_SIZE} -gt ${MIN_BTRFS_SIZE} ]; then 76 if [ ${ROOTFS_SIZE} -gt ${MIN_BTRFS_SIZE} ]; then
72 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.btrfs count=${ROOTFS_SIZE} bs=1024 77 dd if=/dev/zero of=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs count=${ROOTFS_SIZE} bs=1024
73 mkfs.btrfs ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.btrfs 78 mkfs.btrfs ${EXTRA_IMAGECMD} -r ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.btrfs
74 else 79 else
75 bbfatal "Rootfs is too small for BTRFS (Rootfs Actual Size: ${ROOTFS_SIZE}, BTRFS Minimum Size: ${MIN_BTRFS_SIZE})" 80 bbfatal "Rootfs is too small for BTRFS (Rootfs Actual Size: ${ROOTFS_SIZE}, BTRFS Minimum Size: ${MIN_BTRFS_SIZE})"
76 fi 81 fi
77} 82}
78 83
79IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs ${EXTRA_IMAGECMD} -noappend" 84IMAGE_CMD_squashfs = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs ${EXTRA_IMAGECMD} -noappend"
80IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz" 85IMAGE_CMD_squashfs-xz = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-xz ${EXTRA_IMAGECMD} -noappend -comp xz"
81IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo" 86IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.squashfs-lzo ${EXTRA_IMAGECMD} -noappend -comp lzo"
82 87
83# By default, tar from the host is used, which can be quite old. If 88# By default, tar from the host is used, which can be quite old. If
84# you need special parameters (like --xattrs) which are only supported 89# you need special parameters (like --xattrs) which are only supported
@@ -91,18 +96,18 @@ IMAGE_CMD_squashfs-lzo = "mksquashfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE
91# In practice, it turned out to be not needed when creating archives and 96# In practice, it turned out to be not needed when creating archives and
92# required when extracting, but it seems prudent to use it in both cases. 97# required when extracting, but it seems prudent to use it in both cases.
93IMAGE_CMD_TAR ?= "tar" 98IMAGE_CMD_TAR ?= "tar"
94IMAGE_CMD_tar = "${IMAGE_CMD_TAR} -cvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar -C ${IMAGE_ROOTFS} ." 99IMAGE_CMD_tar = "${IMAGE_CMD_TAR} -cvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.tar -C ${IMAGE_ROOTFS} ."
95 100
96do_image_cpio[cleandirs] += "${WORKDIR}/cpio_append" 101do_image_cpio[cleandirs] += "${WORKDIR}/cpio_append"
97IMAGE_CMD_cpio () { 102IMAGE_CMD_cpio () {
98 (cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio) 103 (cd ${IMAGE_ROOTFS} && find . | cpio -o -H newc >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
99 if [ ! -L ${IMAGE_ROOTFS}/init -a ! -e ${IMAGE_ROOTFS}/init ]; then 104 if [ ! -L ${IMAGE_ROOTFS}/init -a ! -e ${IMAGE_ROOTFS}/init ]; then
100 if [ -L ${IMAGE_ROOTFS}/sbin/init -o -e ${IMAGE_ROOTFS}/sbin/init ]; then 105 if [ -L ${IMAGE_ROOTFS}/sbin/init -o -e ${IMAGE_ROOTFS}/sbin/init ]; then
101 ln -sf /sbin/init ${WORKDIR}/cpio_append/init 106 ln -sf /sbin/init ${WORKDIR}/cpio_append/init
102 else 107 else
103 touch ${WORKDIR}/cpio_append/init 108 touch ${WORKDIR}/cpio_append/init
104 fi 109 fi
105 (cd ${WORKDIR}/cpio_append && echo ./init | cpio -oA -H newc -F ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio) 110 (cd ${WORKDIR}/cpio_append && echo ./init | cpio -oA -H newc -F ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio)
106 fi 111 fi
107} 112}
108 113
@@ -110,8 +115,8 @@ ELF_KERNEL ?= "${STAGING_DIR_HOST}/usr/src/kernel/${KERNEL_IMAGETYPE}"
110ELF_APPEND ?= "ramdisk_size=32768 root=/dev/ram0 rw console=" 115ELF_APPEND ?= "ramdisk_size=32768 root=/dev/ram0 rw console="
111 116
112IMAGE_CMD_elf () { 117IMAGE_CMD_elf () {
113 test -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.elf && rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.elf 118 test -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf && rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf
114 mkelfImage --kernel=${ELF_KERNEL} --initrd=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio.gz --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.elf --append='${ELF_APPEND}' ${EXTRA_IMAGECMD} 119 mkelfImage --kernel=${ELF_KERNEL} --initrd=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.cpio.gz --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.elf --append='${ELF_APPEND}' ${EXTRA_IMAGECMD}
115} 120}
116IMAGE_TYPEDEP_elf = "cpio.gz" 121IMAGE_TYPEDEP_elf = "cpio.gz"
117 122
@@ -128,13 +133,13 @@ multiubi_mkfs() {
128 133
129 echo \[ubifs\] > ubinize${vname}-${IMAGE_NAME}.cfg 134 echo \[ubifs\] > ubinize${vname}-${IMAGE_NAME}.cfg
130 echo mode=ubi >> ubinize${vname}-${IMAGE_NAME}.cfg 135 echo mode=ubi >> ubinize${vname}-${IMAGE_NAME}.cfg
131 echo image=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}.rootfs.ubifs >> ubinize${vname}-${IMAGE_NAME}.cfg 136 echo image=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs >> ubinize${vname}-${IMAGE_NAME}.cfg
132 echo vol_id=0 >> ubinize${vname}-${IMAGE_NAME}.cfg 137 echo vol_id=0 >> ubinize${vname}-${IMAGE_NAME}.cfg
133 echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg 138 echo vol_type=dynamic >> ubinize${vname}-${IMAGE_NAME}.cfg
134 echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg 139 echo vol_name=${UBI_VOLNAME} >> ubinize${vname}-${IMAGE_NAME}.cfg
135 echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg 140 echo vol_flags=autoresize >> ubinize${vname}-${IMAGE_NAME}.cfg
136 mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}.rootfs.ubifs ${mkubifs_args} 141 mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ${mkubifs_args}
137 ubinize -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}.rootfs.ubi ${ubinize_args} ubinize${vname}-${IMAGE_NAME}.cfg 142 ubinize -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi ${ubinize_args} ubinize${vname}-${IMAGE_NAME}.cfg
138 143
139 # Cleanup cfg file 144 # Cleanup cfg file
140 mv ubinize${vname}-${IMAGE_NAME}.cfg ${DEPLOY_DIR_IMAGE}/ 145 mv ubinize${vname}-${IMAGE_NAME}.cfg ${DEPLOY_DIR_IMAGE}/
@@ -142,12 +147,12 @@ multiubi_mkfs() {
142 # Create own symlinks for 'named' volumes 147 # Create own symlinks for 'named' volumes
143 if [ -n "$vname" ]; then 148 if [ -n "$vname" ]; then
144 cd ${DEPLOY_DIR_IMAGE} 149 cd ${DEPLOY_DIR_IMAGE}
145 if [ -e ${IMAGE_NAME}${vname}.rootfs.ubifs ]; then 150 if [ -e ${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs ]; then
146 ln -sf ${IMAGE_NAME}${vname}.rootfs.ubifs \ 151 ln -sf ${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubifs \
147 ${IMAGE_LINK_NAME}${vname}.ubifs 152 ${IMAGE_LINK_NAME}${vname}.ubifs
148 fi 153 fi
149 if [ -e ${IMAGE_NAME}${vname}.rootfs.ubi ]; then 154 if [ -e ${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi ]; then
150 ln -sf ${IMAGE_NAME}${vname}.rootfs.ubi \ 155 ln -sf ${IMAGE_NAME}${vname}${IMAGE_NAME_SUFFIX}.ubi \
151 ${IMAGE_LINK_NAME}${vname}.ubi 156 ${IMAGE_LINK_NAME}${vname}.ubi
152 fi 157 fi
153 cd - 158 cd -
@@ -168,7 +173,7 @@ IMAGE_CMD_ubi () {
168 multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}" 173 multiubi_mkfs "${MKUBIFS_ARGS}" "${UBINIZE_ARGS}"
169} 174}
170 175
171IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubifs ${MKUBIFS_ARGS}" 176IMAGE_CMD_ubifs = "mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.ubifs ${MKUBIFS_ARGS}"
172 177
173WKS_FILE ?= "${IMAGE_BASENAME}.${MACHINE}.wks" 178WKS_FILE ?= "${IMAGE_BASENAME}.${MACHINE}.wks"
174WKS_FILES ?= "${WKS_FILE} ${IMAGE_BASENAME}.wks" 179WKS_FILES ?= "${WKS_FILE} ${IMAGE_BASENAME}.wks"
@@ -193,7 +198,7 @@ IMAGE_CMD_wic () {
193 fi 198 fi
194 199
195 BUILDDIR="${TOPDIR}" wic create "$wks" --vars "${STAGING_DIR_TARGET}/imgdata/" -e "${IMAGE_BASENAME}" -o "$out/" 200 BUILDDIR="${TOPDIR}" wic create "$wks" --vars "${STAGING_DIR_TARGET}/imgdata/" -e "${IMAGE_BASENAME}" -o "$out/"
196 mv "$out/build/$(basename "${wks%.wks}")"*.direct "$out.rootfs.wic" 201 mv "$out/build/$(basename "${wks%.wks}")"*.direct "$out${IMAGE_NAME_SUFFIX}.wic"
197 rm -rf "$out/" 202 rm -rf "$out/"
198} 203}
199IMAGE_CMD_wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES" 204IMAGE_CMD_wic[vardepsexclude] = "WKS_FULL_PATH WKS_FILES"
@@ -255,12 +260,12 @@ IMAGE_TYPES = " \
255" 260"
256 261
257COMPRESSIONTYPES = "gz bz2 lzma xz lz4 sum" 262COMPRESSIONTYPES = "gz bz2 lzma xz lz4 sum"
258COMPRESS_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}.rootfs.${type}" 263COMPRESS_CMD_lzma = "lzma -k -f -7 ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
259COMPRESS_CMD_gz = "gzip -f -9 -c ${IMAGE_NAME}.rootfs.${type} > ${IMAGE_NAME}.rootfs.${type}.gz" 264COMPRESS_CMD_gz = "gzip -f -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.gz"
260COMPRESS_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}.rootfs.${type}" 265COMPRESS_CMD_bz2 = "pbzip2 -f -k ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}"
261COMPRESS_CMD_xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_THREADS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}.rootfs.${type} > ${IMAGE_NAME}.rootfs.${type}.xz" 266COMPRESS_CMD_xz = "xz -f -k -c ${XZ_COMPRESSION_LEVEL} ${XZ_THREADS} --check=${XZ_INTEGRITY_CHECK} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.xz"
262COMPRESS_CMD_lz4 = "lz4c -9 -c ${IMAGE_NAME}.rootfs.${type} > ${IMAGE_NAME}.rootfs.${type}.lz4" 267COMPRESS_CMD_lz4 = "lz4c -9 -c ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} > ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.lz4"
263COMPRESS_CMD_sum = "sumtool -i ${IMAGE_NAME}.rootfs.${type} -o ${IMAGE_NAME}.rootfs.${type}.sum ${JFFS2_SUM_EXTRA_ARGS}" 268COMPRESS_CMD_sum = "sumtool -i ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type} -o ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.${type}.sum ${JFFS2_SUM_EXTRA_ARGS}"
264COMPRESS_DEPENDS_lzma = "xz-native" 269COMPRESS_DEPENDS_lzma = "xz-native"
265COMPRESS_DEPENDS_gz = "" 270COMPRESS_DEPENDS_gz = ""
266COMPRESS_DEPENDS_bz2 = "pbzip2-native" 271COMPRESS_DEPENDS_bz2 = "pbzip2-native"