diff --git a/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend b/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend index 7a82aa7..bb61f70 100644 --- a/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend +++ b/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend @@ -4,56 +4,33 @@ inherit user-key-store deploy do_install[nostamp] = "1" fakeroot python do_sign() { - initramfs = None - if d.getVar('BUNDLE', True) == '0': - initramfs = d.expand('${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz') + for compr in d.getVar('INITRAMFS_FSTYPES').split(): + uks_sel_sign(d.expand('${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.') + compr, d) else: - initramfs = d.expand('${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}') - - if initramfs == None or not os.path.exists(initramfs): - return - - uks_sel_sign(initramfs, d) + uks_sel_sign(d.expand('${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}'), d) } addtask sign after do_install before do_deploy do_package do_sign[prefuncs] += "check_deploy_keys" do_deploy() { - initramfs="" - initramfs_dest="" - - if [ "${BUNDLE}" = "0" ]; then - initramfs="${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz" - initramfs_dest="${DEPLOYDIR}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz" - else - initramfs="${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" - initramfs_dest="${DEPLOYDIR}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" - fi - - if [ -f "$initramfs.p7b" ]; then - install -d "${DEPLOYDIR}" - - install -m 0644 "$initramfs.p7b" "$initramfs_dest.p7b" - fi + install -d "${DEPLOYDIR}" + for SIG in ${D}/boot/*.p7b; do + install -m 0644 ${SIG} ${DEPLOYDIR} + done } addtask deploy after do_install before do_build -pkg_postinst_${PN}_append() { - if [ "${BUNDLE}" = "1" ] ; then - update-alternatives --install "/boot/${KERNEL_IMAGETYPE}.p7b" \ - "${KERNEL_IMAGETYPE}.p7b" \ - "/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b" 50101 - fi - - true -} - -pkg_prerm_${PN}_append() { - if [ "${BUNDLE}" = "1" ] ; then - update-alternatives --remove "${KERNEL_IMAGETYPE}.p7b" \ - "${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b" - fi - - true +python do_package_prepend () { + if d.getVar('BUNDLE') == '1': + d.appendVar(d.expand('ALTERNATIVE_${PN}'), ' ' + d.expand('${KERNEL_IMAGETYPE}' + '-initramfs.p7b')) + d.setVarFlag('ALTERNATIVE_LINK_NAME', d.expand('${KERNEL_IMAGETYPE}') + '-initramfs.p7b', d.expand('/boot/${KERNEL_IMAGETYPE}-initramfs.p7b')) + d.setVarFlag('ALTERNATIVE_TARGET', d.expand('${KERNEL_IMAGETYPE}') + '-initramfs.p7b', d.expand('/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b')) + d.setVarFlag('ALTERNATIVE_PRIORITY', d.expand('${KERNEL_IMAGETYPE}') + '-initramfs.p7b', '50101') + else: + for compr in d.getVar('INITRAMFS_FSTYPES').split(): + d.appendVar(d.expand('ALTERNATIVE_${PN}'), ' ' + d.expand('${INITRAMFS_IMAGE}') + '.p7b') + d.setVarFlag('ALTERNATIVE_LINK_NAME', d.expand('${INITRAMFS_IMAGE}') + '.p7b', d.expand('/boot/${INITRAMFS_IMAGE}.p7b')) + d.setVarFlag('ALTERNATIVE_TARGET', d.expand('${INITRAMFS_IMAGE}') + '.p7b', d.expand('/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.' + compr + '.p7b')) + d.setVarFlag('ALTERNATIVE_PRIORITY', d.expand('${INITRAMFS_IMAGE}') + '.p7b', '50101') } diff --git a/meta/recipes-core/images/kernel-initramfs.bb b/meta/recipes-core/images/kernel-initramfs.bb index 5b17403..fd23e74 100644 --- a/meta/recipes-core/images/kernel-initramfs.bb +++ b/meta/recipes-core/images/kernel-initramfs.bb @@ -35,39 +35,38 @@ do_populate_lic[depends] += "virtual/kernel:do_deploy" do_install() { [ -z "${INITRAMFS_IMAGE}" ] && exit 0 + install -d "${D}/boot" if [ "${BUNDLE}" = "0" ]; then - for suffix in cpio.gz cpio.lzo cpio.lzma cpio.xz; do + for suffix in ${INITRAMFS_FSTYPES}; do img="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$suffix" - if [ -s "$img" ]; then - install -d "${D}/boot" - install -m 0644 "$img" \ - "${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.$suffix" - break - fi + install -m 0644 "$img" \ + "${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.$suffix" done else if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" ]; then - install -d "${D}/boot" install -m 0644 "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" \ "${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" fi fi } -pkg_postinst_${PN}() { - if [ "${BUNDLE}" = "1" ]; then - update-alternatives --install "/boot/${KERNEL_IMAGETYPE}" \ - "${KERNEL_IMAGETYPE}" "/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" \ - 50101 || true - fi -} +inherit update-alternatives -pkg_prerm_${PN}() { - if [ "${BUNDLE}" = "1" ]; then - update-alternatives --remove "${KERNEL_IMAGETYPE}" \ - "${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" || true - fi +ALTERNATIVES_${PN} = "" + +python do_package_prepend () { + if d.getVar('BUNDLE') == '1': + d.appendVar(d.expand('ALTERNATIVE_${PN}'), ' ' + d.expand('${KERNEL_IMAGETYPE}' + '-initramfs')) + d.setVarFlag('ALTERNATIVE_LINK_NAME', d.expand('${KERNEL_IMAGETYPE}') + '-initramfs', d.expand('/boot/${KERNEL_IMAGETYPE}-initramfs')) + d.setVarFlag('ALTERNATIVE_TARGET', d.expand('${KERNEL_IMAGETYPE}') + '-initramfs', d.expand('/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}')) + d.setVarFlag('ALTERNATIVE_PRIORITY', d.expand('${KERNEL_IMAGETYPE}') + '-initramfs', '50101') + else: + for compr in d.getVar('INITRAMFS_FSTYPES').split(): + d.appendVar(d.expand('ALTERNATIVE_${PN}'), ' ' + d.expand('${INITRAMFS_IMAGE}')) + d.setVarFlag('ALTERNATIVE_LINK_NAME', d.expand('${INITRAMFS_IMAGE}'), d.expand('/boot/${INITRAMFS_IMAGE}')) + d.setVarFlag('ALTERNATIVE_TARGET', d.expand('${INITRAMFS_IMAGE}'), d.expand('/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.' + compr)) + d.setVarFlag('ALTERNATIVE_PRIORITY', d.expand('${INITRAMFS_IMAGE}'), '50101') } PACKAGE_ARCH = "${MACHINE_ARCH}"