summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky <pmiscml@gmail.com>2008-02-16 00:17:13 +0000
committerPaul Sokolovsky <pmiscml@gmail.com>2008-02-16 00:17:13 +0000
commit82e725505a8924059c5c75ed32cf3101ef318c10 (patch)
tree8950edb2abd4bdbbf8fc681b6b88a6abb97b1e32
parent07e7c1fcd70ab0a124aaee53deacb49a9f388975 (diff)
initramfs-module-kexecboot: Initramfs module to kexec to kernel in rootfs.
* Instead of switch_root'ing to it, which was the only working mode previously. So, now, if there's /boot/zImage in rootfs, it will be kexec'ed too. Otherwise, switch_root will happen. * Caveat: there should be initramfs for new (kexec'ed to) kernel too, too handle its loading of rootfs as selected by interactive bootloader. This can be very same kernel as for bootloader, with bundled initramfs-bootmenu-image (which has special check - if root is explicitly specified on command line, then skip interactive selection); or, as a kind of optimization, that could be initramfs-image (no interactive part). Finally, initramfs (any of there two or other) can be a standalone file in rootfs, /boot/initramfs.bin.
-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/* "