scripts: flash-init: create symbolic link about firmware path
[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 LINK="/usr/bin/ln"
22
23 NETIF="eth0"
24 WLANIF="wlan0"
25
26 #------------------------------------------------
27 #       clear_bootmode
28 #------------------------------------------------
29 clear_bootmode() {
30         echo "" > ${INFORM_MOUNT_PATH}/${INFORM_FILE}
31         "$SYNC"
32         "$UMOUNT" ${INFORM_MOUNT_PATH}
33 }
34
35 #------------------------------------------------
36 # Copy Module and Firmware file
37 #------------------------------------------------
38 setup_wireless() {
39         MODULES_PART=`"$BLKID" --label modules`
40         if [ "$MODULES_PART" != "" ]; then
41                 echo "Module partition is $MODULES_PART"
42                 $MOUNT -t ext4 ${MODULES_PART} ${TMP_PATH}
43
44                 BRCMFMAC=`$FIND ${TMP_PATH} -name brcmfmac.ko`
45                 BRCMUTIL=`$FIND ${TMP_PATH} -name brcmutil.ko`
46                 echo "Module brcmfmac is $BRCMFMAC"
47                 echo "Module brcmutil is $BRCMUTIL"
48                 $LINK -s /usr/share/firmware /lib/firmware
49                 $COPY $BRCMFMAC /lib/firmware/brcm/
50                 $COPY $BRCMUTIL /lib/firmware/brcm/
51                 $SYNC
52                 $UMOUNT ${TMP_PATH}
53                 $INSMOD /lib/firmware/brcm/brcmutil.ko
54                 sleep 1
55                 $INSMOD /lib/firmware/brcm/brcmfmac.ko
56                 sleep 1
57
58                 WLANIP="192.168.43.1"
59                 $IFCONFIG $WLANIF ${WLANIP} up
60
61                 $DNSMASQ -p 0 -9 -C /lib/firmware/brcm/dnsmasq.conf
62                 SSID=`$HOSTAPD -B /lib/firmware/brcm/hostapd.conf | "$GREP" -oP '(?<=ssid\s\")(.*?)(?=\")'`
63         else
64                 echo "There is no module partition"
65                 WLANIP="N/A"
66                 SSID="N/A"
67         fi
68 }
69
70 #------------------------------------------------
71 #       setup_writed_nic()
72 #------------------------------------------------
73 setup_wired_nic() {
74         IPADDR=`"$IP" -4 addr show $NETIF | "$GREP" -oP '(?<=inet\s)\d+(\.\d+){3}'`
75         if [ "z$IPADDR" == "z" ]; then
76                 IPADDR="192.168.0.100"
77
78                 RETRY_MAX=5
79                 RETRY=0
80                 while [ $RETRY -lt $RETRY_MAX ]; do
81                         RESULT=`"$IFCONFIG" $NETIF $IPADDR up 2>&1`
82                         if [ "z$RESULT" == "z" ]; then
83                                 echo "IP address is not set, using default (192.168.0.100)"
84                                 break
85                         fi
86
87                         RETRY=$((RETRY + 1))
88                         echo "Retry to set IP address #${RETRY}"
89                         sleep 1
90                 done
91
92                 if [ $RETRY -eq $RETRY_MAX ]; then
93                         echo "Failed to set IP address, Reboot..."
94                         "$REBOOT"
95                 fi
96         fi
97 }
98
99 #------------------------------------------------
100 #       print_info()
101 #------------------------------------------------
102 print_info() {
103         echo ""
104         echo "Tizen flash manager is ready."
105         echo ""
106         echo "Network Information:"
107         echo "Wired: ${IPADDR}"
108         echo "Wireless: ${WLANIP} [SSID: ${SSID}]"
109 }
110
111 #------------------------------------------------
112 #       do_flash
113 #------------------------------------------------
114 do_flash() {
115         "$FLASH_MANAGER"
116
117         #Control-flow will never reach here, because fm only terminates by rebooting
118
119         echo "flash-manager is terminated by critical reason."
120         echo "Rebooting..."
121         "$REBOOT"
122 }
123
124 #------------------------------------------------
125 #       Main Routine Start
126 #------------------------------------------------
127 setup_wired_nic
128 setup_wireless
129 clear_bootmode
130 print_info
131 do_flash