[oe-commits] org.oe.dev initramfs-module-kexecboot: Initramfs module to kexec to kernel in rootfs.

pfalcon commit openembedded-commits at lists.openembedded.org
Sat Feb 16 01:08:24 UTC 2008


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.

Author: pfalcon at openembedded.org
Branch: org.openembedded.dev
Revision: e8991301f05699cb60606be403c8f4897f904025
ViewMTN: http://monotone.openembedded.org/revision/info/e8991301f05699cb60606be403c8f4897f904025
Files:
1
packages/initrdscripts/files/87-kexecboot.sh
packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
Diffs:

#
# mt diff -r5a8c2a2330d46aac768d52f881486817fce472bb -re8991301f05699cb60606be403c8f4897f904025
#
# 
# 
# add_file "packages/initrdscripts/files/87-kexecboot.sh"
#  content [d2082585f4d6be02d62797744802d10c9ddce372]
# 
# add_file "packages/initrdscripts/initramfs-module-kexecboot_1.0.bb"
#  content [8f53faf60c2ed70390b85b76940ba0ca9619e5a3]
# 
============================================================
--- packages/initrdscripts/files/87-kexecboot.sh	d2082585f4d6be02d62797744802d10c9ddce372
+++ packages/initrdscripts/files/87-kexecboot.sh	d2082585f4d6be02d62797744802d10c9ddce372
@@ -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
============================================================
--- packages/initrdscripts/initramfs-module-kexecboot_1.0.bb	8f53faf60c2ed70390b85b76940ba0ca9619e5a3
+++ packages/initrdscripts/initramfs-module-kexecboot_1.0.bb	8f53faf60c2ed70390b85b76940ba0ca9619e5a3
@@ -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/* "






More information about the Openembedded-commits mailing list