mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			Merge f1c436e881 into 472e2c6050
				
					
				
			
						commit
						2e2d54bacf
					
				|  | @ -0,0 +1,79 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # OpenIPC reboot wrapper script | ||||||
|  | # Ensures proper overlay sync before reboot | ||||||
|  | # | ||||||
|  | 
 | ||||||
|  | # Check for help/info flags first - pass through immediately | ||||||
|  | for arg in "$@"; do | ||||||
|  |     case "$arg" in | ||||||
|  |         -h|--help|--version) | ||||||
|  |             # Find the real busybox reboot command | ||||||
|  |             if [ -x /bin/busybox ]; then | ||||||
|  |                 exec /bin/busybox reboot "$@" | ||||||
|  |             elif [ -x /usr/bin/busybox ]; then | ||||||
|  |                 exec /usr/bin/busybox reboot "$@" | ||||||
|  |             else | ||||||
|  |                 # Fallback to system reboot | ||||||
|  |                 exec /sbin/reboot "$@" | ||||||
|  |             fi | ||||||
|  |             ;; | ||||||
|  |     esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Parse arguments to check for force flag and no-sync flag | ||||||
|  | force_reboot=0 | ||||||
|  | no_sync=0 | ||||||
|  | delay=0 | ||||||
|  | for arg in "$@"; do | ||||||
|  |     case "$arg" in | ||||||
|  |         -f|--force) | ||||||
|  |             force_reboot=1 | ||||||
|  |             ;; | ||||||
|  |         -n) | ||||||
|  |             no_sync=1 | ||||||
|  |             ;; | ||||||
|  |         -d) | ||||||
|  |             # Get next argument as delay value | ||||||
|  |             shift | ||||||
|  |             delay="$1" | ||||||
|  |             ;; | ||||||
|  |         -d*) | ||||||
|  |             # Extract delay value from -d<num> format | ||||||
|  |             delay="${arg#-d}" | ||||||
|  |             ;; | ||||||
|  |     esac | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # If not a forced reboot and sync is not disabled, ensure proper sync | ||||||
|  | if [ "$force_reboot" -eq 0 ] && [ "$no_sync" -eq 0 ]; then | ||||||
|  |     echo "Syncing overlay filesystem..." | ||||||
|  |     sync | ||||||
|  |      | ||||||
|  |     # Give a brief moment for sync to complete | ||||||
|  |     sleep 1 | ||||||
|  |      | ||||||
|  |     # Attempt graceful shutdown by stopping services | ||||||
|  |     if [ -f /etc/init.d/rcK ]; then | ||||||
|  |         echo "Stopping services gracefully..." | ||||||
|  |         /etc/init.d/rcK >/dev/null 2>&1 | ||||||
|  |     fi | ||||||
|  |      | ||||||
|  |     # Final sync | ||||||
|  |     sync | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Handle delay if specified | ||||||
|  | if [ "$delay" -gt 0 ]; then | ||||||
|  |     sleep "$delay" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | # Call the actual reboot command - find busybox location | ||||||
|  | if [ -x /bin/busybox ]; then | ||||||
|  |     exec /bin/busybox reboot "$@" | ||||||
|  | elif [ -x /usr/bin/busybox ]; then | ||||||
|  |     exec /usr/bin/busybox reboot "$@" | ||||||
|  | else | ||||||
|  |     # Fallback to system reboot | ||||||
|  |     exec /sbin/reboot "$@" | ||||||
|  | fi | ||||||
		Loading…
	
		Reference in New Issue