From 1642b3e8fc81c666713951fdd4e7ff9a50d1c5a8 Mon Sep 17 00:00:00 2001 From: Thomas Kunze Date: Fri, 30 May 2008 19:25:40 +0000 Subject: kernel.bbclass: get initramfs stuff working To use this you have to INITRAMFS_IMAGE to the desired image. In addition the you must have cpio.gz in IMAGE_FSTYPES (at least for that image see packages/images/initramfs-kexec-image.bb for an example) --- classes/kernel.bbclass | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/classes/kernel.bbclass b/classes/kernel.bbclass index a7fd79419c..01655440a9 100644 --- a/classes/kernel.bbclass +++ b/classes/kernel.bbclass @@ -16,6 +16,9 @@ python __anonymous () { depends = bb.data.getVar("DEPENDS", d, 1) depends = "%s u-boot-mkimage-openmoko-native" % depends bb.data.setVar("DEPENDS", depends, d) + + if bb.data.getVar('INITRAMFS_IMAGE', d, True) != '': + bb.data.setVar('INITRAMFS_TASK', '${INITRAMFS_IMAGE}:do_rootfs', d); } inherit kernel-arch @@ -79,21 +82,28 @@ kernel_do_compile() { fi } -INITRAMFS_SYMLINK_NAME ?= "initramfs-${MACHINE}" -INITRAMFS_IMAGE_TARGET ?= "initramfs-image" do_builtin_initramfs() { - unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE - cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_SYMLINK_NAME}" usr/initramfs_data.cpio.gz - oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" - install -d ${DEPLOY_DIR_IMAGE} - install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-initramfs.bin - # Make sure to kill injected initramfs, in case someone will do "-c compile -f" - rm usr/initramfs_data.cpio.gz + if [ ! -z "${INITRAMFS_IMAGE}" ]; then + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE + cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.cpio.gz" usr/initramfs_data.cpio.gz + oe_runmake ${KERNEL_IMAGETYPE} CC="${KERNEL_CC}" LD="${KERNEL_LD}" + + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 arch/${ARCH}/boot/${KERNEL_IMAGETYPE} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-${INITRAMFS_IMAGE}.bin + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-${INITRAMFS_IMAGE}.bin + + # Make sure to kill injected initramfs, in case someone will do "-c compile -f" + rm usr/initramfs_data.cpio.gz + + cd ${DEPLOY_DIR_IMAGE} + rm -f ${KERNEL_IMAGE_SYMLINK_NAME}-${INITRAMFS_IMAGE}.bin + ln -sf ${KERNEL_IMAGE_BASE_NAME}-${INITRAMFS_IMAGE}.bin ${KERNEL_IMAGE_SYMLINK_NAME}-${INITRAMFS_IMAGE}.bin + package_stagefile_shell ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_SYMLINK_NAME}-${INITRAMFS_IMAGE}.bin + fi } -#addtask builtin_initramfs after do_compile -#do_builtin_initramfs[nostamp] = "1" -#do_builtin_initramfs[depends] = "${INITRAMFS_IMAGE_TARGET}:do_rootfs" +addtask builtin_initramfs before do_build after do_package_write +do_builtin_initramfs[depends] = '${INITRAMFS_TASK}' kernel_do_stage() { ASMDIR=`readlink include/asm` -- cgit v1.2.3