diff options
author | Paul Sokolovsky <pmiscml@gmail.com> | 2008-02-16 03:00:52 +0000 |
---|---|---|
committer | Paul Sokolovsky <pmiscml@gmail.com> | 2008-02-16 03:00:52 +0000 |
commit | f53ea006bcf4e938ed1c569080472dd05dc84b4d (patch) | |
tree | 21aa85e3dd72dfc4cfabfe7b96395cd0b4ae9081 | |
parent | 2c9beab0a15cccf8a519a3407fbe0c09ff6f21ec (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.
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" |