summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky <pmiscml@gmail.com>2008-02-16 03:00:52 +0000
committerPaul Sokolovsky <pmiscml@gmail.com>2008-02-16 03:00:52 +0000
commitf53ea006bcf4e938ed1c569080472dd05dc84b4d (patch)
tree21aa85e3dd72dfc4cfabfe7b96395cd0b4ae9081
parent2c9beab0a15cccf8a519a3407fbe0c09ff6f21ec (diff)
initramfs-module-bootmenu, initramfs-module-kexecboot: Fixes for kexecing.
* Be sure to pass original command line contents to new kernel. * Add protection against infinite recursive kexecing.
-rw-r--r--packages/initrdscripts/files/30-bootmenu.sh5
-rw-r--r--packages/initrdscripts/files/87-kexecboot.sh24
-rw-r--r--packages/initrdscripts/initramfs-module-bootmenu_1.0.bb2
-rw-r--r--packages/initrdscripts/initramfs-module-kexecboot_1.0.bb2
4 files changed, 18 insertions, 15 deletions
diff --git a/packages/initrdscripts/files/30-bootmenu.sh b/packages/initrdscripts/files/30-bootmenu.sh
index 7bc1429b1b..d54a643807 100644
--- a/packages/initrdscripts/files/30-bootmenu.sh
+++ b/packages/initrdscripts/files/30-bootmenu.sh
@@ -145,12 +145,13 @@ path=`expr "$sel" : '[^/]*\([^ ]*\).*'`
if [ "$dev" == "NFS" ]; then
ROOT_DEVICE="/dev/nfs"
- CMDLINE="$CMDLINE nfsroot=192.168.2.200:/srv/nfs/oe/image"
+ CMDLINE="$CMDLINE root=/dev/nfs nfsroot=192.168.2.200:/srv/nfs/oe/image"
elif [ -n "$path" ]; then
ROOT_DEVICE="/dev/loop"
- CMDLINE="looproot=/dev/$dev:$path"
+ CMDLINE="$CMDLINE root=/dev/loop looproot=/dev/$dev:$path"
else
ROOT_DEVICE="/dev/$dev"
+ CMDLINE="$CMDLINE root=$ROOT_DEVICE"
fi
echo ROOT_DEVICE=$ROOT_DEVICE
diff --git a/packages/initrdscripts/files/87-kexecboot.sh b/packages/initrdscripts/files/87-kexecboot.sh
index ab281577d4..9232934f98 100644
--- a/packages/initrdscripts/files/87-kexecboot.sh
+++ b/packages/initrdscripts/files/87-kexecboot.sh
@@ -2,16 +2,18 @@
# 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"
+ if ! expr "$CMDLINE" : '.*nokexec'; 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 nokexec"
+ sleep 10
+ /usr/sbin/kexec -f "$BOOT_ROOT/boot/zImage" $initramfs --command-line="$CMDLINE nokexec"
+ sleep 10000
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-bootmenu_1.0.bb b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
index e87ba69776..8b9a49f40b 100644
--- a/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-bootmenu_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://30-bootmenu.sh"
-PR = "r8"
+PR = "r9"
DESCRIPTION = "An initramfs module with UI for selection of boot device."
RDEPENDS = "klibc-utils-fstype initramfs-uniboot initramfs-module-block initramfs-module-loop initramfs-module-nfs"
# For VFAT mounting.
diff --git a/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb b/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
index e8be2fd757..35100a94e6 100644
--- a/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-kexecboot_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://87-kexecboot.sh"
-PR = "r0.2"
+PR = "r0.4"
DESCRIPTION = "An initramfs module for kexecing kernel from rootfs."
RDEPENDS = "initramfs-uniboot kexec-static"