mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	Add base files for BPI-R2
This commit is contained in:
		
							parent
							
								
									b2caee7b64
								
							
						
					
					
						commit
						1b9de2ad9e
					
				
					 4 changed files with 256 additions and 0 deletions
				
			
		
							
								
								
									
										36
									
								
								root/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								root/target/linux/mediatek/mt7623/base-files/etc/board.d/02_network
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| . /lib/functions.sh | ||||
| . /lib/functions/uci-defaults.sh | ||||
| . /lib/functions/system.sh | ||||
| 
 | ||||
| mediatek_setup_interfaces() | ||||
| { | ||||
| 	local board="$1" | ||||
| 
 | ||||
| 	case $board in | ||||
| 	bananapi,bpi-r2|\ | ||||
| 	unielec,u7623-02-emmc-512m) | ||||
| 		ucidef_set_interfaces_lan_wan "wan1 wan2 wan3 wan4" "lan" | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
| 
 | ||||
| mediatek_setup_macs() | ||||
| { | ||||
| 	local board="$1" | ||||
| 
 | ||||
| 	case $board in | ||||
| 	unielec,u7623-02-emmc-512m) | ||||
| 		ucidef_set_interface_macaddr "wan" "$(cat /sys/class/net/wan/address)" | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
| 
 | ||||
| board_config_update | ||||
| board=$(board_name) | ||||
| mediatek_setup_interfaces $board | ||||
| mediatek_setup_macs $board | ||||
| board_config_flush | ||||
| 
 | ||||
| exit 0 | ||||
|  | @ -0,0 +1,47 @@ | |||
| #!/bin/sh | ||||
| # Copyright (C) 2018 OpenWrt.org | ||||
| 
 | ||||
| RECOVERY_PART=/dev/mmcblk0p1 | ||||
| 
 | ||||
| preinit_set_mac_address() { | ||||
| 	local mac | ||||
| 
 | ||||
| 	. /lib/functions.sh | ||||
| 	. /lib/functions/system.sh | ||||
| 
 | ||||
| 	case $(board_name) in | ||||
| 	unielec,u7623-02-emmc-512m) | ||||
| 		if [ -b $RECOVERY_PART ]; then | ||||
| 			insmod nls_cp437 | ||||
| 			insmod nls_iso8859-1 | ||||
| 			insmod fat | ||||
| 			insmod vfat | ||||
| 			mkdir -p /tmp/recovery | ||||
| 			mount -o rw,noatime $RECOVERY_PART /tmp/recovery | ||||
| 
 | ||||
| 			if [ -f "/tmp/recovery/mac_addr" ]; | ||||
| 			then | ||||
| 				mac=$(cat /tmp/recovery/mac_addr) | ||||
| 			else | ||||
| 				mac=$(cat /sys/class/net/eth0/address) | ||||
| 				echo "$mac" > /tmp/recovery/mac_addr | ||||
| 			fi | ||||
| 
 | ||||
| 			sync | ||||
| 			umount /tmp/recovery | ||||
| 			rm -rf /tmp/recovery | ||||
| 		fi | ||||
| 
 | ||||
| 		ip link set dev wan address $mac 2> /dev/null | ||||
| 
 | ||||
| 		mac=$(macaddr_add $mac 1) | ||||
| 
 | ||||
| 		ip link set dev lan0 address $mac 2>/dev/null | ||||
| 		ip link set dev lan1 address $mac 2>/dev/null | ||||
| 		ip link set dev lan2 address $mac 2>/dev/null | ||||
| 		ip link set dev lan3 address $mac 2>/dev/null | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
| 
 | ||||
| boot_hook_add preinit_main preinit_set_mac_address | ||||
|  | @ -0,0 +1,19 @@ | |||
| #!/bin/sh | ||||
| # Copyright (C) 2012-2015 OpenWrt.org | ||||
| 
 | ||||
