bootimg: Allow for EFI-only boot images

Condition building PCBIOS legacy images on MACHINE_FEATURES containing "pcbios"
or not containing "efi". This ensures existing BSPs will continue to get the
old PCBIOS legacy-only images. New BSPs can add "efi", "pcbios", or both. The
images created likewise support one or the other or both.

EFI-only ISO images are untested.

(From OE-Core rev: be3fc8c07e84c654f55c5d09934dfbdc7ff7e2b6)

Signed-off-by: Darren Hart <dvhart@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Darren Hart 2011-11-23 23:35:43 -08:00 committed by Richard Purdie
parent eb4aa3483b
commit 77d5a0c4c4
1 changed files with 40 additions and 9 deletions

View File

@ -38,7 +38,24 @@ BOOTIMG_EXTRA_SPACE ?= "512"
EFI = ${@base_contains("MACHINE_FEATURES", "efi", "1", "0", d)}
EFI_CLASS = ${@base_contains("MACHINE_FEATURES", "efi", "grub-efi", "dummy", d)}
inherit syslinux
# Include legacy boot if MACHINE_FEATURES includes "pcbios" or if it does not
# contain "efi". This way legacy is supported by default if neither is
# specified, maintaining the original behavior.
def pcbios(d):
pcbios = base_contains("MACHINE_FEATURES", "pcbios", "1", "0", d)
if pcbios == "0":
pcbios = base_contains("MACHINE_FEATURES", "efi", "0", "1", d)
return pcbios
def pcbios_class(d):
if d.getVar("PCBIOS", True) == "1":
return "syslinux"
return "dummy"
PCBIOS = ${@pcbios(d)}
PCBIOS_CLASS = ${@pcbios_class(d)}
inherit ${PCBIOS_CLASS}
inherit ${EFI_CLASS}
@ -51,15 +68,24 @@ build_iso() {
install -d ${ISODIR}
syslinux_iso_populate
if [ "${PCBIOS}" = "1" ]; then
syslinux_iso_populate
fi
if [ "${EFI}" = "1" ]; then
grubefi_iso_populate
fi
mkisofs -V ${BOOTIMG_VOLUME_ID} \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
-b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \
${MKISOFS_OPTIONS} ${ISODIR}
if [ "${PCBIOS}" = "1" ]; then
mkisofs -V ${BOOTIMG_VOLUME_ID} \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
-b ${ISO_BOOTIMG} -c ${ISO_BOOTCAT} -r \
${MKISOFS_OPTIONS} ${ISODIR}
else
bbnote "EFI-only ISO images are untested, please provide feedback."
mkisofs -V ${BOOTIMG_VOLUME_ID} \
-o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.iso \
-r ${ISODIR}
fi
cd ${DEPLOY_DIR_IMAGE}
rm -f ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.iso
@ -70,7 +96,9 @@ build_hddimg() {
# Create an HDD image
if [ "${NOHDD}" != "1" ] ; then
install -d ${HDDDIR}
syslinux_hddimg_populate
if [ "${PCBIOS}" = "1" ]; then
syslinux_hddimg_populate
fi
if [ "${EFI}" = "1" ]; then
grubefi_hddimg_populate
fi
@ -82,7 +110,9 @@ build_hddimg() {
mkdosfs -n ${BOOTIMG_VOLUME_ID} -d ${HDDDIR} \
-C ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg $SIZE
syslinux_hddimg_install
if [ "${PCBIOS}" = "1" ]; then
syslinux_hddimg_install
fi
chmod 644 ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.hddimg
@ -93,7 +123,8 @@ build_hddimg() {
}
python do_bootimg() {
bb.build.exec_func('build_syslinux_cfg', d)
if d.getVar("PCBIOS", True) == "1":
bb.build.exec_func('build_syslinux_cfg', d)
if d.getVar("EFI", True) == "1":
bb.build.exec_func('build_grub_cfg', d)
bb.build.exec_func('build_hddimg', d)