mirror of
https://git.yoctoproject.org/poky
synced 2026-05-08 17:19:20 +00:00
kernel-fitimage: Add x86 support
For x86, bzImage must be built instead of zImage. Include setup.bin (which is required to boot the kernel) in the fitimage and always use a load/boot address of 0x00090000. For details see: http://git.denx.de/?p=u-boot.git;a=blob;f=doc/uImage.FIT/x86-fit-boot.txt (From OE-Core rev: 1a65d11d4b8f056fdf22c31a92d1e58dec6d89f6) Signed-off-by: George McCollister <george.mccollister@gmail.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
ec755d2524
commit
749d7771ce
@@ -7,12 +7,17 @@ python __anonymous () {
|
||||
depends = "%s u-boot-mkimage-native dtc-native" % depends
|
||||
d.setVar("DEPENDS", depends)
|
||||
|
||||
if d.getVar("UBOOT_ARCH", True) == "x86":
|
||||
replacementtype = "bzImage"
|
||||
else:
|
||||
replacementtype = "zImage"
|
||||
|
||||
# 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 .
|
||||
typeformake = d.getVar("KERNEL_IMAGETYPE_FOR_MAKE", True) or ""
|
||||
if 'fitImage' in typeformake.split():
|
||||
d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('fitImage', 'zImage'))
|
||||
d.setVar('KERNEL_IMAGETYPE_FOR_MAKE', typeformake.replace('fitImage', replacementtype))
|
||||
|
||||
image = d.getVar('INITRAMFS_IMAGE', True)
|
||||
if image:
|
||||
@@ -137,6 +142,33 @@ fitimage_emit_section_dtb() {
|
||||
EOF
|
||||
}
|
||||
|
||||
#
|
||||
# Emit the fitImage ITS setup section
|
||||
#
|
||||
# $1 ... .its filename
|
||||
# $2 ... Image counter
|
||||
# $3 ... Path to setup image
|
||||
fitimage_emit_section_setup() {
|
||||
|
||||
setup_csum="sha1"
|
||||
|
||||
cat << EOF >> ${1}
|
||||
setup@${2} {
|
||||
description = "Linux setup.bin";
|
||||
data = /incbin/("${3}");
|
||||
type = "x86_setup";
|
||||
arch = "${UBOOT_ARCH}";
|
||||
os = "linux";
|
||||
compression = "none";
|
||||
load = <0x00090000>;
|
||||
entry = <0x00090000>;
|
||||
hash@1 {
|
||||
algo = "${setup_csum}";
|
||||
};
|
||||
};
|
||||
EOF
|
||||
}
|
||||
|
||||
#
|
||||
# Emit the fitImage ITS ramdisk section
|
||||
#
|
||||
@@ -171,6 +203,7 @@ EOF
|
||||
# $2 ... Linux kernel ID
|
||||
# $3 ... DTB image ID
|
||||
# $4 ... ramdisk ID
|
||||
# $5 ... config ID
|
||||
fitimage_emit_section_config() {
|
||||
|
||||
conf_csum="sha1"
|
||||
@@ -179,24 +212,25 @@ fitimage_emit_section_config() {
|
||||
fi
|
||||
|
||||
# Test if we have any DTBs at all
|
||||
if [ -z "${3}" -a -z "${4}" ] ; then
|
||||
conf_desc="Boot Linux kernel"
|
||||
fdt_line=""
|
||||
ramdisk_line=""
|
||||
elif [ -z "${4}" ]; then
|
||||
conf_desc="Boot Linux kernel with FDT blob"
|
||||
fdt_line="fdt = \"fdt@${3}\";"
|
||||
ramdisk_line=""
|
||||
elif [ -z "${3}" ]; then
|
||||
conf_desc="Boot Linux kernel with ramdisk"
|
||||
fdt_line=""
|
||||
ramdisk_line="ramdisk = \"ramdisk@${4}\";"
|
||||
else
|
||||
conf_desc="Boot Linux kernel with FDT blob, ramdisk"
|
||||
conf_desc="Linux kernel"
|
||||
kernel_line="kernel = \"kernel@${2}\";"
|
||||
fdt_line=""
|
||||
ramdisk_line=""
|
||||
|
||||
if [ -n "${3}" ]; then
|
||||
conf_desc="${conf_desc}, FDT blob"
|
||||
fdt_line="fdt = \"fdt@${3}\";"
|
||||
fi
|
||||
|
||||
if [ -n "${4}" ]; then
|
||||
conf_desc="${conf_desc}, ramdisk"
|
||||
ramdisk_line="ramdisk = \"ramdisk@${4}\";"
|
||||
fi
|
||||
kernel_line="kernel = \"kernel@${2}\";"
|
||||
|
||||
if [ -n "${5}" ]; then
|
||||
conf_desc="${conf_desc}, setup"
|
||||
setup_line="setup = \"setup@${5}\";"
|
||||
fi
|
||||
|
||||
cat << EOF >> ${1}
|
||||
default = "conf@1";
|
||||
@@ -205,6 +239,7 @@ fitimage_emit_section_config() {
|
||||
${kernel_line}
|
||||
${fdt_line}
|
||||
${ramdisk_line}
|
||||
${setup_line}
|
||||
hash@1 {
|
||||
algo = "${conf_csum}";
|
||||
};
|
||||
@@ -212,16 +247,22 @@ EOF
|
||||
|
||||
if [ ! -z "${conf_sign_keyname}" ] ; then
|
||||
|
||||
if [ -z "${3}" -a -z "${4}" ] ; then
|
||||
sign_line="sign-images = \"kernel\";"
|
||||
elif [ -z "${4}" ]; then
|
||||
sign_line="sign-images = \"fdt\", \"kernel\";"
|
||||
elif [ -z "${3}" ]; then
|
||||
sign_line="sign-images = \"ramdisk\", \"kernel\";"
|
||||
else
|
||||
sign_line="sign-images = \"ramdisk\", \"fdt\", \"kernel\";"
|
||||
sign_line="sign-images = \"kernel\""
|
||||
|
||||
if [ -n "${3}" ]; then
|
||||
sign_line="${sign_line}, \"fdt\""
|
||||
fi
|
||||
|
||||
if [ -n "${4}" ]; then
|
||||
sign_line="${sign_line}, \"ramdisk\""
|
||||
fi
|
||||
|
||||
if [ -n "${5}" ]; then
|
||||
sign_line="${sign_line}, \"setup\""
|
||||
fi
|
||||
|
||||
sign_line="${sign_line};"
|
||||
|
||||
cat << EOF >> ${1}
|
||||
signature@1 {
|
||||
algo = "${conf_csum},rsa2048";
|
||||
@@ -246,6 +287,7 @@ fitimage_assemble() {
|
||||
kernelcount=1
|
||||
dtbcount=""
|
||||
ramdiskcount=${3}
|
||||
setupcount=""
|
||||
rm -f ${1} arch/${ARCH}/boot/${2}
|
||||
|
||||
fitimage_emit_fit_header ${1}
|
||||
@@ -279,7 +321,15 @@ fitimage_assemble() {
|
||||
fi
|
||||
|
||||
#
|
||||
# Step 3: Prepare a ramdisk section.
|
||||
# Step 3: Prepare a setup section. (For x86)
|
||||
#
|
||||
if test -e arch/${ARCH}/boot/setup.bin ; then
|
||||
setupcount=1
|
||||
fitimage_emit_section_setup ${1} "${setupcount}" arch/${ARCH}/boot/setup.bin
|
||||
fi
|
||||
|
||||
#
|
||||
# Step 4: Prepare a ramdisk section.
|
||||
#
|
||||
if [ "x${ramdiskcount}" = "x1" ] ; then
|
||||
copy_initramfs
|
||||
@@ -290,21 +340,23 @@ fitimage_assemble() {
|
||||
|
||||
# Force the first Kernel and DTB in the default config
|
||||
kernelcount=1
|
||||
dtbcount=1
|
||||
if test -n "${dtbcount}"; then
|
||||
dtbcount=1
|
||||
fi
|
||||
|
||||
#
|
||||
# Step 4: Prepare a configurations section
|
||||
# Step 5: Prepare a configurations section
|
||||
#
|
||||
fitimage_emit_section_maint ${1} confstart
|
||||
|
||||
fitimage_emit_section_config ${1} ${kernelcount} ${dtbcount} ${ramdiskcount}
|
||||
fitimage_emit_section_config ${1} "${kernelcount}" "${dtbcount}" "${ramdiskcount}" "${setupcount}"
|
||||
|
||||
fitimage_emit_section_maint ${1} sectend
|
||||
|
||||
fitimage_emit_section_maint ${1} fitend
|
||||
|
||||
#
|
||||
# Step 5: Assemble the image
|
||||
# Step 6: Assemble the image
|
||||
#
|
||||
uboot-mkimage \
|
||||
${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \
|
||||
@@ -312,7 +364,7 @@ fitimage_assemble() {
|
||||
arch/${ARCH}/boot/${2}
|
||||
|
||||
#
|
||||
# Step 6: Sign the image and add public key to U-Boot dtb
|
||||
# Step 7: Sign the image and add public key to U-Boot dtb
|
||||
#
|
||||
if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] ; then
|
||||
uboot-mkimage \
|
||||
|
||||
Reference in New Issue
Block a user