| move_config() { | ||||
| 	local partdev | ||||
| 
 | ||||
| 	. /lib/upgrade/common.sh | ||||
| 
 | ||||
| 	if export_bootdevice && export_partdevice partdev -1; then | ||||
| 		if mount -t vfat -o rw,noatime "/dev/$partdev" /mnt; then | ||||
| 			if [ -f /mnt/sysupgrade.tgz ]; then | ||||
| 				mv -f /mnt/sysupgrade.tgz / | ||||
| 			fi | ||||
| 			umount /mnt | ||||
| 		fi | ||||
| 	fi | ||||
| } | ||||
| 
 | ||||
| boot_hook_add preinit_mount_root move_config | ||||
							
								
								
									
										154
									
								
								root/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										154
									
								
								root/target/linux/mediatek/mt7623/base-files/lib/upgrade/platform.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,154 @@ | |||
| platform_do_upgrade() { | ||||
| 	local board=$(board_name) | ||||
| 
 | ||||
| 	case "$board" in | ||||
| 	unielec,u7623-02-emmc-512m) | ||||
| 		#Keep the persisten random mac address (if it exists) | ||||
| 		mkdir -p /tmp/recovery | ||||
| 		mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery | ||||
| 		[ -f "/tmp/recovery/mac_addr" ] && \ | ||||
| 			mv -f /tmp/recovery/mac_addr /tmp/ | ||||
| 		umount /tmp/recovery | ||||
| 
 | ||||
| 		#1310720 is the offset in bytes from the start of eMMC and to | ||||
| 		#the location of the kernel (2560 512 byte sectors) | ||||
| 		get_image "$1" | dd of=/dev/mmcblk0 bs=1310720 seek=1 conv=fsync | ||||
| 
 | ||||
| 		mount -o rw,noatime /dev/mmcblk0p1 /tmp/recovery | ||||
| 		[ -f "/tmp/mac_addr" ] && mv -f /tmp/mac_addr /tmp/recovery | ||||
| 		sync | ||||
| 		umount /tmp/recovery | ||||
| 		;; | ||||
| 	bananapi,bpi-r2) | ||||
| 		local diskdev partdev diff | ||||
| 
 | ||||
| 		export_bootdevice && export_partdevice diskdev -2 || { | ||||
| 			echo "Unable to determine upgrade device" | ||||
| 			return 1 | ||||
| 		} | ||||
| 
 | ||||
| 		sync | ||||
| 
 | ||||
| 		if [ "$SAVE_PARTITIONS" = "1" ]; then | ||||
| 			get_partitions "/dev/$diskdev" bootdisk | ||||
| 
 | ||||
| 			#extract the boot sector from the image | ||||
| 			get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b | ||||
| 
 | ||||
| 			get_partitions /tmp/image.bs image | ||||
| 
 | ||||
| 			#compare tables | ||||
| 			diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)" | ||||
| 		else | ||||
| 			diff=1 | ||||
| 		fi | ||||
| 
 | ||||
| 		if [ -n "$diff" ]; then | ||||
| 			get_image "$@" | dd of="/dev/$diskdev" bs=4096 conv=fsync | ||||
| 
 | ||||
| 			# Separate removal and addtion is necessary; otherwise, partition 1 | ||||
| 			# will be missing if it overlaps with the old partition 2 | ||||
| 			partx -d - "/dev/$diskdev" | ||||
| 			partx -a - "/dev/$diskdev" | ||||
| 
 | ||||
| 			return 0 | ||||
| 		fi | ||||
| 
 | ||||
