1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
#!/bin/bash

#
# add new bin,need test reboot or poweroff
# see /etc/init.d/launcher.sh
#

export LD_LIBRARY_PATH=/usr/lib32:/usr/lib:/mnt/vendor/lib
#export LC_ALL=zh_CN.utf8
#export LANG=zh_CN.UTF-8
#export LANGUAGE="zh_CN:zh:en_US:en"

DEBUG="/mnt/data/xudebug.ini"
CHRGBIN="/mnt/vendor/bin/charg.dge"
RunBin="/mnt/vendor/ctrl/dmenu_ln"

check_swap_device()
{
# /etc/fstab add auto enable swap
SWAP_ST=`cat /proc/swaps | grep -e "mmcblk0p"`
VALUE=$?
if [ $VALUE -ne 0 ]; then
SWAP_DEVICE="/dev/mmcblk0p7"
	echo "-- need remount swapfs ---"

	mkswap  $SWAP_DEVICE
	swapon  $SWAP_DEVICE
fi
}

check_retroarch_cfg()
{
#HOME is different:~ -> /root or /
#RA_HEAD_DIR=~/.config/retroarch
RA_HEAD_DIR=/.config/retroarch
RA_ORI_CFG=/mnt/vendor/deep/retro/retroarch.cfg

	if [ ! -d $RA_HEAD_DIR ];then
		mkdir -p $RA_HEAD_DIR
	fi
	if [ ! -e "$RA_HEAD_DIR/retroarch.cfg" ];then
		cp $RA_ORI_CFG  $RA_HEAD_DIR/retroarch.cfg
	fi
}

RESIZE_ROOT_CMD()
{
# resize2fs 针对文件系统ext2 ext3 ext4
#
ROOT_DEVICE="/dev/mmcblk0p5"
RESIZE_FLG_FILE="/etc/allen_resize.cfg"

	if [ ! -f "$RESIZE_FLG_FILE" ]
	then
		echo "need resize $ROOT_DEVICE"
		touch $RESIZE_FLG_FILE

		resize2fs $ROOT_DEVICE
	fi
}

FORMAT_DATA_CMD()
{
DATA_DEVICE="/dev/mmcblk0p7"
DATA_DIR="/mnt/data"

	if [ -e "$DATA_DEVICE" ]
	then
		if [ ! -d "$DATA_DIR" ]; then
			echo "create $DATA_DIR"
			/bin/mkdir "$DATA_DIR"
		fi

		FORMAT=`/sbin/blkid $DATA_DEVICE | grep -e  "TYPE"`
		VALUE=$?
		if [ $VALUE -ne 0 ]; then
			echo "Start format $DATA_DEVICE ...."
			mkfs.ext4 $DATA_DEVICE
			sleep 0.5
			mount -t ext4 -o rw,noatime,nodiratime $DATA_DEVICE $DATA_DIR
		else

			mount -t ext4 -o rw,noatime,nodiratime $DATA_DEVICE $DATA_DIR

			INFO=`cat /proc/mounts | grep -e  "$DATA_DEVICE"`
			VALUE=$?
			if [ $VALUE -ne 0 ]; then
				echo "$DATA_DEVICE don't mount!!,need format"
				mkfs.ext4 $DATA_DEVICE
				sleep 0.5
				mount -t ext4 -o rw,noatime,nodiratime $DATA_DEVICE $DATA_DIR
			fi
		fi
	fi
}

FORMAT_ROMS_CMD()
{
#
# os + game in one TF
#
#mount_options_vfat="rw,utf8,uid=1000,gid=1000,dmask=000,fmask=000,noatime,nodiratime"
mount_options_vfat="rw,utf8,dmask=000,fmask=000,noatime,nodiratime"
ROMS_DEVICE="/dev/mmcblk0p1"
if [ -e "/dev/mmcblk0p8" ]; then
	ROMS_DEVICE="/dev/mmcblk0p8"
fi
ROMS_DIR="/mnt/mmc"

	if [ -e "$ROMS_DEVICE" ]
	then
		if [ ! -d "$ROMS_DIR" ]; then
			echo "create $ROMS_DIR"
			/bin/mkdir "$ROMS_DIR"
		fi

		FORMAT=`/sbin/blkid $ROMS_DEVICE | grep -e  "TYPE"`
		VALUE=$?

		if [ $VALUE -ne 0 ]; then
			echo "Start format $ROMS_DEVICE ...."
			mkfs.vfat $ROMS_DEVICE
			sleep 0.5
			#/sbin/parted /dev/mmcblk0 set 7 hidden off

			#mount -t vfat -o rw,utf8,noatime,nodiratime $ROMS_DEVICE $ROMS_DIR
			mount -t vfat -o $mount_options_vfat $ROMS_DEVICE $ROMS_DIR
		else

			#mount -t vfat -o rw,utf8,noatime,nodiratime $ROMS_DEVICE $ROMS_DIR
			mount -t vfat -o $mount_options_vfat $ROMS_DEVICE $ROMS_DIR

			INFO=`cat /proc/mounts | grep -e  "$ROMS_DEVICE"`
			VALUE=$?
			if [ $VALUE -ne 0 ]; then
				echo "$ROMS_DEVICE don't mount!!,need format"
				mkfs.vfat $ROMS_DEVICE
				sleep 0.5
				#mount -t vfat -o rw,utf8,noatime,nodiratime $ROMS_DEVICE $ROMS_DIR
				mount -t vfat -o $mount_options_vfat $ROMS_DEVICE $ROMS_DIR
			fi
		fi
	fi
}

export LD_LIBRARY_PATH=/mnt/vendor/lib:$LD_LIBRARY_PATH

RESIZE_ROOT_CMD
FORMAT_DATA_CMD
FORMAT_ROMS_CMD

if [ -f /mnt/mmc/appfs.img ]; then
#	umount /mnt/vendor
	mount /mnt/mmc/appfs.img /mnt/vendor
fi

check_retroarch_cfg

#check_swap_device

BOOT_MODE=`cat /sys/class/power_supply/axp2202-battery/boot_mode`
if [ $BOOT_MODE == 1 ];then
	rfkill block bluetooth
	systemctl stop bluetooth.service
	systemctl mask bluetooth.service

	rfkill block wifi
	systemctl stop NetworkManager.service
	systemctl mask NetworkManager.service

	if [ -f $CHRGBIN ]; then
		$CHRGBIN

	#run as follow cmd, if charg.dge run err
		sleep 5
		poweroff
	fi
else

	systemctl unmask NetworkManager.service
	systemctl restart NetworkManager.service
	rfkill unblock wifi

	systemctl unmask bluetooth.service
	systemctl restart bluetooth.service
	rfkill unblock bluetooth
fi

#----- sync local wall time to rtc time ------
#new rtc device need set once
RTC_DATE=`cat /sys/class/rtc/rtc0/date`
if [ x"$RTC_DATE" == x ]; then
SYS_DATE=`date "+%Y-%m-%d"`

	echo "must set rtc-device once"
	date -s  $SYS_DATE
	hwclock -w
fi

if [ -f /mnt/mmc/gpio_keys_polled.ko ]; then
	insmod /mnt/mmc/gpio_keys_gpadc.ko
	insmod /mnt/mmc/gpio_keys_polled.ko
fi

#---- third mod need this to mount sdcard ---
/mnt/vendor/ctrl/mmc_new.sh add

if [ -f "/mnt/mod/ctrl/autostart" ]; then
	/mnt/mod/ctrl/autostart
fi

while [ -f $DEBUG ]
do
	sleep 30
done

while [ -f $RunBin ]
do
#	sleep 2
	$RunBin
done