mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/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 |