From 8dc883b9769f0b8733cee949a1c2959c4542168c Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Tue, 12 Aug 2008 06:02:06 +0000 Subject: [PATCH] Allow routerboard users to kexec into the newly installed kernel if kexec-tools is installed SVN-Revision: 12286 --- target/linux/adm5120/router_le/base-files/sbin/wget2nand | 5 +++++ target/linux/adm5120/router_le/config-2.6.26 | 1 + target/linux/rb532/base-files/sbin/cf2nand | 5 +++++ target/linux/rb532/base-files/sbin/wget2nand | 6 ++++++ target/linux/rb532/config-2.6.23 | 1 + 5 files changed, 18 insertions(+) diff --git a/target/linux/adm5120/router_le/base-files/sbin/wget2nand b/target/linux/adm5120/router_le/base-files/sbin/wget2nand index 50e9ddb4fb..20be45826b 100755 --- a/target/linux/adm5120/router_le/base-files/sbin/wget2nand +++ b/target/linux/adm5120/router_le/base-files/sbin/wget2nand @@ -63,6 +63,11 @@ echo "chmod ugo+x /" > /tmp/wget2nand-rootfs/etc/uci-defaults/set_root_permissio sync ls /tmp/wget2nand-kernel/ ls /tmp/wget2nand-rootfs/ +# use kexec if present +[ -x /usr/sbin/kexec ] && { + kexec -l /tmp/wget2nand-kernel/kernel --command-line="$(cat /proc/cmdline) rootfstype=yaffs2 root=$mtd_kernel" + kexec -e +} # unmount the partitions and remove the directories into which they were mounted umount /tmp/wget2nand-kernel umount /tmp/wget2nand-rootfs diff --git a/target/linux/adm5120/router_le/config-2.6.26 b/target/linux/adm5120/router_le/config-2.6.26 index 622d741869..4792f6445e 100644 --- a/target/linux/adm5120/router_le/config-2.6.26 +++ b/target/linux/adm5120/router_le/config-2.6.26 @@ -143,6 +143,7 @@ CONFIG_IP_NF_TARGET_CLUSTERIP=m CONFIG_IRQ_CPU=y # CONFIG_IWLWIFI_LEDS is not set # CONFIG_JOLIET is not set +CONFIG_KEXEC=y # CONFIG_LEDS_ALIX is not set CONFIG_LEDS_GPIO=m CONFIG_LEDS_TRIGGER_ADM5120_SWITCH=m diff --git a/target/linux/rb532/base-files/sbin/cf2nand b/target/linux/rb532/base-files/sbin/cf2nand index 146aa4f112..5b838dbbb9 100755 --- a/target/linux/rb532/base-files/sbin/cf2nand +++ b/target/linux/rb532/base-files/sbin/cf2nand @@ -53,6 +53,11 @@ echo "Copying filesystem..." ( cd /tmp/cf2nand/rootfs; tar c . ) | ( cd /tmp/cf2nand/p2; tar x ) echo "chmod ugo+x /" > /tmp/cf2nand/p2/etc/uci-defaults/set_root_permission sync +# Use kexec is present +[ -x /usr/bin/kexec ] && { + kexec -l /tmp/cf2nand/p1/kernel --command-line="$(cat /proc/cmdline) root=/dev/mtdblock1 rootfstype=yaffs2 init=/etc/preinit" + kexec -e +} umount /tmp/cf2nand/p2 rmdir /tmp/cf2nand/p2 diff --git a/target/linux/rb532/base-files/sbin/wget2nand b/target/linux/rb532/base-files/sbin/wget2nand index 2101195bca..b0f4205e78 100755 --- a/target/linux/rb532/base-files/sbin/wget2nand +++ b/target/linux/rb532/base-files/sbin/wget2nand @@ -55,6 +55,12 @@ echo "chmod ugo+x /" > /tmp/wget2nand/etc/uci-defaults/set_root_permission sync ls /tmp/wget2nand-boot/ ls /tmp/wget2nand/ +# use kexec if present +[ -x /usr/bin/kexec ] && { + kexec -l /tmp/wget2nand-boot/kernel --command-line="$(cat /proc/cmdline) root=$main rootfstype=yaffs2 init=/etc/preinit" + kexec -e +} + # unmount the partitions and remove the directories into which they were mounted umount /tmp/wget2nand-boot umount /tmp/wget2nand diff --git a/target/linux/rb532/config-2.6.23 b/target/linux/rb532/config-2.6.23 index fcfd6103ae..53c1517530 100644 --- a/target/linux/rb532/config-2.6.23 +++ b/target/linux/rb532/config-2.6.23 @@ -60,6 +60,7 @@ CONFIG_INITRAMFS_SOURCE="" CONFIG_INPUT=y CONFIG_INPUT_KEYBOARD=y CONFIG_IRQ_CPU=y +CONFIG_KEXEC=y # CONFIG_KEYBOARD_ATKBD is not set CONFIG_KEYBOARD_GPIO=y # CONFIG_KEYBOARD_LKKBD is not set