v3_init.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #!/bin/sh
  2. ###
  3. ###DO NOT MODIFY UNLESS YOU KNOW WHAT YOU ARE DOING
  4. ###
  5. exec 1> /opt/wz_mini/log/v3_init.log 2>&1
  6. echo "welcome to v3_init.sh"
  7. echo "PID $$"
  8. echo '
  9. __ ________ __ __ _____ _ _ _____
  10. \ \ / |___ / | \/ |_ _| \ | |_ _|
  11. \ \ /\ / / / / | \ / | | | | \| | | |
  12. \ \/ \/ / / / | |\/| | | | | . ` | | |
  13. \ /\ / / /__ | | | |_| |_| |\ |_| |_
  14. \/ \/ /_____| |_| |_|_____|_| \_|_____|
  15. ______
  16. |______|
  17. '
  18. sleep 2
  19. set -x
  20. #lets test this out and see how it goes, patched udhcpc for iCamera
  21. mount --bind /opt/wz_mini/bin/busybox /bin/busybox
  22. #WCV3 GPIO
  23. GPIO=63
  24. #Check model, change GPIO is HL_PAN2
  25. mount -t jffs2 /dev/mtdblock6 /configs
  26. if [[ $(cat /configs/.product_config | grep PRODUCT_MODEL) == "PRODUCT_MODEL=HL_PAN2" ]]; then
  27. umount /configs
  28. GPIO=7
  29. fi
  30. if [[ -e /opt/wz_mini/etc/.first_boot ]]; then
  31. echo "first boot already completed"
  32. else
  33. echo "first boot, initializing"
  34. 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
  35. /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/init.wav 50
  36. rmmod audio
  37. touch /opt/wz_mini/etc/.first_boot
  38. fi
  39. mount --bind /opt/wz_mini/etc/inittab /etc/inittab
  40. echo "bind /etc/profile for local/ssh shells"
  41. mount --bind /opt/wz_mini/etc/profile /etc/profile
  42. echo "mounting tmpfs"
  43. mount -t tmpfs /tmp
  44. echo "mount system to replace factorycheck with dummy, to prevent bind unmount"
  45. mount /dev/mtdblock3 /system
  46. mount --bind /opt/wz_mini/bin/factorycheck /system/bin/factorycheck
  47. touch /tmp/usrflag
  48. echo "replace stock fstab"
  49. mount --bind /opt/wz_mini/etc/fstab /etc/fstab
  50. echo "mount workplace dir"
  51. mount -t tmpfs /opt/wz_mini/tmp
  52. echo "install busybox applets"
  53. mkdir /opt/wz_mini/tmp/.bin
  54. /opt/wz_mini/bin/busybox --install -s /opt/wz_mini/tmp/.bin
  55. echo "create workspace directory"
  56. mkdir /opt/wz_mini/tmp/.storage
  57. echo "copy stock rcS"
  58. cp /etc/init.d/rcS /opt/wz_mini/tmp/.storage/rcS
  59. echo "add v3_post inject to stock rcS"
  60. sed -i '/^".*/aset -x' /opt/wz_mini/tmp/.storage/rcS
  61. sed -i '/^# Mount configs.*/i/opt/wz_mini/etc/init.d/v3_post.sh\n' /opt/wz_mini/tmp/.storage/rcS
  62. sed -i '/sbin:/s/$/:\/opt\/wz_mini\/bin/' /opt/wz_mini/tmp/.storage/rcS
  63. sed -i '/system\/\lib/s/$/:\/opt\/wz_mini\/lib/' /opt/wz_mini/tmp/.storage/rcS
  64. #Custom PATH hooks
  65. #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
  66. #sed -i '/^# Run init script.*/i#Hook system PATH here\nexport PATH=/tmp/test/bin:$PATH\n' /opt/wz_mini/tmp/.storage/rcS
  67. echo "replace stock password"
  68. cp /opt/wz_mini/etc/shadow /opt/wz_mini/tmp/.storage/shadow
  69. mount --bind /opt/wz_mini/tmp/.storage/shadow /etc/shadow
  70. chmod 400 /etc/shadow
  71. echo "mount kernel modules"
  72. mount --bind /opt/wz_mini/lib/modules /lib/modules
  73. if [[ -e /opt/wz_mini/swap.gz ]]; then
  74. 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
  75. /opt/wz_mini/bin/audioplay_t31 /opt/wz_mini/usr/share/audio/swap.wav 50
  76. rmmod audio
  77. echo "swap archive present, extracting"
  78. gzip -d /opt/wz_mini/swap.gz
  79. mkswap /opt/wz_mini/swap
  80. sync;echo 3 > /proc/sys/vm/drop_caches
  81. else
  82. echo "swap archive not present, not extracting"
  83. fi
  84. if [[ -d /opt/wz_mini/usr/share/terminfo ]]; then
  85. echo "terminfo already present"
  86. else
  87. echo "terminfo not present, extract"
  88. tar xf /opt/wz_mini/usr/share/terminfo.tar -C /opt/wz_mini/usr/share/
  89. fi
  90. echo "Run dropbear ssh server"
  91. /opt/wz_mini/bin/dropbear -R -s -g
  92. if [[ $(cat /opt/wz_mini/run_mmc.sh | grep "DEBUG_ENABLED\=") == "DEBUG_ENABLED\=\"true\"" ]]; then
  93. sed -i '/app_init.sh/,+3d' /opt/wz_mini/tmp/.storage/rcS
  94. sed -i '/^# Run init/i/bin/sh /etc/profile' /opt/wz_mini/tmp/.storage/rcS
  95. touch /tmp/dbgflag
  96. else
  97. if [[ $(cat /opt/wz_mini/run_mmc.sh | grep "ENABLE_WEB_CAM\=") == "ENABLE_WEB_CAM\=\"true\"" ]]; then
  98. sed -i '/app_init.sh/,+3d' /opt/wz_mini/tmp/.storage/rcS
  99. sed -i '/^# Run init/i/opt/wz_mini/etc/init.d/wz_cam.sh' /opt/wz_mini/tmp/.storage/rcS
  100. touch /tmp/dbgflag
  101. fi
  102. fi
  103. if ! [[ -e /tmp/dbgflag ]]; then
  104. /opt/wz_mini/run_mmc.sh &
  105. else
  106. echo "debug enabled, ignore run_mmc.sh"
  107. fi
  108. /linuxrc