-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathmain
executable file
·134 lines (115 loc) · 4.1 KB
/
main
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
#!/bin/busybox sh
BOOTLOGO="boot-logo"
export HOME=/mnt
export SDL_NOMOUSE=1
START="${HOME}/autoexec.sh"
BOOTDIR=/boot # we expect /dev/mmcblk0p1 has been mounted here read only, from inittab
LOGS=/dev/null
# check if it's first boot and turn on messages if yes
if ((test -r "${BOOTDIR}/firstboot") || (test -r "${HOME}/firstboot.completed")); then
DEBUG_MSG="yes"
LOGS=$(mktemp)
fi
export LOGS # so that subshells can use this as well
if test "x${DEBUG_MSG}" == "xyes"; then
echo -e "\e[0m" # normal foreground color
export DEBUG_MSG # set it globally for further programs
else
echo -e "\e[30m" # black foreground color
fi
# load kernel modules
# load usb gadget
modprobe g_ffs idVendor=0x1fc9 idProduct=0x0146 iSerialNumber="01234567" iProduct="Miyoo CFW 2.0" iManufacturer="Miyoo Handheld" functions=mtp >> "${LOGS}" 2>&1
mkdir /dev/ffs-mtp && mount -t functionfs mtp /dev/ffs-mtp >> "${LOGS}" 2>&1
umtprd >> "${LOGS}" 2>&1 &
# Load the expected one screen driver from here with modprobe
## automatically from rootfs/lib/modules/VERSION
# The uEnv.txt is autogenerated by u-boot from HW which outputs
## environmental variables needed for ID of screen type
video=`cat /sys/kernel/miyoo_video/miyoo_video`
BACKLIGHT=$(cat ${HOME}/.backlight.conf)
# TVout scripting backend
if test -r "${HOME}/tvout"; then
echo 0 > /sys/class/backlight/backlight/brightness
echo 0 > /sys/class/vtconsole/vtcon1/bind
if test $BACKLIGHT -ne 0; then
cp ${HOME}/.backlight.conf ${HOME}/.backlight.bak
fi
echo 0 > ${HOME}/.backlight.conf
modprobe -r $video
#TVMODE options.cfg setting
export tvmode=$(grep -o TVMODE=[0-1] "${HOME}/options.cfg" | tr '[:upper:]' '[:lower:]')
modprobe miyoo-tvout $tvmode
echo 1 > /sys/class/vtconsole/vtcon1/bind
modprobe -r $video
else
if ((test -r "${HOME}/.backlight.bak")); then
mv ${HOME}/.backlight.bak ${HOME}/.backlight.conf
fi
# MODULES_CUSTOM scripting
if (!(test -r "${BOOTDIR}/modules.custom.sh") || !(grep -q MODULES_CUSTOM\=\1 "${HOME}/options.cfg")); then
# Load video module read from uEnv.txt & defined by variant in console.cfg
#FLIP & INVERT options.cfg setting
export flip=$(grep -o FLIP=[0-1] "${HOME}/options.cfg" | tr '[:upper:]' '[:lower:]')
export invert=$(grep -o INVERT=[0-1] "${HOME}/options.cfg" | tr '[:upper:]' '[:lower:]')
modprobe $video $flip $invert
else
(cd "${BOOTDIR}" && sh modules.custom.sh ) >> "${LOGS}" 2>&1
fi
fi
# check if it's first boot and defer to the firstboot script if yes
if test -r "${BOOTDIR}/firstboot"; then
exec sh "${BOOTDIR}/firstboot"
elif test -r "${HOME}/firstboot.completed"; then
rm "${HOME}/firstboot.completed"
fi
if !(grep -q FAT_CHECK\=\0 "${HOME}/options.cfg"); then
##Check if FAT16 is flagged as "dirty", and if so unmount, repair, remount
if dmesg | grep "mmcblk0p1" > /dev/null; then
echo -e "\e[31mDirty sectors detected.\e[0m"
echo -e "\e[32mChecking&Repairing FAT16 BOOT partition...\e[0m"
umount /dev/mmcblk0p1
fsck.vfat -y /dev/mmcblk0p1 > /dev/null;
mount /dev/mmcblk0p1 "${BOOTDIR}" -t vfat -o ro,exec,sync,utf8
echo -e "\e[32mCheck complete.\e[0m"
fi
fi
clear
# try to read what handheld we're on
if test -r "${BOOTDIR}/console.cfg"; then
source "${BOOTDIR}/console.cfg"
else
export CONSOLE_VARIANT="unknown"
fi
echo "Boot!" >> "${LOGS}"
echo "Handheld type is ${CONSOLE_VARIANT}" >> "${LOGS}"
# run any custom commands ('daemon' expected to be run from there)
if test -r "${BOOTDIR}/normalboot.custom.sh" ; then
(cd "${BOOTDIR}" && sh normalboot.custom.sh) # don't redirect, want output on screen
else
# at least run 'daemon'
daemon >> "${LOGS}" 2>&1
fi
# run boot logo animation
if (!(grep -q BOOT_LOGO\=\0 "${HOME}/options.cfg")); then
${BOOTLOGO} >> "${LOGS}" 2>&1
fi
# can't unmount boot because 'daemon' runs from it - but it's mounted read-only
# so it's fine
## umount /dev/mmcblk0p1
# Writes dmesg after firstboot procedure or if DEBUG_MSG=yes
if test "x${DEBUG_MSG}" == "xyes"; then
sleep 1
dmesg > ${HOME}/dmesg.txt
yes | mv ${LOGS} ${HOME}/log.txt
fi
while [ 1 ]
do
if test -f "${START}"; then
source "${START}"
else
cd "${HOME}"/gmenu2x;
./gmenu2x >> /dev/null 2>&1;
fi
clear
done