Advertisement
Guest User

rcSlate

a guest
Jun 7th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.76 KB | None | 0 0
  1. description "late rcS actions"
  2.  
  3. start on started hal
  4. stop on stopping hal
  5.  
  6. console none
  7.  
  8. script
  9. #mount /home; fix filesystem and retry mounting if 1st attempt fails
  10. mount_home ()
  11. {
  12. if ! grep -q -E '^\s*[^\s]+\s+/home\s' /etc/fstab; then
  13. # /home is not in fstab so is part of rootfs and already mounted
  14. return 0
  15. fi
  16. if [ "$home_fsck" != "0" ]; then
  17. echo "`date +'%Y-%m-%d %H:%M:%S'` fsck -a /home" >> /var/log/fsck_home.log
  18. fsck -a /home >> /var/log/fsck_home.log 2>&1 || true
  19. echo "" >> /var/log/fsck_home.log
  20. fi
  21. /bin/mount /home && grep -q '^[^\ ]* /home [^\ ]* [^\ ]*rw.*' /proc/mounts
  22. if [ $? -eq 0 ]
  23. then
  24. return 0
  25. else
  26. grep -q '^[^\ ]* /home [^\ ]* [^\ ]*ro.*' /proc/mounts
  27. if [ $? -eq 0 ]
  28. then
  29. umount /home
  30. fi
  31. echo "`date +'%Y-%m-%d %H:%M:%S'` fsck -y /home" >> /var/log/fsck_home.log
  32. fsck -y /home >> /var/log/fsck_home.log 2>&1 || true
  33. echo "" >> /var/log/fsck_home.log
  34. sync
  35. /bin/mount /home && grep -q '^[^\ ]* /home [^\ ]* [^\ ]*rw.*' /proc/mounts
  36. return $?
  37. fi
  38. }
  39.  
  40. ACT_DEAD=0
  41. HOME_MOUNTED=0
  42.  
  43. #check act_dead
  44. if [ -e /tmp/ACT_DEAD ]; then
  45. ACT_DEAD=1
  46. fi
  47.  
  48. # Load fstab and mount options
  49. . /etc/default/mount-opts || true
  50.  
  51. if [ ! -e /etc/fstab ] || [ "$genfstab" != "0" ]; then
  52.  
  53. fstab=/etc/fstab
  54. tmp_fstab=/tmp/fstab
  55.  
  56. # Find internal eMMC device, fallback to mmcblk0
  57. for emmc in mmcblk1 mmcblk0; do
  58. if grep -q internal /sys/block/$emmc/device/../slot_name; then
  59. break
  60. fi
  61. done
  62.  
  63. # Check if / is on ubi
  64. if grep -q '^ubi0:rootfs / ubifs' /proc/mounts; then
  65. root_is_ubi=1
  66. else
  67. root_is_ubi=0
  68. fi
  69.  
  70. # MyDocs will be first eMMC partition, /home will be second
  71. mydocs=/dev/${emmc}p1
  72. home=/dev/${emmc}p2
  73.  
  74. mydocs_type=`blkid -c /dev/null -o value -s TYPE $mydocs`
  75. home_type=`blkid -c /dev/null -o value -s TYPE $home`
  76.  
  77. [ -z "$mydocs_type" ] && mydocs_type=vfat;
  78. [ -z "$home_type" ] && home_type=ext3;
  79.  
  80. eval mydocs_opts=$common_opts,$user_opts,\$${mydocs_type}_opts
  81. eval home_opts=$common_opts,$root_opts,\$${home_type}_opts
  82.  
  83. # Remove duplicate commas from variables
  84. mydocs_opts=`echo $mydocs_opts | sed ':l;s/,,/,/g;tl;s/^,//;s/,$//'`
  85. home_opts=`echo $home_opts | sed ':l;s/,,/,/g;tl;s/^,//;s/,$//'`
  86.  
  87. [ -z "$mydocs_opts" ] && mydocs_opts=defaults
  88. [ -z "$home_opts" ] && home_opts=defaults
  89.  
  90. swaps=`blkid -c /dev/null -o device -t TYPE=swap`
  91.  
  92. if [ "$swap_sd" = "0" ]; then
  93. swaps=`echo $swaps | tr ' ' '\n' | grep ${emmc}`
  94. fi
  95.  
  96. # Generate fstab
  97. rm -f $tmp_fstab
  98. echo "# This file was generated by script /etc/event.d/rcS-late" >> $tmp_fstab
  99. echo "# !!! Do not edit this file. It will be overwritten in next device startup !!!" >> $tmp_fstab
  100. echo "# If you want static /etc/fstab add genfstab=\"0\" to file /etc/default/mount-opts-overwrite" >> $tmp_fstab
  101.  
  102. # /
  103. grep '^[^\ ]* / ' /proc/mounts >> $tmp_fstab
  104.  
  105. # /home
  106. if [ $root_is_ubi -eq 1 ]; then
  107. echo "$home /home $home_type $home_opts 0 2" >> $tmp_fstab
  108. fi
  109.  
  110. # /opt
  111. echo "/home/opt /opt none bind 0 0" >> $tmp_fstab
  112.  
  113. # /home/user/MyDocs
  114. echo "$mydocs /home/user/MyDocs $mydocs_type $mydocs_opts 0 2" >> $tmp_fstab
  115.  
  116. # swap
  117. for dev in $swaps; do
  118. echo "$dev none swap sw 0 0" >> $tmp_fstab
  119. done
  120.  
  121. cmp -s $tmp_fstab $fstab || cp $tmp_fstab $fstab
  122. rm -f $tmp_fstab
  123.  
  124. fi
  125.  
  126. if [ $ACT_DEAD -eq 0 ]; then
  127. /sbin/swapon -a || echo "Failed to enable paging partition."
  128. # Setup lowmem module
  129. echo 32768 > /proc/sys/vm/lowmem_deny_watermark_pages || true
  130. echo 98304 > /proc/sys/vm/lowmem_notify_high_pages || true
  131. echo 131072 > /proc/sys/vm/lowmem_notify_low_pages || true
  132. echo 1024 > /proc/sys/vm/lowmem_nr_decay_pages || true
  133. # Exclude some UIDs from memory allocation denial.
  134. # 30000 is messagebus, 30001 could be used by Matchbox
  135. echo "30000 30001 30002 30003" > /proc/sys/vm/lowmem_allowed_uids || true
  136. fi
  137.  
  138. mount_home && HOME_MOUNTED=1
  139.  
  140. # If failed to mount /home and system has been already optified - reboot
  141. if [ $HOME_MOUNTED -eq 0 ]
  142. then
  143. if [ -e /var/lib/maemo-optify-firstboot-do-not-clean-home-opt ]; then
  144. telinit 6
  145. fi
  146. else
  147. [ ! -d /home/opt ] && mkdir /home/opt
  148. [ ! -d /opt ] && mkdir /opt
  149. fi
  150.  
  151. if [ $ACT_DEAD -eq 0 ]
  152. then
  153. if [ $HOME_MOUNTED -eq 1 ]
  154. then
  155. if [ -x /usr/sbin/maemo-optify-firstboot.sh ]; then
  156. . /usr/sbin/maemo-optify-firstboot.sh
  157. fi
  158. fi
  159. fi
  160.  
  161. /bin/mount /opt || echo "Failed to mount(bind) /opt."
  162.  
  163. if [ $ACT_DEAD -eq 0 ]
  164. then
  165. if [ $HOME_MOUNTED -eq 1 ]
  166. then
  167. if [ -x /usr/sbin/maemo-optify-auto-opt.sh ]; then
  168. . /usr/sbin/maemo-optify-auto-opt.sh
  169. fi
  170. fi
  171.  
  172. if [ -d /home/preinstalled -a -d /home/user ]
  173. then
  174. rm -rf /home/user
  175. fi
  176.  
  177. if [ ! -d /home/user ]
  178. then
  179. if [ -d /home/preinstalled ]
  180. then
  181. mv /home/preinstalled /home/user
  182. else
  183. mkdir /home/user
  184. fi
  185. cd /etc/skel
  186. cp -a . /home/user
  187. chown -R user:users /home/user
  188. sync
  189. fi
  190. fi
  191.  
  192. if [ ! -d /home/user ]
  193. then
  194. mkdir /home/user
  195. chown user:users /home/user
  196. sync
  197. fi
  198.  
  199. # We can safely continue booting now.
  200. initctl emit MOUNTS_OK
  201.  
  202. # Adjust flushing of memory card buffers
  203. echo 40 > /proc/sys/vm/dirty_ratio
  204. echo 10 > /proc/sys/vm/dirty_background_ratio
  205.  
  206. # Initialize PRNG pool with the HW RNG. Slow, but that's ok.
  207. URANDOM_POOLSZ=512
  208. if [ -e /dev/hwrng ]; then
  209. RANDOM=/dev/hwrng
  210. elif [ -e /dev/hw_random ]; then
  211. RANDOM=/dev/hw_random
  212. fi
  213. if [ -e "$RANDOM" ]; then
  214. echo "Seeding entropy pool"
  215. dd if=$RANDOM of=/dev/urandom bs=$URANDOM_POOLSZ count=1
  216. fi
  217.  
  218. # Data for the panic info driver
  219. mount -t debugfs nodev /sys/kernel/debug
  220. if modprobe panic_info_buff; then
  221. OSSO_VERSION="$(osso-product-info 2>/dev/null || true)"
  222. CSSU_VERSION="CSSU_VERSION='$(dpkg-query -W -f \${Version} mp-fremantle-community-pr 2>/dev/null || echo '<unknown>')'"
  223. KERNEL_VERSION="KERNEL_VERSION='$(uname -a 2>/dev/null || echo '<unknown>')'"
  224. sleep 1
  225. printf "%s\n%s\n%s" "$OSSO_VERSION" "$CSSU_VERSION" "$KERNEL_VERSION" > /sys/kernel/debug/panic_info_buff || true
  226. fi
  227. end script
  228.  
  229. normal exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement