diff options
| author | Lans Zhang <jia.zhang@windriver.com> | 2017-07-03 09:21:44 +0800 |
|---|---|---|
| committer | Lans Zhang <jia.zhang@windriver.com> | 2017-07-03 09:21:44 +0800 |
| commit | 5135786fa32f957c6e912b1b899d4a886a7b1368 (patch) | |
| tree | 7b7a3500e954caddf1e852aa6e6f5fa8fa909d54 | |
| parent | 0551bc8d84fb533d0e129c94bd7028414b34e531 (diff) | |
| download | meta-secure-core-5135786fa32f957c6e912b1b899d4a886a7b1368.tar.gz | |
kernel-initramfs: define this package to include the initramfs image for kernel boot
Signed-off-by: Lans Zhang <jia.zhang@windriver.com>
| -rw-r--r-- | meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend | 58 | ||||
| -rw-r--r-- | meta/recipes-core/images/kernel-initramfs.bb | 74 |
2 files changed, 132 insertions, 0 deletions
diff --git a/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend b/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend new file mode 100644 index 0000000..b68f201 --- /dev/null +++ b/meta-efi-secure-boot/recipes-kernel/linux/kernel-initramfs.bbappend | |||
| @@ -0,0 +1,58 @@ | |||
| 1 | inherit user-key-store deploy | ||
| 2 | |||
| 3 | # Always fetch the latest initramfs image | ||
| 4 | do_install[nostamp] = "1" | ||
| 5 | |||
| 6 | fakeroot python do_sign() { | ||
| 7 | initramfs = None | ||
| 8 | |||
| 9 | if d.getVar('BUNDLE', True) == '0': | ||
| 10 | initramfs = d.expand('${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz') | ||
| 11 | else: | ||
| 12 | initramfs = d.expand('${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}') | ||
| 13 | |||
| 14 | if initramfs == None or not os.path.exists(initramfs): | ||
| 15 | return | ||
| 16 | |||
| 17 | uks_sel_sign(initramfs, d) | ||
| 18 | } | ||
| 19 | addtask sign after do_install before do_deploy do_package | ||
| 20 | |||
| 21 | do_deploy() { | ||
| 22 | initramfs="" | ||
| 23 | initramfs_dest="" | ||
| 24 | |||
| 25 | if [ "${BUNDLE}" = "0" ]; then | ||
| 26 | initramfs="${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.cpio.gz" | ||
| 27 | initramfs_dest="${DEPLOYDIR}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz" | ||
| 28 | else | ||
| 29 | initramfs="${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" | ||
| 30 | initramfs_dest="${DEPLOYDIR}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" | ||
| 31 | fi | ||
| 32 | |||
| 33 | if [ -f "$initramfs.p7b" ]; then | ||
| 34 | install -d "${DEPLOYDIR}" | ||
| 35 | |||
| 36 | install -m 0644 "$initramfs.p7b" "$initramfs_dest.p7b" | ||
| 37 | fi | ||
| 38 | } | ||
| 39 | addtask deploy after do_install before do_build | ||
| 40 | |||
| 41 | pkg_postinst_${PN}_append() { | ||
| 42 | if [ "${BUNDLE}" = "1" ] ; then | ||
| 43 | update-alternatives --install "/boot/${KERNEL_IMAGETYPE}.p7b" \ | ||
| 44 | "${KERNEL_IMAGETYPE}.p7b" \ | ||
| 45 | "/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b" 50101 | ||
| 46 | fi | ||
| 47 | |||
| 48 | true | ||
| 49 | } | ||
| 50 | |||
| 51 | pkg_prerm_${PN}_append() { | ||
| 52 | if [ "${BUNDLE}" = "1" ] ; then | ||
| 53 | update-alternatives --remove "${KERNEL_IMAGETYPE}.p7b" \ | ||
| 54 | "${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}.p7b" | ||
| 55 | fi | ||
| 56 | |||
| 57 | true | ||
| 58 | } | ||
diff --git a/meta/recipes-core/images/kernel-initramfs.bb b/meta/recipes-core/images/kernel-initramfs.bb new file mode 100644 index 0000000..1546421 --- /dev/null +++ b/meta/recipes-core/images/kernel-initramfs.bb | |||
| @@ -0,0 +1,74 @@ | |||
| 1 | SUMMARY = "Initramfs kernel boot" | ||
| 2 | DESCRIPTION = "This package includes the initramfs for the kernel boot. \ | ||
| 3 | " | ||
| 4 | LICENSE = "MIT" | ||
| 5 | |||
| 6 | DEPENDS = "virtual/kernel" | ||
| 7 | |||
| 8 | PROVIDES = "virtual/kernel-initramfs" | ||
| 9 | |||
| 10 | ALLOW_EMPTY_${PN} = "1" | ||
| 11 | |||
| 12 | S = "${STAGING_KERNEL_DIR}" | ||
| 13 | B = "${WORKDIR}/${BPN}-${PV}" | ||
| 14 | |||
| 15 | inherit linux-kernel-base kernel-arch | ||
| 16 | |||
| 17 | INITRAMFS_BASE_NAME = "${KERNEL_IMAGETYPE}-initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}" | ||
| 18 | INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME" | ||
| 19 | INITRAMFS_EXT_NAME = "-${@base_read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}" | ||
| 20 | |||
| 21 | BUNDLE = "${@'1' if d.getVar('INITRAMFS_IMAGE', True) and \ | ||
| 22 | d.getVar('INITRAMFS_IMAGE_BUNDLE', True) == '1' \ | ||
| 23 | else '0'}" | ||
| 24 | |||
| 25 | python() { | ||
| 26 | image = d.getVar('INITRAMFS_IMAGE', True) | ||
| 27 | if image: | ||
| 28 | d.appendVarFlag('do_install', 'depends', ' ${INITRAMFS_IMAGE}:do_rootfs') | ||
| 29 | } | ||
| 30 | |||
| 31 | do_unpack[depends] += "virtual/kernel:do_deploy" | ||
| 32 | do_populate_lic[depends] += "virtual/kernel:do_deploy" | ||
| 33 | |||
| 34 | do_install() { | ||
| 35 | [ -z "${INITRAMFS_IMAGE}" ] && exit 0 | ||
| 36 | |||
| 37 | if [ "${BUNDLE}" = "0" ]; then | ||
| 38 | for suffix in cpio.gz cpio.lzo cpio.lzma cpio.xz; do | ||
| 39 | img="${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$suffix" | ||
| 40 | |||
| 41 | if [ -s "$img" ]; then | ||
| 42 | install -d "${D}/boot" | ||
| 43 | install -m 0644 "$img" \ | ||
| 44 | "${D}/boot/${INITRAMFS_IMAGE}${INITRAMFS_EXT_NAME}.$suffix" | ||
| 45 | break | ||
| 46 | fi | ||
| 47 | done | ||
| 48 | else | ||
| 49 | if [ -e "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" ]; then | ||
| 50 | install -d "${D}/boot" | ||
| 51 | install -m 0644 "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin" \ | ||
| 52 | "${D}/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" | ||
| 53 | fi | ||
| 54 | fi | ||
| 55 | } | ||
| 56 | |||
| 57 | pkg_postinst_${PN}() { | ||
| 58 | if [ "${BUNDLE}" = "1" ]; then | ||
| 59 | update-alternatives --install "/boot/${KERNEL_IMAGETYPE}" \ | ||
| 60 | "${KERNEL_IMAGETYPE}" "/boot/${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" \ | ||
| 61 | 50101 || true | ||
| 62 | fi | ||
| 63 | } | ||
| 64 | |||
| 65 | pkg_prerm_${PN}() { | ||
| 66 | if [ "${BUNDLE}" = "1" ]; then | ||
| 67 | update-alternatives --remove "${KERNEL_IMAGETYPE}" \ | ||
| 68 | "${KERNEL_IMAGETYPE}-initramfs${INITRAMFS_EXT_NAME}" || true | ||
| 69 | fi | ||
| 70 | } | ||
| 71 | |||
| 72 | PACKAGE_ARCH = "${MACHINE_ARCH}" | ||
| 73 | |||
| 74 | FILES_${PN} = "/boot/*" | ||