| 		#write uboot image | ||||
| 		get_image "$@" | dd of="$diskdev" bs=1024 skip=320 seek=320 count=700 conv=fsync | ||||
| 		#iterate over each partition from the image and write it to the boot disk | ||||
| 		while read part start size; do | ||||
| 			part="$(($part - 2))" | ||||
| 			if export_partdevice partdev $part; then | ||||
| 				echo "Writing image to /dev/$partdev..." | ||||
| 				get_image "$@" | dd of="/dev/$partdev" ibs="512" obs=1M skip="$start" count="$size" conv=fsync | ||||
| 			else | ||||
| 				echo "Unable to find partition $part device, skipped." | ||||
| 			fi | ||||
| 		done < /tmp/partmap.image | ||||
| 
 | ||||
| 		#copy partition uuid | ||||
| 		echo "Writing new UUID to /dev/$diskdev..." | ||||
| 		get_image "$@" | dd of="/dev/$diskdev" bs=1 skip=440 count=4 seek=440 conv=fsync | ||||
| 		;; | ||||
| 	*) | ||||
| 		default_do_upgrade "$1" | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
| 
 | ||||
| PART_NAME=firmware | ||||
| 
 | ||||
| platform_check_image() { | ||||
| 	local board=$(board_name) | ||||
| 	local magic="$(get_magic_long "$1")" | ||||
| 
 | ||||
| 	[ "$#" -gt 1 ] && return 1 | ||||
| 
 | ||||
| 	case "$board" in | ||||
| 	unielec,u7623-02-emmc-512m) | ||||
| 		[ "$magic" != "27051956" ] && { | ||||
| 			echo "Invalid image type." | ||||
| 			return 1 | ||||
| 		} | ||||
| 		return 0 | ||||
| 		;; | ||||
| 	bananapi,bpi-r2) | ||||
| 		local diskdev partdev diff | ||||
| 
 | ||||
| 		export_bootdevice && export_partdevice diskdev -2 || { | ||||
| 			echo "Unable to determine upgrade device" | ||||
| 			return 1 | ||||
| 		} | ||||
| 
 | ||||
| 		get_partitions "/dev/$diskdev" bootdisk | ||||
| 
 | ||||
| 		#extract the boot sector from the image | ||||
| 		get_image "$@" | dd of=/tmp/image.bs count=1 bs=512b 2>/dev/null | ||||
| 
 | ||||
| 		get_partitions /tmp/image.bs image | ||||
| 
 | ||||
| 		#compare tables | ||||
| 		diff="$(grep -F -x -v -f /tmp/partmap.bootdisk /tmp/partmap.image)" | ||||
| 
 | ||||
| 		rm -f /tmp/image.bs /tmp/partmap.bootdisk /tmp/partmap.image | ||||
| 
 | ||||
| 		if [ -n "$diff" ]; then | ||||
| 			echo "Partition layout has changed. Full image will be written." | ||||
| 			ask_bool 0 "Abort" && exit 1 | ||||
| 			return 0 | ||||
| 		fi | ||||
| 		;; | ||||
| 	*) | ||||
| 		echo "Sysupgrade is not supported on your board yet." | ||||
| 		return 1 | ||||
| 		;; | ||||
| 	esac | ||||
| 
 | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| platform_copy_config_emmc() { | ||||
| 	mkdir -p /recovery | ||||
| 	mount -o rw,noatime /dev/mmcblk0p1 /recovery | ||||
| 	cp -af "$UPGRADE_BACKUP" "/recovery/$BACKUP_FILE" | ||||
| 	sync | ||||
| 	umount /recovery | ||||
| } | ||||
| 
 | ||||
| platform_copy_config() { | ||||
| 	case "$(board_name)" in | ||||
| 	unielec,u7623-02-emmc-512m) | ||||
| 		platform_copy_config_emmc | ||||
| 		;; | ||||
| 	bananapi,bpi-r2) | ||||
| 		local partdev | ||||
| 
 | ||||
| 		if export_partdevice partdev -1; then | ||||
| 			mount -t vfat -o rw,noatime "/dev/$partdev" /mnt | ||||
| 			cp -af "$CONF_TAR" /mnt/ | ||||
| 			umount /mnt | ||||
| 		fi | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue