scripts: Prevent failure of ip assigning
[platform/core/system/initrd-flash.git] / scripts / flash-init.sh
1 #!/bin/bash
2
3 INFORM_FILE=reboot-param.bin
4 INFORM_MOUNT_PATH=/mnt/inform
5 TMP_PATH=/tmp
6
7 BLKID="/usr/sbin/blkid"
8 FLASH_MANAGER="/usr/bin/flash-manager"
9 MOUNT="/usr/bin/mount"
10 UMOUNT="/usr/bin/umount"
11 REBOOT="/usr/sbin/reboot"
12 IP="/usr/sbin/ip"
13 IFCONFIG="/usr/sbin/ifconfig"
14 GREP="/usr/bin/grep"
15 SYNC="/usr/bin/sync"
16 COPY="/usr/bin/cp"
17 FIND="/usr/bin/find"
18 INSMOD="/usr/sbin/insmod"
19 DNSMASQ="/usr/bin/dnsmasq"
20 HOSTAPD="/usr/bin/hostapd"
21
22 NETIF="eth0"
23 WLANIF="wlan0"
24
25 #------------------------------------------------
26 #       clear_bootmode
27 #------------------------------------------------
28 clear_bootmode() {
29         echo "" > ${INFORM_MOUNT_PATH}/${INFORM_FILE}
30         "$SYNC"
31         "$UMOUNT" ${INFORM_MOUNT_PATH}
32 }
33
34 #------------------------------------------------
35 # Copy Module and Firmware file
36 #------------------------------------------------
37 copy_module() {
38         MODULES_PART=`"$BLKID" --label modules`
39         if [ "$MODULES_PART" != "" ]; then
40                 echo "Module partition is $MODULES_PART"
41                 $MOUNT -t ext4 ${MODULES_PART} ${TMP_PATH}
42
43                 BRCMFMAC=`$FIND ${TMP_PATH} -name brcmfmac.ko`
44                 BRCMUTIL=`$FIND ${TMP_PATH} -name brcmutil.ko`
45                 echo "Module brcmfmac is $BRCMFMAC"
46                 echo "Module brcmutil is $BRCMUTIL"
47                 $COPY $BRCMFMAC /lib/firmware/brcm/
48                 $COPY $BRCMUTIL /lib/firmware/brcm/
49                 $SYNC
50                 $UMOUNT ${TMP_PATH}
51                 $INSMOD /lib/firmware/brcm/brcmutil.ko
52                 sleep 1
53                 $INSMOD /lib/firmware/brcm/brcmfmac.ko
54                 sleep 1
55
56                 echo "wlan0 ipaddr is 192.168.43.1"
57                 $IFCONFIG $WLANIF 192.168.43.1 up
58
59                 $DNSMASQ -p 0 -9 -C /lib/firmware/brcm/dnsmasq.conf
60                 $HOSTAPD -B /lib/firmware/brcm/hostapd.conf
61         else
62                 echo "There is no module partition"
63         fi
64 }
65
66 #------------------------------------------------
67 #       print_ip
68 #------------------------------------------------
69 print_ip() {
70         IPADDR=`"$IP" -4 addr show $NETIF | "$GREP" -oP '(?<=inet\s)\d+(\.\d+){3}'`
71         if [ "z$IPADDR" == "z" ]; then
72                 IPADDR="192.168.0.100"
73
74                 RETRY_MAX=5
75                 RETRY=0
76                 while [ $RETRY -lt $RETRY_MAX ]; do
77                         RESULT=`"$IFCONFIG" $NETIF $IPADDR up 2>&1`
78                         if [ "z$RESULT" == "z" ]; then
79                                 echo "IP address is not set, using default (192.168.0.100)"
80                                 break
81                         fi
82
83                         RETRY=$((RETRY + 1))
84                         echo "Retry to set IP address #${RETRY}"
85                         sleep 1
86                 done
87
88                 if [ $RETRY -eq $RETRY_MAX ]; then
89                         echo "Failed to set IP address, Reboot..."
90                         "$REBOOT"
91                 fi
92         fi
93 }
94
95 #------------------------------------------------
96 #       do_flash
97 #------------------------------------------------
98 do_flash() {
99         "$FLASH_MANAGER"
100
101         #Control-flow will never reach here, because fm only terminates by rebooting
102
103         echo "flash-manager is terminated by critical reason."
104         echo "Rebooting..."
105         "$REBOOT"
106 }
107
108 #------------------------------------------------
109 #       Main Routine Start
110 #------------------------------------------------
111 print_ip
112 clear_bootmode
113 copy_module
114 do_flash