summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/initrdscripts/files/87-kexecboot.sh17
-rw-r--r--packages/initrdscripts/initramfs-module-kexecboot_1.0.bb12
2 files changed, 29 insertions, 0 deletions
diff --git a/packages/initrdscripts/files/87-kexecboot.sh b/packages/initrdscripts/files/87-kexecboot.sh
new file mode 100644
index 0000000000..ab281577d4
--- /dev/null
+++ b/packages/initrdscripts/files/87-kexecboot.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Allow kexecing to kernel in rootfs
+
+if [ -n "$BOOT_ROOT" -a -f "$BOOT_ROOT/boot/zImage" ]; then
+ echo "Kernel found in rootfs:"
+ ls -l "$BOOT_ROOT/boot/zImage"
+ initramfs=""
+ if [ -f "$BOOT_ROOT/boot/initramfs.bin" ]; then
+ echo "Initramfs found in rootfs:"
+ ls -l "$BOOT_ROOT/boot/initramfs.bin"
+ initramfs="--initrd=$BOOT_ROOT/boot/initramfs.bin"
+ fi
+ echo /usr/sbin/kexec -f "$BOOT_ROOT/boot/zImage" $initramfs --command-line="$CMDLINE"
+ sleep 10
+ /usr/sbin/kexec -f "$BOOT_ROOT/boot/zImage" $initramfs --command-line="$CMDLINE"
+ sleep 10000
+fi
diff --git a/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb b/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
new file mode 100644
index 0000000000..e8be2fd757
--- /dev/null
+++ b/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
@@ -0,0 +1,12 @@
+SRC_URI = "file://87-kexecboot.sh"
+PR = "r0.2"
+DESCRIPTION = "An initramfs module for kexecing kernel from rootfs."
+RDEPENDS = "initramfs-uniboot kexec-static"
+
+do_install() {
+ install -d ${D}/initrd.d
+ install -m 0755 ${WORKDIR}/87-kexecboot.sh ${D}/initrd.d/
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /initrd.d/* "