wz_init.sh 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #!/bin/sh
  2. ###
  3. ###DO NOT MODIFY UNLESS YOU KNOW WHAT YOU ARE DOING
  4. ###
  5. ###This file is run by switch_root, from the initramfs in the kernel.
  6. LOG_NAME=/opt/wz_mini/log/wz_init
  7. if [[ -e $LOG_NAME.log || -L $LOG_NAME.log ]] ; then
  8. i=0
  9. while [[ -e $LOG_NAME.log.$i || -L $LOG_NAME.log.$i ]] ; do
  10. let i++
  11. done
  12. mv $LOG_NAME.log $LOG_NAME.log.$i
  13. LOG_NAME=$LOG_NAME
  14. fi
  15. touch -- "$LOG_NAME".log
  16. exec 1> $LOG_NAME.log 2>&1
  17. export WZMINI_CFG=/opt/wz_mini/wz_mini.conf
  18. [ -f $WZMINI_CFG ] && source $WZMINI_CFG
  19. echo "welcome to wz_init.sh"
  20. echo "PID $$"
  21. echo '
  22. __ ________ __ __ _____ _ _ _____
  23. \ \ / |___ / | \/ |_ _| \ | |_ _|
  24. \ \ /\ / / / / | \ / | | | | \| | | |
  25. \ \/ \/ / / / | |\/| | | | | . ` | | |
  26. \ /\ / / /__ | | | |_| |_| |\ |_| |_
  27. \/ \/ /_____| |_| |_|_____|_| \_|_____|
  28. ______
  29. |______|
  30. '
  31. set -x
  32. #WCV3 AUDIO GPIO
  33. GPIO=63
  34. V2="false"
  35. #replace stock busybox
  36. mount --bind /opt/wz_mini/bin/busybox /bin/busybox
  37. #test for v2
  38. if [ -b /dev/mtdblock9 ]; then
  39. mount -t jffs2 /dev/mtdblock9 /params
  40. if cat /params/config/.product_config | grep WYZEC1-JZ; then
  41. V2="true"
  42. fi
  43. fi
  44. #Check model, change GPIO is HL_PAN2
  45. if [[ "$V2" == "false" ]]; then
  46. mount -t jffs2 /dev/mtdblock6 /configs
  47. if [[ $(cat /configs/.product_config | grep PRODUCT_MODEL) == "PRODUCT_MODEL=HL_PAN2" ]]; then
  48. umount /configs
  49. GPIO=7
  50. fi
  51. else
  52. echo "not HL_PAN2"
  53. fi
  54. if [[ -e /opt/wz_mini/etc/.first_boot ]]; then
  55. echo "first boot already completed"
  56. else
  57. echo "first boot, initializing"
  58. if [[ "$V2" == "true" ]]; then
  59. insmod /opt/wz_mini/lib/modules/3.10.14/extra/audio.ko
  60. LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/wz_mini/usr/share/audio/init_v2.wav $AUDIO_PROMPT_VOLUME
  61. rmmod audio
  62. else
  63. insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0
  64. /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/init.wav $AUDIO_PROMPT_VOLUME
  65. rmmod audio
  66. fi
  67. fi
  68. touch /opt/wz_mini/etc/.first_boot
  69. mount --bind /opt/wz_mini/etc/inittab /etc/inittab
  70. echo "bind /etc/profile for local/ssh shells"
  71. mount --bind /opt/wz_mini/etc/profile /etc/profile
  72. echo "mounting tmpfs"
  73. mount -t tmpfs /tmp
  74. echo "mount system to replace factorycheck with dummy, to prevent bind unmount"
  75. if [[ ! "$V2" == "true" ]]; then
  76. mount /dev/mtdblock3 /system
  77. mount --bind /opt/wz_mini/bin/factorycheck /system/bin/factorycheck
  78. else
  79. echo "v2 doesn't need factorycheck"
  80. fi
  81. touch /tmp/usrflag
  82. echo "replace stock fstab"
  83. mount --bind /opt/wz_mini/etc/fstab /etc/fstab
  84. echo "mount workplace dir"
  85. mount -t tmpfs /opt/wz_mini/tmp
  86. echo "install busybox applets"
  87. mkdir /opt/wz_mini/tmp/.bin
  88. /opt/wz_mini/bin/busybox --install -s /opt/wz_mini/tmp/.bin
  89. echo "create workspace directory"
  90. mkdir /opt/wz_mini/tmp/.storage
  91. echo "copy stock rcS"
  92. cp /etc/init.d/rcS /opt/wz_mini/tmp/.storage/rcS
  93. echo "add wz_post inject to stock rcS"
  94. sed -i '/^".*/aset -x' /opt/wz_mini/tmp/.storage/rcS
  95. sed -i '/^# Mount configs.*/i/opt/wz_mini/etc/init.d/wz_post.sh\n' /opt/wz_mini/tmp/.storage/rcS
  96. sed -i '/sbin:/s/$/:\/opt\/wz_mini\/bin/' /opt/wz_mini/tmp/.storage/rcS
  97. sed -i '/system\/\lib/s/$/:\/opt\/wz_mini\/lib/' /opt/wz_mini/tmp/.storage/rcS
  98. #Custom PATH hooks
  99. #sed -i '/^# Run init script.*/i#Hook Library PATH here\nexport LD_LIBRARY_PATH=/tmp/test/lib:$LD_LIBRARY_PATH\n' /opt/wz_mini/tmp/.storage/rcS
  100. #sed -i '/^# Run init script.*/i#Hook system PATH here\nexport PATH=/tmp/test/bin:$PATH\n' /opt/wz_mini/tmp/.storage/rcS
  101. if [[ "$V2" == "true" ]]; then
  102. mount -t jffs2 /dev/mtdblock4 /system
  103. fi
  104. echo "Copy factory app_init.sh"
  105. cp /system/init/app_init.sh /opt/wz_mini/tmp/.storage/app_init.sh
  106. echo "Replace factory app_init.sh path"
  107. sed -i '/\/system\/init\/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS
  108. sed -i '/Run init script.*/a /opt/wz_mini/tmp/.storage/app_init.sh\n' /opt/wz_mini/tmp/.storage/rcS
  109. sed -i '/\/system\/init\/app_init.sh/,+2d' /opt/wz_mini/tmp/.storage/rcS
  110. echo "replace stock password"
  111. cp /opt/wz_mini/etc/shadow /opt/wz_mini/tmp/.storage/shadow
  112. if [[ "$DEBUG_PASSWORD" == "true" ]]; then
  113. sed -i 's/:[^:]*/:/' /opt/wz_mini/tmp/.storage/shadow
  114. fi
  115. mount --bind /opt/wz_mini/tmp/.storage/shadow /etc/shadow
  116. chmod 400 /etc/shadow
  117. if [[ -e /opt/wz_mini/swap.gz ]]; then
  118. if [[ "$V2" == "true" ]]; then
  119. insmod /opt/wz_mini/lib/modules/3.10.14/extra/audio.ko
  120. LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/wz_mini/usr/share/audio/swap_v2.wav $AUDIO_PROMPT_VOLUME
  121. rmmod audio
  122. else
  123. insmod /opt/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0
  124. /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/swap.wav $AUDIO_PROMPT_VOLUME
  125. rmmod audio
  126. fi
  127. echo "swap archive present, extracting"
  128. gzip -d /opt/wz_mini/swap.gz
  129. mkswap /opt/wz_mini/swap
  130. sync;echo 3 > /proc/sys/vm/drop_caches
  131. else
  132. echo "swap archive not present, not extracting"
  133. fi
  134. if [[ -d /opt/wz_mini/usr/share/terminfo ]]; then
  135. echo "terminfo already present"
  136. else
  137. echo "terminfo not present, extract"
  138. tar xf /opt/wz_mini/usr/share/terminfo.tar -C /opt/wz_mini/usr/share/
  139. fi
  140. echo "Run dropbear ssh server"
  141. /opt/wz_mini/bin/dropbear -R -s -g
  142. if [[ "$DEBUG_ENABLED" == "true" ]]; then
  143. sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS
  144. sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS
  145. touch /tmp/dbgflag
  146. elif [[ "$WEB_CAM_ENABLE" == "true" ]]; then
  147. sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS
  148. sed -i '/^# Run init/i/opt/wz_mini/etc/init.d/wz_cam.sh &' /opt/wz_mini/tmp/.storage/rcS
  149. touch /tmp/dbgflag
  150. elif [[ -d /opt/Upgrade ]]; then
  151. sed -i '/app_init.sh/,+4d' /opt/wz_mini/tmp/.storage/rcS
  152. sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS
  153. sed -i '/^# Mount configs.*/i/opt/wz_mini/usr/bin/upgrade-run.sh &\n' /opt/wz_mini/tmp/.storage/rcS
  154. touch /tmp/dbgflag
  155. fi
  156. /linuxrc