[OE-core] [PATCH 2/2] kernel-initramfs: new recipe, creates initramfs bundled kernel packaging

Ming Liu liu.ming50 at gmail.com
Wed Dec 30 14:18:36 UTC 2015


Hi,

I need do more work on this patch, and will send the V1 soon, please ignore
this for now.

//Ming Liu

2015-12-30 0:05 GMT+01:00 Ming Liu <liu.ming50 at gmail.com>:

> From: Ming Liu <peter.x.liu at external.atlascopco.com>
>
> So far, there is not a workable way to package the initramfs bundled kernel
> image, the only place is tmp/deploy from where we could get it, but if a
> user want to add it into a certain image, there is no guarantee that he
> will achieve it because a explicit dependency is missing between package
> and bundle_initramfs, and this was designed to avoid introducing circular
> dependencies when using kernel modules in the initramfs image.bb that is
> caused by kernel.bbclass trying to build the initramfs before the kernel
> packaging.
>
> To fix this problem, the idea is to split the initramfs bundled kernel
> packaging to a new recipe, make the do_install depend on kernel's deploy
> task, then with the following config:
>
> IMAGE_INSTALL_append = "kernel-initramfs"
>
> The initramfs bundled kernel could be added to the image without
> introducing any circular dependencies.
>
> Signed-off-by: Ming Liu <peter.x.liu at external.atlascopco.com>
> ---
>  meta/recipes-kernel/linux/kernel-initramfs.bb | 50
> +++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
>  create mode 100644 meta/recipes-kernel/linux/kernel-initramfs.bb
>
> diff --git a/meta/recipes-kernel/linux/kernel-initramfs.bb
> b/meta/recipes-kernel/linux/kernel-initramfs.bb
> new file mode 100644
> index 0000000..481b142
> --- /dev/null
> +++ b/meta/recipes-kernel/linux/kernel-initramfs.bb
> @@ -0,0 +1,50 @@
> +SUMMARY = "Initramfs bundled kernel image"
> +DESCRIPTION = "When built, it packages a initramfs bundled kernel image
> of the \
> +preferred virtual/kernel provider."
> +
> +SECTION = "kernel"
> +
> +LICENSE = "GPLv2"
> +LIC_FILES_CHKSUM =
> "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
> +
> +inherit linux-kernel-base
> +
> +# Whilst not a module, this ensures we don't get multilib extended (which
> would make no sense)
> +inherit module-base
> +
> +S = "${STAGING_KERNEL_DIR}"
> +B = "${WORKDIR}/build"
> +
> +KERNEL_VERSION = "${@get_kernelversion_headers('${S}')}"
> +
> +PACKAGES = "kernel-initramfs"
> +FILES_${PN} = "/boot/${KERNEL_IMAGETYPE}*"
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> +
> +# Skip processing of this recipe if INITRAMFS_IMAGE or
> INITRAMFS_IMAGE_BUNDLE
> +# is not set correctly, to avoid generate a single empty package which
> makes
> +# no sense.
> +python __anonymous () {
> +    if not d.getVar('INITRAMFS_IMAGE', True) or
> d.getVar('INITRAMFS_IMAGE_BUNDLE', True) != '1':
> +        raise bb.parse.SkipPackage("Set INITRAMFS_IMAGE and
> INITRAMFS_IMAGE_BUNDLE to enable it")
> +}
> +
> +# Need the output of deploy.
> +do_install[depends] += "virtual/kernel:do_deploy"
> +
> +# We only need the packaging tasks - disable the rest
> +do_fetch[noexec] = "1"
> +do_unpack[noexec] = "1"
> +do_patch[noexec] = "1"
> +do_configure[noexec] = "1"
> +do_compile[noexec] = "1"
> +do_populate_sysroot[noexec] = "1"
> +
> +do_install() {
> +       if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" =
> x1 ]; then
> +               echo "Copying initramfs bundled kernel image from
> ${DEPLOY_DIR_IMAGE}..."
> +               install -d ${D}/boot
> +               install -m 0644
> ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin ${D}/boot
> +       fi
> +}
> --
> 1.9.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20151230/9cd0add4/attachment-0002.html>


More information about the Openembedded-core mailing list