On x86, and ELF image file may be stored as a coreboot payload. This image file may be a kernel or a kernel+initrd.
Documentation on this has been started on the coreboot wiki: http://www.coreboot.org/Mkelfimage
We have seen success using the mkelfimage utility to construct a kernel+initrd image using the micro-image OpenEmbedded image as an initrd. http://www.se-eng.com/wiki/index.php/Open_Embedded_Setup
The first patch contains the meta files for the mkelfimage utility in OpenEmbedded. --- recipes/mkelfimage/files/no-stack-protector.patch | 11 +++++++++++ recipes/mkelfimage/mkelfimage-native_git.bb | 11 +++++++++++ recipes/mkelfimage/mkelfimage.inc | 3 +++ recipes/mkelfimage/mkelfimage_git.bb | 17 +++++++++++++++++ 4 files changed, 42 insertions(+), 0 deletions(-) create mode 100644 recipes/mkelfimage/files/no-stack-protector.patch create mode 100644 recipes/mkelfimage/mkelfimage-native_git.bb create mode 100644 recipes/mkelfimage/mkelfimage.inc create mode 100644 recipes/mkelfimage/mkelfimage_git.bb
diff --git a/recipes/mkelfimage/files/no-stack-protector.patch b/recipes/mkelfimage/files/no-stack-protector.patch new file mode 100644 index 0000000..135de8d --- /dev/null +++ b/recipes/mkelfimage/files/no-stack-protector.patch @@ -0,0 +1,11 @@ +--- mkelfImage/Makefile.orig 2011-06-17 15:20:46.816870941 -0600 ++++ mkelfImage/Makefile 2011-06-17 15:20:59.619382362 -0600 +@@ -14,7 +14,7 @@ + pkglibdir = $(libdir)/$(PACKAGE) + pkgincludedir = $(includedir)/$(PACKAGE) + +-CPPFLAGS=-DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(RELEASE_DATE)"' -I include ++CPPFLAGS=-fno-stack-protector -DVERSION='"$(VERSION)"' -DRELEASE_DATE='"$(RELEASE_DATE)"' -I include $(CFLAGS) $(LDFLAGS) + HOST_CPPFLAGS=$(CPPFLAGS) + I386_CPPFLAGS=$(CPPFLAGS) -I arch/i386/include + IA64_CPPFLAGS=$(CPPFLAGS) -I arch/ia64/include diff --git a/recipes/mkelfimage/mkelfimage-native_git.bb b/recipes/mkelfimage/mkelfimage-native_git.bb new file mode 100644 index 0000000..e2f251e --- /dev/null +++ b/recipes/mkelfimage/mkelfimage-native_git.bb @@ -0,0 +1,11 @@ +require mkelfimage_${PV}.bb +inherit native + +do_stage () { + install -m 0755 objdir/sbin/mkelfImage ${STAGING_BINDIR}/ +} + +do_install () { + : +} + diff --git a/recipes/mkelfimage/mkelfimage.inc b/recipes/mkelfimage/mkelfimage.inc new file mode 100644 index 0000000..e06ed67 --- /dev/null +++ b/recipes/mkelfimage/mkelfimage.inc @@ -0,0 +1,3 @@ +LICENSE = "GPLv2" +DESCRIPTION = "A utility to create ELF boot images from Linux kernel images" +SECTION = "console/utils" diff --git a/recipes/mkelfimage/mkelfimage_git.bb b/recipes/mkelfimage/mkelfimage_git.bb new file mode 100644 index 0000000..7855f58 --- /dev/null +++ b/recipes/mkelfimage/mkelfimage_git.bb @@ -0,0 +1,17 @@ +require mkelfimage.inc + +SRCREV = "c045b4cc458a62dbb1dd99ae6a9343e52d1fe1e0" +PV = "1.0.0+gitr${SRCPV}" +PR = "r1" + +S = "${WORKDIR}/git/util/mkelfImage" + +SRC_URI = "git://review.coreboot.org/p/coreboot;protocol=http;branch=master \ + file://no-stack-protector.patch" + +DEFAULT_PREFERENCE = "1" + +inherit autotools + +SRC_URI[md5sum] = "719b22bdd34431203f9349250c67c5e3" +SRC_URI[sha256sum] = "9186e6e7302f38c1f77b763f0f14843fabc873ac7c81ede8ee094a47055668b5"