From 1940283948acad2081249eaaa5ebb663998de9ad Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 25 Apr 2013 19:02:32 +0000 Subject: [PATCH] mount_root: prepare base-files Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36429 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files.old/etc/init.d/done | 20 +++++++++ .../lib/firstboot/05_firstboot_skip | 0 .../lib/firstboot/10_determine_parts | 0 .../lib/firstboot/10_no_fo_clear_overlay | 0 .../lib/firstboot/10_reset_has_mini_fo | 0 .../lib/firstboot/20_has_mini_fo | 0 .../lib/firstboot/20_no_fo_mount_jffs | 0 .../lib/firstboot/20_reset_clear_jffs | 0 .../lib/firstboot/30_is_rootfs_mounted | 0 .../lib/firstboot/30_no_fo_pivot | 0 .../lib/firstboot/30_reset_copy_rom | 0 .../lib/firstboot/40_copy_ramoverlay | 0 .../lib/firstboot/40_no_fo_copy_ramoverlay | 0 .../lib/firstboot/50_pivot | 0 .../lib/firstboot/99_10_no_fo_cleanup | 0 .../lib/firstboot/99_10_with_fo_cleanup | 2 +- .../lib/preinit/05_mount_skip | 0 .../lib/preinit/10_check_for_mtd | 0 .../lib/preinit/20_check_jffs2_ready | 0 .../lib/preinit/40_mount_jffs2 | 0 .../lib/preinit/41_merge_overlay_hooks | 0 .../lib/preinit/70_pivot_jffs2_root | 0 .../lib/preinit/90_mount_no_jffs2 | 0 .../lib/preinit/90_restore_config | 0 .../lib/preinit/99_10_mount_no_mtd | 0 package/base-files/files.old/sbin/firstboot | 44 +++++++++++++++++++ .../{files => files.old}/sbin/mount_root | 0 package/base-files/files/etc/init.d/done | 2 +- package/base-files/files/etc/rc.button/reset | 2 +- .../files/lib/firstboot/99_10_with_fo_cleanup | 25 ----------- .../files/lib/preinit/80_mount_root | 11 ++++- package/base-files/files/sbin/firstboot | 43 +----------------- package/base-files/files/sbin/sysupgrade | 2 + 33 files changed, 80 insertions(+), 71 deletions(-) create mode 100755 package/base-files/files.old/etc/init.d/done rename package/base-files/{files => files.old}/lib/firstboot/05_firstboot_skip (100%) rename package/base-files/{files => files.old}/lib/firstboot/10_determine_parts (100%) rename package/base-files/{files => files.old}/lib/firstboot/10_no_fo_clear_overlay (100%) rename package/base-files/{files => files.old}/lib/firstboot/10_reset_has_mini_fo (100%) rename package/base-files/{files => files.old}/lib/firstboot/20_has_mini_fo (100%) rename package/base-files/{files => files.old}/lib/firstboot/20_no_fo_mount_jffs (100%) rename package/base-files/{files => files.old}/lib/firstboot/20_reset_clear_jffs (100%) rename package/base-files/{files => files.old}/lib/firstboot/30_is_rootfs_mounted (100%) rename package/base-files/{files => files.old}/lib/firstboot/30_no_fo_pivot (100%) rename package/base-files/{files => files.old}/lib/firstboot/30_reset_copy_rom (100%) rename package/base-files/{files => files.old}/lib/firstboot/40_copy_ramoverlay (100%) rename package/base-files/{files => files.old}/lib/firstboot/40_no_fo_copy_ramoverlay (100%) rename package/base-files/{files => files.old}/lib/firstboot/50_pivot (100%) rename package/base-files/{files => files.old}/lib/firstboot/99_10_no_fo_cleanup (100%) rename package/base-files/{files => files.old}/lib/preinit/05_mount_skip (100%) rename package/base-files/{files => files.old}/lib/preinit/10_check_for_mtd (100%) rename package/base-files/{files => files.old}/lib/preinit/20_check_jffs2_ready (100%) rename package/base-files/{files => files.old}/lib/preinit/40_mount_jffs2 (100%) rename package/base-files/{files => files.old}/lib/preinit/41_merge_overlay_hooks (100%) rename package/base-files/{files => files.old}/lib/preinit/70_pivot_jffs2_root (100%) rename package/base-files/{files => files.old}/lib/preinit/90_mount_no_jffs2 (100%) rename package/base-files/{files => files.old}/lib/preinit/90_restore_config (100%) rename package/base-files/{files => files.old}/lib/preinit/99_10_mount_no_mtd (100%) create mode 100755 package/base-files/files.old/sbin/firstboot rename package/base-files/{files => files.old}/sbin/mount_root (100%) delete mode 100644 package/base-files/files/lib/firstboot/99_10_with_fo_cleanup diff --git a/package/base-files/files.old/etc/init.d/done b/package/base-files/files.old/etc/init.d/done new file mode 100755 index 0000000000..8278669120 --- /dev/null +++ b/package/base-files/files.old/etc/init.d/done @@ -0,0 +1,20 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2006 OpenWrt.org + +START=95 +boot() { + [ -d /tmp/root ] && { + lock /tmp/.switch2jffs + firstboot switch2jffs + lock -u /tmp/.switch2jffs + } + + # process user commands + [ -f /etc/rc.local ] && { + sh /etc/rc.local + } + + # set leds to normal state + . /etc/diag.sh + set_state done +} diff --git a/package/base-files/files/lib/firstboot/05_firstboot_skip b/package/base-files/files.old/lib/firstboot/05_firstboot_skip similarity index 100% rename from package/base-files/files/lib/firstboot/05_firstboot_skip rename to package/base-files/files.old/lib/firstboot/05_firstboot_skip diff --git a/package/base-files/files/lib/firstboot/10_determine_parts b/package/base-files/files.old/lib/firstboot/10_determine_parts similarity index 100% rename from package/base-files/files/lib/firstboot/10_determine_parts rename to package/base-files/files.old/lib/firstboot/10_determine_parts diff --git a/package/base-files/files/lib/firstboot/10_no_fo_clear_overlay b/package/base-files/files.old/lib/firstboot/10_no_fo_clear_overlay similarity index 100% rename from package/base-files/files/lib/firstboot/10_no_fo_clear_overlay rename to package/base-files/files.old/lib/firstboot/10_no_fo_clear_overlay diff --git a/package/base-files/files/lib/firstboot/10_reset_has_mini_fo b/package/base-files/files.old/lib/firstboot/10_reset_has_mini_fo similarity index 100% rename from package/base-files/files/lib/firstboot/10_reset_has_mini_fo rename to package/base-files/files.old/lib/firstboot/10_reset_has_mini_fo diff --git a/package/base-files/files/lib/firstboot/20_has_mini_fo b/package/base-files/files.old/lib/firstboot/20_has_mini_fo similarity index 100% rename from package/base-files/files/lib/firstboot/20_has_mini_fo rename to package/base-files/files.old/lib/firstboot/20_has_mini_fo diff --git a/package/base-files/files/lib/firstboot/20_no_fo_mount_jffs b/package/base-files/files.old/lib/firstboot/20_no_fo_mount_jffs similarity index 100% rename from package/base-files/files/lib/firstboot/20_no_fo_mount_jffs rename to package/base-files/files.old/lib/firstboot/20_no_fo_mount_jffs diff --git a/package/base-files/files/lib/firstboot/20_reset_clear_jffs b/package/base-files/files.old/lib/firstboot/20_reset_clear_jffs similarity index 100% rename from package/base-files/files/lib/firstboot/20_reset_clear_jffs rename to package/base-files/files.old/lib/firstboot/20_reset_clear_jffs diff --git a/package/base-files/files/lib/firstboot/30_is_rootfs_mounted b/package/base-files/files.old/lib/firstboot/30_is_rootfs_mounted similarity index 100% rename from package/base-files/files/lib/firstboot/30_is_rootfs_mounted rename to package/base-files/files.old/lib/firstboot/30_is_rootfs_mounted diff --git a/package/base-files/files/lib/firstboot/30_no_fo_pivot b/package/base-files/files.old/lib/firstboot/30_no_fo_pivot similarity index 100% rename from package/base-files/files/lib/firstboot/30_no_fo_pivot rename to package/base-files/files.old/lib/firstboot/30_no_fo_pivot diff --git a/package/base-files/files/lib/firstboot/30_reset_copy_rom b/package/base-files/files.old/lib/firstboot/30_reset_copy_rom similarity index 100% rename from package/base-files/files/lib/firstboot/30_reset_copy_rom rename to package/base-files/files.old/lib/firstboot/30_reset_copy_rom diff --git a/package/base-files/files/lib/firstboot/40_copy_ramoverlay b/package/base-files/files.old/lib/firstboot/40_copy_ramoverlay similarity index 100% rename from package/base-files/files/lib/firstboot/40_copy_ramoverlay rename to package/base-files/files.old/lib/firstboot/40_copy_ramoverlay diff --git a/package/base-files/files/lib/firstboot/40_no_fo_copy_ramoverlay b/package/base-files/files.old/lib/firstboot/40_no_fo_copy_ramoverlay similarity index 100% rename from package/base-files/files/lib/firstboot/40_no_fo_copy_ramoverlay rename to package/base-files/files.old/lib/firstboot/40_no_fo_copy_ramoverlay diff --git a/package/base-files/files/lib/firstboot/50_pivot b/package/base-files/files.old/lib/firstboot/50_pivot similarity index 100% rename from package/base-files/files/lib/firstboot/50_pivot rename to package/base-files/files.old/lib/firstboot/50_pivot diff --git a/package/base-files/files/lib/firstboot/99_10_no_fo_cleanup b/package/base-files/files.old/lib/firstboot/99_10_no_fo_cleanup similarity index 100% rename from package/base-files/files/lib/firstboot/99_10_no_fo_cleanup rename to package/base-files/files.old/lib/firstboot/99_10_no_fo_cleanup diff --git a/package/base-files/files.old/lib/firstboot/99_10_with_fo_cleanup b/package/base-files/files.old/lib/firstboot/99_10_with_fo_cleanup index 0181b39d49..560169901c 100644 --- a/package/base-files/files.old/lib/firstboot/99_10_with_fo_cleanup +++ b/package/base-files/files.old/lib/firstboot/99_10_with_fo_cleanup @@ -6,7 +6,7 @@ with_fo_cleanup() { # try to get rid of /tmp/root # this will almost always fail - umount /tmp/root 2>&- + umount -l /tmp/root 2>&- grep -q overlay /proc/filesystems && { cd / ( diff --git a/package/base-files/files/lib/preinit/05_mount_skip b/package/base-files/files.old/lib/preinit/05_mount_skip similarity index 100% rename from package/base-files/files/lib/preinit/05_mount_skip rename to package/base-files/files.old/lib/preinit/05_mount_skip diff --git a/package/base-files/files/lib/preinit/10_check_for_mtd b/package/base-files/files.old/lib/preinit/10_check_for_mtd similarity index 100% rename from package/base-files/files/lib/preinit/10_check_for_mtd rename to package/base-files/files.old/lib/preinit/10_check_for_mtd diff --git a/package/base-files/files/lib/preinit/20_check_jffs2_ready b/package/base-files/files.old/lib/preinit/20_check_jffs2_ready similarity index 100% rename from package/base-files/files/lib/preinit/20_check_jffs2_ready rename to package/base-files/files.old/lib/preinit/20_check_jffs2_ready diff --git a/package/base-files/files/lib/preinit/40_mount_jffs2 b/package/base-files/files.old/lib/preinit/40_mount_jffs2 similarity index 100% rename from package/base-files/files/lib/preinit/40_mount_jffs2 rename to package/base-files/files.old/lib/preinit/40_mount_jffs2 diff --git a/package/base-files/files/lib/preinit/41_merge_overlay_hooks b/package/base-files/files.old/lib/preinit/41_merge_overlay_hooks similarity index 100% rename from package/base-files/files/lib/preinit/41_merge_overlay_hooks rename to package/base-files/files.old/lib/preinit/41_merge_overlay_hooks diff --git a/package/base-files/files/lib/preinit/70_pivot_jffs2_root b/package/base-files/files.old/lib/preinit/70_pivot_jffs2_root similarity index 100% rename from package/base-files/files/lib/preinit/70_pivot_jffs2_root rename to package/base-files/files.old/lib/preinit/70_pivot_jffs2_root diff --git a/package/base-files/files/lib/preinit/90_mount_no_jffs2 b/package/base-files/files.old/lib/preinit/90_mount_no_jffs2 similarity index 100% rename from package/base-files/files/lib/preinit/90_mount_no_jffs2 rename to package/base-files/files.old/lib/preinit/90_mount_no_jffs2 diff --git a/package/base-files/files/lib/preinit/90_restore_config b/package/base-files/files.old/lib/preinit/90_restore_config similarity index 100% rename from package/base-files/files/lib/preinit/90_restore_config rename to package/base-files/files.old/lib/preinit/90_restore_config diff --git a/package/base-files/files/lib/preinit/99_10_mount_no_mtd b/package/base-files/files.old/lib/preinit/99_10_mount_no_mtd similarity index 100% rename from package/base-files/files/lib/preinit/99_10_mount_no_mtd rename to package/base-files/files.old/lib/preinit/99_10_mount_no_mtd diff --git a/package/base-files/files.old/sbin/firstboot b/package/base-files/files.old/sbin/firstboot new file mode 100755 index 0000000000..06b64c3133 --- /dev/null +++ b/package/base-files/files.old/sbin/firstboot @@ -0,0 +1,44 @@ +#!/bin/sh + +switch2jffs_hook= +jffs2reset_hook= +no_fo_hook= + +. /lib/functions.sh + +firstboot_skip_next=false + +for fb_source_file in /lib/firstboot/*; do + . $fb_source_file +done + +set_mtd_part +set_rom_part +set_jffs_part + +# invoked as an executable +if [ "${0##*/}" = "firstboot" ]; then + if [ "$1" = "switch2jffs" ]; then + boot_run_hook switch2jffs + else + if [ -t 0 ] && [ "$1" != "-y" ]; then + local input + + echo -n "firstboot will erase all settings and remove any installed packages. Are you sure? [N/y]" + read input + [ "$input" = "y" ] || [ "$input" = "Y" ] || return 0 + fi + + if [ -n "$jffs" ]; then + reset_has_fo=true + echo "firstboot has already been run" + echo "jffs2 partition is mounted, only resetting files" + boot_run_hook jffs2reset + else + mtd erase "$partname" + mount -o noatime "$mtdpart" /overlay -t jffs2 + fopivot /overlay /rom 1 + fi + fi +fi + diff --git a/package/base-files/files/sbin/mount_root b/package/base-files/files.old/sbin/mount_root similarity index 100% rename from package/base-files/files/sbin/mount_root rename to package/base-files/files.old/sbin/mount_root diff --git a/package/base-files/files/etc/init.d/done b/package/base-files/files/etc/init.d/done index 8278669120..8040766dc2 100755 --- a/package/base-files/files/etc/init.d/done +++ b/package/base-files/files/etc/init.d/done @@ -5,7 +5,7 @@ START=95 boot() { [ -d /tmp/root ] && { lock /tmp/.switch2jffs - firstboot switch2jffs + switch2jffs lock -u /tmp/.switch2jffs } diff --git a/package/base-files/files/etc/rc.button/reset b/package/base-files/files/etc/rc.button/reset index 763994d075..229b503a69 100755 --- a/package/base-files/files/etc/rc.button/reset +++ b/package/base-files/files/etc/rc.button/reset @@ -14,5 +14,5 @@ then elif [ "$SEEN" -gt 5 ] then echo "FACTORY RESET" > /dev/console - firstboot && reboot & + jffs2reset -y && reboot & fi diff --git a/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup b/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup deleted file mode 100644 index 560169901c..0000000000 --- a/package/base-files/files/lib/firstboot/99_10_with_fo_cleanup +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -# Copyright (C) 2006-2010 OpenWrt.org -# Copyright (C) 2010 Vertical Communications - -with_fo_cleanup() { - # try to get rid of /tmp/root - # this will almost always fail - umount -l /tmp/root 2>&- - grep -q overlay /proc/filesystems && { - cd / - ( - cd /overlay - find -type l - ) | while read FILE; do - [ -z "$FILE" ] && break - if ls -la "$FILE" 2>&- | grep -q '(overlay-whiteout)'; then - rm -f "$FILE" - fi - done - } - exit 0 -} - -boot_hook_add switch2jffs with_fo_cleanup diff --git a/package/base-files/files/lib/preinit/80_mount_root b/package/base-files/files/lib/preinit/80_mount_root index 9a99ee9109..0292d82d4a 100644 --- a/package/base-files/files/lib/preinit/80_mount_root +++ b/package/base-files/files/lib/preinit/80_mount_root @@ -3,7 +3,16 @@ # Copyright (C) 2010 Vertical Communications do_mount_root() { - boot_run_hook preinit_mount_root + mount_root + boot_run_hook preinit_mount_root + [ -f /sysupgrade.tgz ] && { + echo "- config restore -" + cd / + mv sysupgrade.tgz /tmp + tar xzf /tmp/sysupgrade.tgz + rm -f /tmp/sysupgrade.tgz + sync + } } [ "$INITRAMFS" = "1" ] || boot_hook_add preinit_main do_mount_root diff --git a/package/base-files/files/sbin/firstboot b/package/base-files/files/sbin/firstboot index 06b64c3133..081febb7ba 100755 --- a/package/base-files/files/sbin/firstboot +++ b/package/base-files/files/sbin/firstboot @@ -1,44 +1,3 @@ #!/bin/sh -switch2jffs_hook= -jffs2reset_hook= -no_fo_hook= - -. /lib/functions.sh - -firstboot_skip_next=false - -for fb_source_file in /lib/firstboot/*; do - . $fb_source_file -done - -set_mtd_part -set_rom_part -set_jffs_part - -# invoked as an executable -if [ "${0##*/}" = "firstboot" ]; then - if [ "$1" = "switch2jffs" ]; then - boot_run_hook switch2jffs - else - if [ -t 0 ] && [ "$1" != "-y" ]; then - local input - - echo -n "firstboot will erase all settings and remove any installed packages. Are you sure? [N/y]" - read input - [ "$input" = "y" ] || [ "$input" = "Y" ] || return 0 - fi - - if [ -n "$jffs" ]; then - reset_has_fo=true - echo "firstboot has already been run" - echo "jffs2 partition is mounted, only resetting files" - boot_run_hook jffs2reset - else - mtd erase "$partname" - mount -o noatime "$mtdpart" /overlay -t jffs2 - fopivot /overlay /rom 1 - fi - fi -fi - +/sbin/jffs2reset diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade index 67019307d1..1ad6ea44a1 100755 --- a/package/base-files/files/sbin/sysupgrade +++ b/package/base-files/files/sbin/sysupgrade @@ -179,6 +179,8 @@ fi run_hooks "" $sysupgrade_pre_upgrade +ubus call system upgrade + kill_remaining TERM sleep 3 kill_remaining KILL