mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| on_exit() {
 | |
| 	mountpoint -q /proc && umount /proc
 | |
| 	exec /sbin/init "$*"
 | |
| }
 | |
| 
 | |
| trap on_exit EXIT
 | |
| 
 | |
| mount -t proc proc /proc || exit 1
 | |
| grep -q overlay /proc/filesystems || exit 1
 | |
| 
 | |
| if ! grep -q 'root=.*nfs\|mmcblk\|ram' /proc/cmdline; then
 | |
| 	if grep -q ubifs /proc/cmdline; then
 | |
| 		mount -t ubifs ubi0:rootfs_data /overlay
 | |
| 	else
 | |
| 		mtdblkdev=$(awk -F ':' '/rootfs_data/ {print $1}' /proc/mtd | sed 's/mtd/mtdblock/')
 | |
| 		mtdchrdev=$(grep 'rootfs_data' /proc/mtd | cut -d: -f1)
 | |
| 		if ! mount -t jffs2 /dev/$mtdblkdev /overlay || dmesg | grep -q "jffs2.*: Magic bitmask.*not found"; then
 | |
| 			mountpoint -q /overlay && umount /overlay
 | |
| 			echo "Formatting flash..."
 | |
| 			grep -q 'nand' /proc/cmdline || jffs2="-j"
 | |
| 			flash_eraseall $jffs2 /dev/$mtdchrdev
 | |
| 			if ! mount -t jffs2 /dev/$mtdblkdev /overlay && ! mount -t tmpfs tmpfs /overlay; then
 | |
| 				echo "Cannot mount overlay."
 | |
| 				exit 1
 | |
| 			fi
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 	if grep -q overlayfs /proc/filesystems; then
 | |
| 		if ! mount -t overlayfs overlayfs -o lowerdir=/,upperdir=/overlay,ro /mnt; then
 | |
| 			umount /overlay
 | |
| 			exit 1
 | |
| 		fi
 | |
| 	else
 | |
| 		overlay_rootdir=/overlay/root
 | |
| 		overlay_workdir=/overlay/work
 | |
| 		mkdir -p $overlay_rootdir $overlay_workdir
 | |
| 		if ! mount -t overlay overlay -o lowerdir=/,upperdir=$overlay_rootdir,workdir=$overlay_workdir /mnt; then
 | |
| 			umount /overlay
 | |
| 			exit 1
 | |
| 		fi
 | |
| 	fi
 | |
| 
 | |
| 	pivot_root /mnt /mnt/rom
 | |
| 	mount -o noatime,move /rom/proc /proc
 | |
| 	mount -o noatime,move /rom/dev /dev
 | |
| 	mount -o noatime,move /rom/overlay /overlay
 | |
| fi
 |