v3_init.sh 5.2 KB

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