[OE-core] [PATCH v2 1/2] kernel: Add KERNEL_IMAGETYPES to build multi types kernel at one time

Bruce Ashfield bruce.ashfield at gmail.com
Fri Feb 19 15:46:57 UTC 2016


On Fri, Feb 19, 2016 at 4:56 AM, <zhe.he at windriver.com> wrote:

> From: He Zhe <zhe.he at windriver.com>
>
> Add KERNEL_IMAGETYPES to support building packaging and installing
> multi types of kernel images, such as zImage uImage, at one time.
>
> KERNEL_IMAGETYPE works as before. All KERNEL_ALT_IMAGETYPEs are
> replaced by KERNEL_IMAGETYPES.
>


I see that you have updated layers/configs with the new variable, but
obviously you can't see all the
layers that may be using that old variable.

Isn't it possible to have a python routine that detects the old
ALT_IMAGETYPE variable and
assigns it to the new one (if it isn't already set) ? Sort of like how
distro features/features backfill
work ?


> Fixes [YOCTO #6945].
>
> Signed-off-by: He Zhe <zhe.he at windriver.com>
> ---
>  documentation/ref-manual/ref-variables.xml         |  10 +-
>  meta-yocto-bsp/conf/machine/edgerouter.conf        |   2 +-
>  meta/classes/kernel-fitimage.bbclass               |  20 +--
>  meta/classes/kernel-grub.bbclass                   |  44 ++++--
>  meta/classes/kernel-uimage.bbclass                 |  22 +--
>  meta/classes/kernel.bbclass                        | 171
> +++++++++++++++------
>  meta/conf/documentation.conf                       |   1 +
>  meta/conf/machine/qemumips.conf                    |   2 +-
>  meta/conf/machine/qemumips64.conf                  |   2 +-
>  meta/recipes-kernel/linux/linux-dtb.inc            |  49 +++---
>  .../target/arch/mips/conf/machine/machine.conf     |   2 +-
>  .../target/arch/mips64/conf/machine/machine.conf   |   2 +-
>  .../target/arch/qemu/conf/machine/machine.conf     |   2 +-
>  13 files changed, 214 insertions(+), 115 deletions(-)
>
> diff --git a/documentation/ref-manual/ref-variables.xml
> b/documentation/ref-manual/ref-variables.xml
> index a76a8c2..a8e4fd8 100644
> --- a/documentation/ref-manual/ref-variables.xml
> +++ b/documentation/ref-manual/ref-variables.xml
> @@ -6417,14 +6417,14 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR
> = "${INC_PR}.3"
>              </glossdef>
>          </glossentry>
>
> -        <glossentry
> id='var-KERNEL_ALT_IMAGETYPE'><glossterm>KERNEL_ALT_IMAGETYPE</glossterm>
> +        <glossentry
> id='var-KERNEL_IMAGETYPES'><glossterm>KERNEL_IMAGETYPES</glossterm>
>              <info>
> -                KERNEL_ALT_IMAGETYPE[doc] = "Specifies an alternate
> kernel image type for creation."
> +                KERNEL_IMAGETYPES[doc] = "Specifies alternate kernel
> image types for creation."
>              </info>
>              <glossdef>
>                  <para role="glossdeffirst">
>  <!--                <para role="glossdeffirst"><imagedata
> fileref="figures/define-generic.png" /> -->
> -                    Specifies an alternate kernel image type for creation
> in
> +                    Specifies alternate kernel image types for creation in
>                      addition to the kernel image type specified using the
>                      <link
> linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
>                      variable.
> @@ -6612,8 +6612,8 @@ recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR =
> "${INC_PR}.3"
>                  </para>
>
>                  <para>
> -                    If you want to build an alternate kernel image type,
> use the
> -                    <link
> linkend='var-KERNEL_ALT_IMAGETYPE'><filename>KERNEL_ALT_IMAGETYPE</filename></link>
> +                    If you want to build alternate kernel image types,
> use the
> +                    <link
> linkend='var-KERNEL_IMAGETYPES'><filename>KERNEL_IMAGETYPES</filename></link>
>                      variable.
>                  </para>
>              </glossdef>
> diff --git a/meta-yocto-bsp/conf/machine/edgerouter.conf
> b/meta-yocto-bsp/conf/machine/edgerouter.conf
> index 476e690..affd568 100644
> --- a/meta-yocto-bsp/conf/machine/edgerouter.conf
> +++ b/meta-yocto-bsp/conf/machine/edgerouter.conf
> @@ -7,7 +7,7 @@ require conf/machine/include/tune-mips64.inc
>  MACHINE_FEATURES = "pci ext2 ext3 serial"
>
>  KERNEL_IMAGETYPE = "vmlinux"
> -KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> +KERNEL_IMAGETYPES = "vmlinux.bin"
>

This now reads a bit ... odd (for back of a better description). I'm
concerned that it will cause
confusion, there are two variables:

KERNEL_IMAGETYPE and KERNEL_IMAGETYPES ..

They are very close in name, and just reading the variable doesn't really
tell us why
we'd set one and not the other. The old "ALT" made it more obvious.

But from the patch, KERNEL_IMAGETYPE isn't used, so does it have to be set
at
all in these .conf files ? .. or maybe I missed where it is still used
other than for
compatibility.


>  KERNEL_IMAGE_STRIP_EXTRA_SECTIONS  = ".comment"
>
>  PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
> diff --git a/meta/classes/kernel-fitimage.bbclass
> b/meta/classes/kernel-fitimage.bbclass
> index f1b409c..51df19d 100644
> --- a/meta/classes/kernel-fitimage.bbclass
> +++ b/meta/classes/kernel-fitimage.bbclass
> @@ -1,8 +1,8 @@
>  inherit kernel-uboot
>
>  python __anonymous () {
> -    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
> -    if kerneltype == 'fitImage':
> +    kerneltypes = d.getVar('KERNEL_IMAGETYPES', True) or ""
> +    if 'fitImage' in kerneltypes.split():
>          depends = d.getVar("DEPENDS", True)
>          depends = "%s u-boot-mkimage-native dtc-native" % depends
>          d.setVar("DEPENDS", depends)
> @@ -10,7 +10,9 @@ python __anonymous () {
>         # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
>         # to kernel.bbclass . We have to override it, since we pack zImage
>         # (at least for now) into the fitImage .
> -        d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", "zImage")
> +        typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""
> +        if 'fitImage' in typeformake.split():
> +            d.setVar('KERNEL_IMAGETYPE_FOR_MAKE',
> typeformake.replace('fitImage', 'zImage'))
>
>          image = d.getVar('INITRAMFS_IMAGE', True)
>          if image:
> @@ -154,7 +156,7 @@ EOF
>  }
>
>  do_assemble_fitimage() {
> -       if test "x${KERNEL_IMAGETYPE}" = "xfitImage" ; then
> +       if echo ${KERNEL_IMAGETYPES} | grep -Pq "\bfitImage\b"; then
>

Not that it really matters, but grep -w would work here as well, and might
read bit simpler.


>                 kernelcount=1
>                 dtbcount=""
>                 rm -f fit-image.its
> @@ -217,14 +219,14 @@ addtask assemble_fitimage before do_install after
> do_compile
>
>  kernel_do_deploy_append() {
>         # Update deploy directory
> -       if test "x${KERNEL_IMAGETYPE}" = "xfitImage" ; then
> +       if echo ${KERNEL_IMAGETYPES} | grep -Pq "\bfitImage\b"; then
>                 cd ${B}
>                 echo "Copying fit-image.its source file..."
> -
>  its_base_name="${KERNEL_IMAGETYPE}-its-${PV}-${PR}-${MACHINE}-${DATETIME}"
> -               its_symlink_name=${KERNEL_IMAGETYPE}-its-${MACHINE}
> +
>  its_base_name="fitImage-its-${PV}-${PR}-${MACHINE}-${DATETIME}"
> +               its_symlink_name=fitImage-its-${MACHINE}
>                 install -m 0644 fit-image.its
> ${DEPLOYDIR}/${its_base_name}.its
> -
>  linux_bin_base_name="${KERNEL_IMAGETYPE}-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"
> -
>  linux_bin_symlink_name=${KERNEL_IMAGETYPE}-linux.bin-${MACHINE}
> +
>  linux_bin_base_name="fitImage-linux.bin-${PV}-${PR}-${MACHINE}-${DATETIME}"
> +               linux_bin_symlink_name=fitImage-linux.bin-${MACHINE}
>                 install -m 0644 linux.bin
> ${DEPLOYDIR}/${linux_bin_base_name}.bin
>
>                 cd ${DEPLOYDIR}
> diff --git a/meta/classes/kernel-grub.bbclass
> b/meta/classes/kernel-grub.bbclass
> index a63f482..f7dcc07 100644
> --- a/meta/classes/kernel-grub.bbclass
> +++ b/meta/classes/kernel-grub.bbclass
> @@ -10,41 +10,44 @@
>  #   updates the new kernel as the boot priority.
>  #
>
> -pkg_preinst_kernel-image_append () {
> +python __anonymous () {
>

Maybe it is just the patch context making me misread this, but can you
elaborate on
what is changing here ?

Is it the old preinst is being replaced by anonymous python that generates
the preinst as
a string, and that this injected into the package via the python ? Are we
guaranteed
to run the anonymous python at the right time ? .. I've been burned by that
before, so
I wanted to check that it has been considered.


> +    import re
> +
> +    preinst = '''
>         # Parsing confliction
>         [ -f "$D/boot/grub/menu.list" ] && grubcfg="$D/boot/grub/menu.list"
>         [ -f "$D/boot/grub/grub.cfg" ] && grubcfg="$D/boot/grub/grub.cfg"
>         if [ -n "$grubcfg" ]; then
>                 # Dereference symlink to avoid confliction with new kernel
> name.
> -               if grep -q "/${KERNEL_IMAGETYPE} \+root=" $grubcfg; then
> -                       if [ -L "$D/boot/${KERNEL_IMAGETYPE}" ]; then
> -                               kimage=`realpath
> $D/boot/${KERNEL_IMAGETYPE} 2>/dev/null`
> +               if grep -q "/KERNEL_IMAGETYPE \+root=" $grubcfg; then
>

It's lines like these that made me ask my question above. This looks like
its checking the
grubcfg on disk. Is that same grep going to work in this anonymous python
.. or maybe this
isn't being run now, and only when the package is being installed ? I'm
most likely missing
something.


> +                       if [ -L "$D/boot/KERNEL_IMAGETYPE" ]; then
> +                               kimage=`realpath $D/boot/KERNEL_IMAGETYPE
> 2>/dev/null`
>                                 if [ -f "$D$kimage" ]; then
> -                                       sed -i "s:${KERNEL_IMAGETYPE}
> \+root=:${kimage##*/} root=:" $grubcfg
> +                                       sed -i "s:KERNEL_IMAGETYPE
> \+root=:${kimage##*/} root=:" $grubcfg
>                                 fi
>                         fi
>                 fi
>
>                 # Rename old kernel if it conflicts with new kernel name.
> -               if grep -q "/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
> \+root=" $grubcfg; then
> -                       if [ -f
> "$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}" ]; then
> +               if grep -q "/KERNEL_IMAGETYPE-${KERNEL_VERSION} \+root="
> $grubcfg; then
> +                       if [ -f
> "$D/boot/KERNEL_IMAGETYPE-${KERNEL_VERSION}" ]; then
>                                 timestamp=`date +%s`
> -
>  kimage="$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-$timestamp-back"
> -                               sed -i
> "s:${KERNEL_IMAGETYPE}-${KERNEL_VERSION} \+root=:${kimage##*/} root=:"
> $grubcfg
> -                               mv
> "$D/boot/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}" "$kimage"
> +
>  kimage="$D/boot/KERNEL_IMAGETYPE-${KERNEL_VERSION}-$timestamp-back"
> +                               sed -i
> "s:KERNEL_IMAGETYPE-${KERNEL_VERSION} \+root=:${kimage##*/} root=:" $grubcfg
> +                               mv
> "$D/boot/KERNEL_IMAGETYPE-${KERNEL_VERSION}" "$kimage"
>                         fi
>                 fi
>         fi
> -}
> +'''
>
> -pkg_postinst_kernel-image_prepend () {
> +    postinst = '''
>         get_new_grub_cfg() {
>                 grubcfg="$1"
>                 old_image="$2"
> -               title="Update ${KERNEL_IMAGETYPE}-${KERNEL_VERSION}-${PV}"
> +               title="Update KERNEL_IMAGETYPE-${KERNEL_VERSION}-${PV}"
>                 if [ "${grubcfg##*/}" = "grub.cfg" ]; then
>                         rootfs=`grep " *linux \+[^ ]\+ \+root=" $grubcfg
> -m 1 | \
> -                                sed
> "s#${old_image}#${old_image%/*}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}#"`
> +                                sed
> "s#${old_image}#${old_image%/*}/KERNEL_IMAGETYPE-${KERNEL_VERSION}#"`
>
>                         echo "menuentry \"$title\" {"
>                         echo "    set root=(hd0,1)"
> @@ -52,7 +55,7 @@ pkg_postinst_kernel-image_prepend () {
>                         echo "}"
>                 elif [ "${grubcfg##*/}" = "menu.list" ]; then
>                         rootfs=`grep "kernel \+[^ ]\+ \+root=" $grubcfg -m
> 1 | \
> -                                sed
> "s#${old_image}#${old_image%/*}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}#"`
> +                                sed
> "s#${old_image}#${old_image%/*}/KERNEL_IMAGETYPE-${KERNEL_VERSION}#"`
>
>                         echo "default 0"
>                         echo "timeout 30"
> @@ -87,5 +90,16 @@ pkg_postinst_kernel-image_prepend () {
>                 mv $grubcfgtmp $grubcfg
>                 echo "Caution! Update kernel may affect kernel-module!"
>         fi
> +'''
> +
> +    imagetypes = d.getVar('KERNEL_IMAGETYPES', True)
> +    imagetypes = re.sub(r'\.gz$', '', imagetypes)
> +
> +    for type in imagetypes.split():
> +        typelower = type.lower()
> +        preinst_append = preinst.replace('KERNEL_IMAGETYPE', type)
> +        postinst_prepend = postinst.replace('KERNEL_IMAGETYPE', type)
> +        d.setVar('pkg_preinst_kernel-image-' + typelower + '_append',
> preinst_append)
> +        d.setVar('pkg_postinst_kernel-image-' + typelower + '_prepend',
> postinst_prepend)
>  }
>
> diff --git a/meta/classes/kernel-uimage.bbclass
> b/meta/classes/kernel-uimage.bbclass
> index f73965b..a238ce4 100644
> --- a/meta/classes/kernel-uimage.bbclass
> +++ b/meta/classes/kernel-uimage.bbclass
> @@ -1,23 +1,25 @@
>  inherit kernel-uboot
>
>  python __anonymous () {
> -    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
> -    if kerneltype == 'uImage':
> +    if "uImage" in (d.getVar('KERNEL_IMAGETYPES', True) or "").split():
>          depends = d.getVar("DEPENDS", True)
>          depends = "%s u-boot-mkimage-native" % depends
>          d.setVar("DEPENDS", depends)
>
> -       # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
> -       # to kernel.bbclass . We override the variable here, since we need
> -       # to build uImage using the kernel build system if and only if
> -       # KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into
> -       # the uImage .
> -       if d.getVar("KEEPUIMAGE", True) != 'yes':
> -            d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", "zImage")
> +        # Override KERNEL_IMAGETYPE_FOR_MAKE variable, which is internal
> +        # to kernel.bbclass . We override the variable here, since we need
> +        # to build uImage using the kernel build system if and only if
> +        # KEEPUIMAGE == yes. Otherwise, we pack compressed vmlinux into
> +        # the uImage .
> +        if d.getVar("KEEPUIMAGE", True) != 'yes':
> +            typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or
> ""
> +            if "uImage" in typeformake.split():
> +                typeformake.replace('uImage', 'zImage')
> +            d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
>  }
>
>  do_uboot_mkimage() {
> -       if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then
> +       if echo "${KERNEL_IMAGETYPES}" | grep -Pq "\buImage\b"; then
>                 if test "x${KEEPUIMAGE}" != "xyes" ; then
>                         uboot_prep_kimage
>
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index c3eab50..6db2e2e 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -16,12 +16,48 @@ INITRAMFS_IMAGE ?= ""
>  INITRAMFS_TASK ?= ""
>  INITRAMFS_IMAGE_BUNDLE ?= ""
>
> +# KERNEL_VERSION is extracted from source code. It is evaluated as
> +# None for the first parsing, since the code has not been fetched.
> +# After the code is fetched, it will be evaluated as real version
> +# number and cause kernel to be rebuilt. To avoid this, make
> +# KERNEL_VERSION_NAME and KERNEL_VERSION_PKG_NAME depend on
> +# LINUX_VERSION which is a constant.
> +KERNEL_VERSION_NAME = "${@d.getVar('KERNEL_VERSION', True) or ""}"
> +KERNEL_VERSION_NAME[vardepvalue] = "${LINUX_VERSION}"
> +KERNEL_VERSION_PKG_NAME =
> "${@legitimize_package_name(d.getVar('KERNEL_VERSION', True))}"
> +KERNEL_VERSION_PKG_NAME[vardepvalue] = "${LINUX_VERSION}"
> +
>  python __anonymous () {
>      import re
>
> -    kerneltype = d.getVar('KERNEL_IMAGETYPE', True)
> +    type = d.getVar('KERNEL_IMAGETYPE', True) or ""
>

Aha. Here is that use of KERNEL_IMAGETYPE. Like I mentioned for the alt
image type, can't
this existing variable be checked, and then added to KERNEL_IMAGE_TYPES in
some
python code ? That would simplify the code here, and also not require the
two variables to
be kept around.


> +    types = d.getVar('KERNEL_IMAGETYPES', True) or ""
> +    if type not in types.split():
> +        types = (type + ' ' + types).strip()
> +        d.setVar('KERNEL_IMAGETYPES', types)
> +    typeformake = re.sub(r'\.gz', '', types)
> +    d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake)
> +
> +    for type in typeformake.split():
> +        typelower = type.lower()
> +
> +        d.appendVar('PACKAGES', ' ' + 'kernel-image-' + typelower)
> +
> +        d.setVar('FILES_kernel-image-' + typelower, '/boot/' + type + '*')
> +
> +        d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-image-' +
> typelower)
> +
> +        d.setVar('PKG_kernel-image-' + typelower, 'kernel-image-' +
> typelower + '-${KERNEL_VERSION_PKG_NAME}')
> +
> +        d.setVar('ALLOW_EMPTY_kernel-image-' + typelower, '1')
>
> -    d.setVar("KERNEL_IMAGETYPE_FOR_MAKE", re.sub(r'\.gz$', '',
> kerneltype))
> +        imagedest = d.getVar('KERNEL_IMAGEDEST', True)
> +        priority = d.getVar('KERNEL_PRIORITY', True)
> +        postinst = '#!/bin/sh\n' + 'update-alternatives --install /' +
> imagedest + '/' + type + ' ' + type + ' ' + '/' + imagedest + '/' + type +
> '-${KERNEL_VERSION_NAME} ' + priority + ' || true' + '\n'
> +        d.setVar('pkg_postinst_kernel-image-' + typelower, postinst)
> +
> +        postrm = '#!/bin/sh\n' + 'update-alternatives --remove' + ' ' +
> type + ' ' + type + '-${KERNEL_VERSION_NAME} || true' + '\n'
> +        d.setVar('pkg_postrm_kernel-image-' + typelower, postrm)
>
>      image = d.getVar('INITRAMFS_IMAGE', True)
>      if image:
> @@ -92,8 +128,8 @@ KERNEL_PRIORITY ?=
> "${@int(d.getVar('PV',1).split('-')[0].split('+')[0].split('.
>
>  KERNEL_RELEASE ?= "${KERNEL_VERSION}"
>
> -# Where built kernel lies in the kernel tree
> -KERNEL_OUTPUT ?= "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}"
> +# The directory where built kernel lies in the kernel tree
> +KERNEL_OUTPUT_DIR ?= "arch/${ARCH}/boot"
>  KERNEL_IMAGEDEST = "boot"
>
>  #
> @@ -119,8 +155,6 @@ KERNEL_EXTRA_ARGS ?= ""
>  # We don't want to override kernel Makefile variables from the environment
>  EXTRA_OEMAKE = ""
>
> -KERNEL_ALT_IMAGETYPE ??= ""
> -
>  # Define where the kernel headers are installed on the target as well as
> where
>  # they are staged.
>  KERNEL_SRC_PATH = "/usr/src/kernel"
> @@ -166,23 +200,48 @@ copy_initramfs() {
>         echo "Finished copy of initramfs into ./usr"
>  }
>
> -INITRAMFS_BASE_NAME =
> "${KERNEL_IMAGETYPE}-initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"
> +INITRAMFS_BASE_NAME = "initramfs-${PV}-${PR}-${MACHINE}-${DATETIME}"

 INITRAMFS_BASE_NAME[vardepsexclude] = "DATETIME"
>  do_bundle_initramfs () {
>         if [ ! -z "${INITRAMFS_IMAGE}" -a x"${INITRAMFS_IMAGE_BUNDLE}" =
> x1 ]; then
>                 echo "Creating a kernel image with a bundled initramfs..."
>                 copy_initramfs
> -               if [ -e ${KERNEL_OUTPUT} ] ; then
> -                       mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.bak
> -               fi
> +               # Backuping kernel image relies on its type(regular file
> or symbolic link)
>

s/Backuping/Backing up/


> +               tmp_path=""
> +               for type in ${KERNEL_IMAGETYPES} ; do
> +                       if [ -h ${KERNEL_OUTPUT_DIR}/$type ] ; then
> +                               linkpath=`readlink -n
> ${KERNEL_OUTPUT_DIR}/$type`
> +                               realpath=`readlink -fn
> ${KERNEL_OUTPUT_DIR}/$type`
> +                               mv -f $realpath $realpath.bak
> +                               tmp_path=$tmp_path"
> "$type"#"$linkpath"#"$realpath
> +                       elif [ -f ${KERNEL_OUTPUT_DIR}/$type ]; then
> +                               mv -f ${KERNEL_OUTPUT_DIR}/$type
> ${KERNEL_OUTPUT_DIR}/$type.bak
> +                               tmp_path=$tmp_path" "$type"##"
> +                       fi
> +               done
>
> use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
>                 kernel_do_compile
> -               mv -f ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}.initramfs
> -               mv -f ${KERNEL_OUTPUT}.bak ${KERNEL_OUTPUT}
> +               # Restoring kernel image
> +               for tp in $tmp_path ; do
> +                       type=`echo $tp|cut -d "#" -f 1`
> +                       linkpath=`echo $tp|cut -d "#" -f 2`
> +                       realpath=`echo $tp|cut -d "#" -f 3`
> +                       if [ -n "$realpath" ]; then
> +                               mv -f $realpath $realpath.initramfs
> +                               mv -f $realpath.bak $realpath
> +                               cd ${B}/${KERNEL_OUTPUT_DIR}
> +                               ln -sf $linkpath.initramfs
> +                       else
> +                               mv -f ${KERNEL_OUTPUT_DIR}/$type
> ${KERNEL_OUTPUT_DIR}/$type.initramfs
> +                               mv -f ${KERNEL_OUTPUT_DIR}/$type.bak
> ${KERNEL_OUTPUT_DIR}/$type
> +                       fi
> +               done
>                 # Update install area
> -               echo "There is kernel image bundled with initramfs:
> ${B}/${KERNEL_OUTPUT}.initramfs"
> -               install -m 0644 ${B}/${KERNEL_OUTPUT}.initramfs
> ${D}/boot/${KERNEL_IMAGETYPE}-initramfs-${MACHINE}.bin
> -               echo "${B}/${KERNEL_OUTPUT}.initramfs"
> +               for type in ${KERNEL_IMAGETYPES} ; do
> +                       echo "There is kernel image bundled with
> initramfs: ${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs"
> +                       install -m 0644
> ${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs
> ${D}/boot/$type-initramfs-${MACHINE}.bin
> +                       echo "${B}/${KERNEL_OUTPUT_DIR}/$type.initramfs"
> +               done
>         fi
>  }
>
> @@ -207,10 +266,15 @@ kernel_do_compile() {
>                 copy_initramfs
>
> use_alternate_initrd=CONFIG_INITRAMFS_SOURCE=${B}/usr/${INITRAMFS_IMAGE}-${MACHINE}.cpio
>         fi
> -       oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} ${KERNEL_ALT_IMAGETYPE}
> CC="${KERNEL_CC}" LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS}
> $use_alternate_initrd
> -       if test "${KERNEL_IMAGETYPE_FOR_MAKE}.gz" = "${KERNEL_IMAGETYPE}";
> then
> -               gzip -9c < "${KERNEL_IMAGETYPE_FOR_MAKE}" >
> "${KERNEL_OUTPUT}"
> -       fi
> +       oe_runmake ${KERNEL_IMAGETYPE_FOR_MAKE} CC="${KERNEL_CC}"
> LD="${KERNEL_LD}" ${KERNEL_EXTRA_ARGS} $use_alternate_initrd
>


This is probably something that is worth mentioning in the top of the
commit message. You are
building multiple kernel image types, but they are all currently using the
same configuration.

If the make invokations were split into separate calls per image type, we
could conceivably
extend this to generate and use a separate config int he future.


> +       for typeformake in ${KERNEL_IMAGETYPE_FOR_MAKE} ; do
> +               for type in ${KERNEL_IMAGETYPES} ; do
> +                       if test "${typeformake}.gz" = "${type}"; then
> +                               gzip -9c < "${typeformake}" >
> "${KERNEL_OUTPUT_DIR}/${type}"
> +                               break;
> +                       fi
> +               done
> +       done
>  }
>
>  do_compile_kernelmodules() {
> @@ -251,7 +315,9 @@ kernel_do_install() {
>         #
>         install -d ${D}/${KERNEL_IMAGEDEST}
>         install -d ${D}/boot
> -       install -m 0644 ${KERNEL_OUTPUT}
> ${D}/${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
> +       for type in ${KERNEL_IMAGETYPES} ; do
> +               install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}
> ${D}/${KERNEL_IMAGEDEST}/${type}-${KERNEL_VERSION}
> +       done
>         install -m 0644 System.map ${D}/boot/System.map-${KERNEL_VERSION}
>         install -m 0644 .config ${D}/boot/config-${KERNEL_VERSION}
>         install -m 0644 vmlinux ${D}/boot/vmlinux-${KERNEL_VERSION}
> @@ -365,12 +431,12 @@ EXPORT_FUNCTIONS do_compile do_install do_configure
>  PACKAGES = "kernel kernel-base kernel-vmlinux kernel-image kernel-dev
> kernel-modules"
>  FILES_${PN} = ""
>  FILES_kernel-base = "/lib/modules/${KERNEL_VERSION}/modules.order
> /lib/modules/${KERNEL_VERSION}/modules.builtin"
> -FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*"
> +FILES_kernel-image = ""
>  FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config*
> ${KERNEL_SRC_PATH} /lib/modules/${KERNEL_VERSION}/build"
>  FILES_kernel-vmlinux = "/boot/vmlinux*"
>  FILES_kernel-modules = ""
>  RDEPENDS_kernel = "kernel-base"
> -# Allow machines to override this dependency if kernel image files are
> +# Allow machines to override this dependency if kernel image files are
>  # not wanted in images as standard
>  RDEPENDS_kernel-base ?= "kernel-image"
>  PKG_kernel-image =
> "kernel-image-${@legitimize_package_name('${KERNEL_VERSION}')}"
> @@ -394,14 +460,6 @@ pkg_postinst_kernel-base () {
>         fi
>  }
>
> -pkg_postinst_kernel-image () {
> -       update-alternatives --install
> /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE} ${KERNEL_IMAGETYPE}
> /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
> ${KERNEL_PRIORITY} || true
> -}
> -
> -pkg_postrm_kernel-image () {
> -       update-alternatives --remove ${KERNEL_IMAGETYPE}
> ${KERNEL_IMAGETYPE}-${KERNEL_VERSION} || true
> -}
> -
>  PACKAGESPLITFUNCS_prepend = "split_kernel_packages "
>
>  python split_kernel_packages () {
> @@ -422,13 +480,13 @@ do_kernel_link_vmlinux() {
>
>  do_strip() {
>         if [ -n "${KERNEL_IMAGE_STRIP_EXTRA_SECTIONS}" ]; then
> -               if [ "${KERNEL_IMAGETYPE}" != "vmlinux" ]; then
> -                       bbwarn "image type will not be stripped (not
> supported): ${KERNEL_IMAGETYPE}"
> +               if ! (echo "${KERNEL_IMAGETYPES}" | grep -q "vmlinux");
> then
>

You had used the \bfitImage\b, but here you don't .. grep -w could work for
them all.


> +                       bbwarn "image type(s) will not be stripped (not
> supported): ${KERNEL_IMAGETYPES}"
>


But on another note. Is it really right to say that none of the images will
be stripped if you
find vmlinux anywhere in the image type list ?


>                         return
>                 fi
>
>                 cd ${B}
> -               headers=`"$CROSS_COMPILE"readelf -S ${KERNEL_OUTPUT} | \
> +               headers=`"$CROSS_COMPILE"readelf -S
> ${KERNEL_OUTPUT_DIR}/vmlinux | \
>                           grep "^ \{1,\}\[[0-9 ]\{1,\}\] [^ ]" | \
>                           sed "s/^ \{1,\}\[[0-9 ]\{1,\}\] //" | \
>                           gawk '{print $1}'`
> @@ -438,7 +496,7 @@ do_strip() {
>                                 bbwarn "Section not found: $str";
>                         fi
>
> -                       "$CROSS_COMPILE"strip -s -R $str ${KERNEL_OUTPUT}
> +                       "$CROSS_COMPILE"strip -s -R $str
> ${KERNEL_OUTPUT_DIR}/vmlinux
>                 }; done
>
>                 bbnote "KERNEL_IMAGE_STRIP_EXTRA_SECTIONS is set,
> stripping sections:" \
> @@ -457,20 +515,22 @@ do_sizecheck() {
>                 if [ -n "$invalid" ]; then
>                         die "Invalid KERNEL_IMAGE_MAXSIZE:
> ${KERNEL_IMAGE_MAXSIZE}, should be an integerx (The unit is Kbytes)"
>                 fi
> -               size=`du -ks ${B}/${KERNEL_OUTPUT} | awk '{ print $1}'`
> -               if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then
> -                       die "This kernel (size=$size(K) >
> ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device. Please reduce the
> size of the kernel by making more of it modular."
> -               fi
> +               for type in ${KERNEL_IMAGETYPES} ; do
> +                       size=`du -ks ${B}/${KERNEL_OUTPUT_DIR}/$type | awk
> '{print $1}'`
> +                       if [ $size -ge ${KERNEL_IMAGE_MAXSIZE} ]; then
> +                               die "This kernel $type (size=$size(K) >
> ${KERNEL_IMAGE_MAXSIZE}(K)) is too big for your device. Please reduce the
> size of the kernel by making more of it modular."
>

Hmm. Again here. Multiple image types are being built. If one of them is
too large for the device,
who's to say that that's the one that is going to be used ? Maybe this
should be a warn, instead
of a die ?


> +                       fi
> +               done
>         fi
>  }
>  do_sizecheck[dirs] = "${B}"
>
>  addtask sizecheck before do_install after do_strip
>
> -KERNEL_IMAGE_BASE_NAME ?=
> "${KERNEL_IMAGETYPE}-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
> +KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
>  # Don't include the DATETIME variable in the sstate package signatures
>  KERNEL_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
> -KERNEL_IMAGE_SYMLINK_NAME ?= "${KERNEL_IMAGETYPE}-${MACHINE}"
> +KERNEL_IMAGE_SYMLINK_NAME ?= "${MACHINE}"
>  MODULE_IMAGE_BASE_NAME ?=
> "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
>  MODULE_IMAGE_BASE_NAME[vardepsexclude] = "DATETIME"
>  MODULE_TARBALL_BASE_NAME ?= "${MODULE_IMAGE_BASE_NAME}.tgz"
> @@ -479,28 +539,37 @@ MODULE_TARBALL_SYMLINK_NAME ?=
> "modules-${MACHINE}.tgz"
>  MODULE_TARBALL_DEPLOY ?= "1"
>
>  kernel_do_deploy() {
> -       install -m 0644 ${KERNEL_OUTPUT}
> ${DEPLOYDIR}/${KERNEL_IMAGE_BASE_NAME}.bin
> +       for type in ${KERNEL_IMAGETYPES} ; do
> +               base_name=${type}-${KERNEL_IMAGE_BASE_NAME}
> +               install -m 0644 ${KERNEL_OUTPUT_DIR}/${type}
> ${DEPLOYDIR}/${base_name}.bin
> +       done
>         if [ ${MODULE_TARBALL_DEPLOY} = "1" ] && (grep -q -i -e
> '^CONFIG_MODULES=y$' .config); then
>                 mkdir -p ${D}/lib
>                 tar -cvzf ${DEPLOYDIR}/${MODULE_TARBALL_BASE_NAME} -C ${D}
> lib
>                 ln -sf ${MODULE_TARBALL_BASE_NAME}
> ${DEPLOYDIR}/${MODULE_TARBALL_SYMLINK_NAME}
>         fi
>
> -       ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin
> ${DEPLOYDIR}/${KERNEL_IMAGE_SYMLINK_NAME}.bin
> -       ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin
> ${DEPLOYDIR}/${KERNEL_IMAGETYPE}
> +       for type in ${KERNEL_IMAGETYPES} ; do
> +               base_name=${type}-${KERNEL_IMAGE_BASE_NAME}
> +               symlink_name=${type}-${KERNEL_IMAGE_SYMLINK_NAME}
> +               ln -sf ${base_name}.bin ${DEPLOYDIR}/${symlink_name}.bin
> +               ln -sf ${base_name}.bin ${DEPLOYDIR}/${type}
> +       done
>
>         cp ${COREBASE}/meta/files/deploydir_readme.txt
> ${DEPLOYDIR}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
>
>         cd ${B}
>         # Update deploy directory
> -       if [ -e "${KERNEL_OUTPUT}.initramfs" ]; then
> -               echo "Copying deploy kernel-initramfs image and setting up
> links..."
> -               initramfs_base_name=${INITRAMFS_BASE_NAME}
> -
>  initramfs_symlink_name=${KERNEL_IMAGETYPE}-initramfs-${MACHINE}
> -               install -m 0644 ${KERNEL_OUTPUT}.initramfs
> ${DEPLOYDIR}/${initramfs_base_name}.bin
> -               cd ${DEPLOYDIR}
> -               ln -sf ${initramfs_base_name}.bin
> ${initramfs_symlink_name}.bin
> -       fi
> +       for type in ${KERNEL_IMAGETYPES} ; do
> +               if [ -e "${KERNEL_OUTPUT_DIR}/${type}.initramfs" ]; then
> +                       echo "Copying deploy ${type} kernel-initramfs
> image and setting up links..."
> +                       initramfs_base_name=${type}-${INITRAMFS_BASE_NAME}
> +                       initramfs_symlink_name=${type}-initramfs-${MACHINE}
> +                       install -m 0644
> ${KERNEL_OUTPUT_DIR}/${type}.initramfs
> ${DEPLOYDIR}/${initramfs_base_name}.bin
> +                       cd ${DEPLOYDIR}
> +                       ln -sf ${initramfs_base_name}.bin
> ${initramfs_symlink_name}.bin
> +               fi
> +       done
>  }
>  do_deploy[cleandirs] = "${DEPLOYDIR}"
>  do_deploy[dirs] = "${DEPLOYDIR} ${B}"
> diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
> index 00a69da..b3969b0 100644
> --- a/meta/conf/documentation.conf
> +++ b/meta/conf/documentation.conf
> @@ -246,6 +246,7 @@ KERNEL_CLASSES[doc] = "A list of classes defining
> kernel image types that kernel
>  KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line
> arguments the OpenEmbedded build system passes on when compiling the
> kernel."
>  KERNEL_FEATURES[doc] = "Includes additional metadata from the Yocto
> Project kernel Git repository. The metadata you add through this variable
> includes config fragments and features descriptions."
>  KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device,
> usually set by the machine configuration files and defaults to 'zImage'."
> +KERNEL_IMAGETYPES[doc] = "The list of types of kernel to build for a
> device, usually set by the machine configuration files and defaults to
> KERNEL_IMAGETYPE."
>  KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that need to be
> auto-loaded during boot"
>  KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build
> system expects to find module_conf_* values that specify configuration for
> each of the modules"
>  KERNEL_PATH[doc] = "The location of the kernel sources. This variable is
> set to the value of the STAGING_KERNEL_DIR within the module class
> (module.bbclass)."
> diff --git a/meta/conf/machine/qemumips.conf
> b/meta/conf/machine/qemumips.conf
> index fbf8137..67ce161 100644
> --- a/meta/conf/machine/qemumips.conf
> +++ b/meta/conf/machine/qemumips.conf
> @@ -6,7 +6,7 @@ require conf/machine/include/qemu.inc
>  require conf/machine/include/tune-mips32r2.inc
>
>  KERNEL_IMAGETYPE = "vmlinux"
> -KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> +KERNEL_IMAGETYPES = "vmlinux.bin"
>
>  SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
>
> diff --git a/meta/conf/machine/qemumips64.conf
> b/meta/conf/machine/qemumips64.conf
> index 8c3f1fe..393212e 100644
> --- a/meta/conf/machine/qemumips64.conf
> +++ b/meta/conf/machine/qemumips64.conf
> @@ -6,7 +6,7 @@ require conf/machine/include/qemu.inc
>  require conf/machine/include/tune-mips64.inc
>
>  KERNEL_IMAGETYPE = "vmlinux"
> -KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> +KERNEL_IMAGETYPES = "vmlinux.bin"
>
>  SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
>
> diff --git a/meta/recipes-kernel/linux/linux-dtb.inc
> b/meta/recipes-kernel/linux/linux-dtb.inc
> index 651a19e..74f5ef8 100644
> --- a/meta/recipes-kernel/linux/linux-dtb.inc
> +++ b/meta/recipes-kernel/linux/linux-dtb.inc
> @@ -34,9 +34,12 @@ do_install_append() {
>         for DTB in ${KERNEL_DEVICETREE}; do
>                 DTB=`normalize_dtb "${DTB}"`
>                 DTB_BASE_NAME=`basename ${DTB} .dtb`
> -               DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -               DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> -               install -m 0644 ${DTB_PATH}
> ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb
> +               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> +                       symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
>

If there are multiple image types being built, is this valid for them all ?


> +                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> +                       install -m 0644 ${DTB_PATH}
> ${D}/${KERNEL_IMAGEDEST}/devicetree-${DTB_SYMLINK_NAME}.dtb
> +               done
>         done
>  }
>
> @@ -44,31 +47,39 @@ do_deploy_append() {
>         for DTB in ${KERNEL_DEVICETREE}; do
>                 DTB=`normalize_dtb "${DTB}"`
>                 DTB_BASE_NAME=`basename ${DTB} .dtb`
> -               DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -               DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -               DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> -               install -d ${DEPLOYDIR}
> -               install -m 0644 ${DTB_PATH} ${DEPLOYDIR}/${DTB_NAME}.dtb
> -               ln -sf ${DTB_NAME}.dtb ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
> +               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> +                       base_name=${type}"-"${KERNEL_IMAGE_BASE_NAME}
> +                       symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
> +                       DTB_NAME=`echo ${base_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       DTB_PATH=`get_real_dtb_path_in_kernel "${DTB}"`
> +                       install -d ${DEPLOYDIR}
> +                       install -m 0644 ${DTB_PATH}
> ${DEPLOYDIR}/${DTB_NAME}.dtb
> +                       ln -sf ${DTB_NAME}.dtb
> ${DEPLOYDIR}/${DTB_SYMLINK_NAME}.dtb
> +               done
>         done
>  }
>
>  pkg_postinst_kernel-devicetree () {
>         cd /${KERNEL_IMAGEDEST}
> -       for DTB in ${KERNEL_DEVICETREE}
> -       do
> -               DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`
> -               DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -               update-alternatives --install
> /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb
> /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
> +       for DTB in ${KERNEL_DEVICETREE}; do
> +               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> +                       symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
> +                       DTB_BASE_NAME=`basename ${DTB} | awk -F "."
> '{print $1}'`
> +                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       update-alternatives --install
> /${KERNEL_IMAGEDEST}/${DTB_BASE_NAME}.dtb ${DTB_BASE_NAME}.dtb
> /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
> +               done
>         done
>  }
>
>  pkg_postrm_kernel-devicetree () {
>         cd /${KERNEL_IMAGEDEST}
> -       for DTB in ${KERNEL_DEVICETREE}
> -       do
> -               DTB_BASE_NAME=`basename ${DTB} | awk -F "." '{print $1}'`
> -               DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> -               update-alternatives --remove ${DTB_BASE_NAME}.dtb
> /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
> +       for DTB in ${KERNEL_DEVICETREE}; do
> +               for type in ${KERNEL_IMAGETYPE_FOR_MAKE}; do
> +                       symlink_name=${type}"-"${KERNEL_IMAGE_SYMLINK_NAME}
> +                       DTB_BASE_NAME=`basename ${DTB} | awk -F "."
> '{print $1}'`
> +                       DTB_SYMLINK_NAME=`echo ${symlink_name} | sed
> "s/${MACHINE}/${DTB_BASE_NAME}/g"`
> +                       update-alternatives --remove ${DTB_BASE_NAME}.dtb
> /boot/devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
> +               done
>         done
>  }
> diff --git
> a/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf
> b/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf
> index b319d62..e4a6f30 100644
> --- a/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf
> +++ b/scripts/lib/bsp/substrate/target/arch/mips/conf/machine/machine.conf
> @@ -9,7 +9,7 @@ require conf/machine/include/tune-mips32.inc
>  MACHINE_FEATURES = "screen keyboard pci usbhost ext2 ext3 serial"
>
>  KERNEL_IMAGETYPE = "vmlinux"
> -KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> +KERNEL_IMAGETYPES = "vmlinux.bin"
>  KERNEL_IMAGE_STRIP_EXTRA_SECTIONS  = ".comment"
>
>  {{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom"
> }}
> diff --git
> a/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf
> b/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf
> index 3afc5e0..2c2d8af 100644
> ---
> a/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf
> +++
> b/scripts/lib/bsp/substrate/target/arch/mips64/conf/machine/machine.conf
> @@ -9,7 +9,7 @@ require conf/machine/include/tune-mips64.inc
>  MACHINE_FEATURES = "pci ext2 ext3 serial"
>
>  KERNEL_IMAGETYPE = "vmlinux"
> -KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> +KERNEL_IMAGETYPES = "vmlinux.bin"
>


Again, why can't vmlinux just bein in KERNEL_IMAGETYPES ?

Bruce


>  KERNEL_IMAGE_STRIP_EXTRA_SECTIONS  = ".comment"
>
>  {{ if kernel_choice == "custom": preferred_kernel = "linux-yocto-custom"
> }}
> diff --git
> a/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf
> b/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf
> index 67e1cbd..7a0a4d3 100644
> --- a/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf
> +++ b/scripts/lib/bsp/substrate/target/arch/qemu/conf/machine/machine.conf
> @@ -69,6 +69,6 @@ SERIAL_CONSOLE = "115200 ttyS0"
>
>  {{ if qemuarch == "mips" or qemuarch == "mips64": }}
>  KERNEL_IMAGETYPE = "vmlinux"
> -KERNEL_ALT_IMAGETYPE = "vmlinux.bin"
> +KERNEL_IMAGETYPES = "vmlinux.bin"
>  SERIAL_CONSOLE = "115200 ttyS0"
>  MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
> --
> 1.9.1
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>



-- 
"Thou shalt not follow the NULL pointer, for chaos and madness await thee
at its end"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160219/91d2e955/attachment-0002.html>


More information about the Openembedded-core mailing list