+#!/bin/sh
+
+# Color set for ANSI TERM
+_R='\033[0;31;1m' #Red
+_G='\033[0;32;1m' #Green
+_Y='\033[0;33;1m' #Yellow
+C_='\033[0m' #Color off
+
+
+echo -e "[${_G}rc.sysinit : script starts${C_}]"
+echo -e "[${_G}mount...${C_}]"
+mount -n -t proc none /proc
+mount -n -t tmpfs tmpfs /tmp
+mount -n -t sysfs none /sys
+mkdir -p /dev/shm
+mount -n -t tmpfs none /dev/shm
+
+touch /dev/.in_sysinit >/dev/null 2>&1
+
+[ -d /dev/pts ] || mkdir /dev/pts
+mount -n /dev/pts >/dev/null 2>&1
+
+remount_needed() {
+ local state oldifs
+ state=`LC_ALL=C awk '/ \/ / && ($3 !~ /rootfs/) { print $4 }' /proc/mounts`
+ oldifs=$IFS
+ IFS=","
+ for opt in $state ; do
+ if [ "$opt" = "rw" ]; then
+ IFS=$oldifs
+ return 1
+ fi
+ done
+ IFS=$oldifs
+ return 0
+}
+
+# Remount the root filesystem read-write.
+if remount_needed ; then
+ if which ionice; then
+ ionice -t -c 1 -n 0 mount -n -o remount,rw /
+ else
+ mount -n -o remount,rw /
+ fi
+fi
+
+
+
+# Clear mtab
+(> /etc/mtab) &> /dev/null
+
+# Remove stale backups
+rm -f /etc/mtab~ /etc/mtab~~
+
+
+# Clean up various /tmp bits
+rm -f /tmp/.X*-lock /tmp/.lock.* /tmp/.gdm_socket /tmp/.s.PGSQL.*
+rm -rf /tmp/.X*-unix /tmp/.ICE-unix /tmp/.font-unix /tmp/hsperfdata_* \
+ /tmp/kde-* /tmp/ksocket-* /tmp/mc-* /tmp/mcop-* /tmp/orbit-* \
+ /tmp/scrollkeeper-* /tmp/ssh-*
+
+# Enter mounted filesystems into /etc/mtab
+mount -f /
+mount -f /proc >/dev/null 2>&1
+mount -f /sys >/dev/null 2>&1
+mount -f /dev/pts >/dev/null 2>&1
+mount -f /proc/bus/usb >/dev/null 2>&1
+
+# /var/{lock,run}
+mount -t tmpfs tmpfs /var/lock -o size=4m
+mount -t tmpfs tmpfs /var/run -o size=4m
+mkdir /var/run/console
+mkdir -p /var/lock/subsys
+
+# Mount all other filesystems (except for NFS and /proc, which is already
+# mounted). Contrary to standard usage,
+# filesystems are NOT unmounted in single user mode.
+mount -a -t nonfs,nfs4,smbfs,cifs -O no_netdev
+mount -t debugfs none /sys/kernel/debug/
+
+
+echo -e "[${_G}create base directory in /opt, /var${C_}]"
+#ln -s /opt/var/log /var/log
+mkdir -p /opt/var/lib
+#ln -s /opt/var/lib /var/lib # for apt
+mkdir -p /opt/var/cache
+#ln -s /opt/var/cache /var/cache # for apt
+#mkdir -p /var/run
+
+# start udev
+/sbin/udevd --daemon
+/sbin/udevadm trigger
+
+if [ ! -e /opt/etc/.firstboot ]; then
+ echo -e "[${_Y}rc.firstboot${C_}]"
+ /etc/rc.d/rc.firstboot
+ touch /opt/etc/.firstboot
+
+ if [ -e /etc/rc.d/rc.run_hibernation ]; then
+ touch /opt/etc/.hib_capturing
+ fi
+fi
+
+# check special booting mode.
+if grep -sq "androidboot.mode=charger" /proc/cmdline; then
+ echo -e "${_R}[ Special Booting mode ]${C_}"
+ for i in /etc/rc.d/rc2.d/*; do
+ echo -e "${_G}[${i} start]${C_}"
+ $i start
+ done
+ exit 0
+fi
+
+echo -e "[${_G}set device node perm & security${C_}]"
+# Set device node permissions for security
+test -c /dev/video0 && chown 0:6501 /dev/video0
+test -c /dev/s3c-jpg && chown 0:6501 /dev/s3c-jpg
+test -c /dev/pvrsrvkm && chmod 666 /dev/pvrsrvkm
+test -c /dev/log_main && chown 0:6509 /dev/log_main
+test -c /dev/log_events && chown 0:6509 /dev/log_events
+test -c /dev/log_radio && chown 0:6509 /dev/log_radio
+test -c /dev/snd/ && chown :audio /dev/snd/
+test -c /dev/snd/ && chmod 775 /dev/snd/
+test -c /dev/snd/controlC0 && chown :audio /dev/snd/controlC0
+test -c /dev/snd/pcmC0D0p && chown :audio /dev/snd/pcmC0D0p
+test -c /dev/snd/pcmC0D1p && chown :audio /dev/snd/pcmC0D1p
+test -c /dev/snd/pcmC0D2p && chown :audio /dev/snd/pcmC0D2p
+test -c /dev/snd/pcmC0D3p && chown :audio /dev/snd/pcmC0D3p
+test -c /dev/snd/timer && chown :audio /dev/snd/timer
+test -c /dev/snd/pcmC0D0c && chown 0:6508 /dev/snd/pcmC0D0c
+test -c /dev/snd/pcmC0D1c && chown 0:6508 /dev/snd/pcmC0D1c
+test -c /dev/snd/pcmC0D2c && chown 0:6508 /dev/snd/pcmC0D2c
+test -c /dev/snd/pcmC0D3c && chown 0:6508 /dev/snd/pcmC0D3c
+test -c /dev/s3c-mfc && chown 0:6510 /dev/s3c-mfc
+test -c /dev/random && chmod 666 /dev/random
+test -c /dev/urandom && chmod 666 /dev/urandom
+test -c /dev/fb0 && chown :video /dev/fb0
+test -c /dev/video1 && chown :video /dev/video1
+test -c /dev/video2 && chown :video /dev/video2
+test -c /dev/radio0 && chown :6512 /dev/radio0
+chown :6702 /sys/class/backlight/*/brightness
+chmod 664 /sys/class/backlight/*/brightness
+
+ln -sf /dev/rtc0 /dev/rtc1
+
+# Modem power on
+if [ ! -f /opt/etc/.hib_capturing ]; then
+ echo -e "[${_Y}modem power on${C_}]"
+ echo on > /sys/devices/platform/modemctl/exec_util
+else
+ echo "dont execute util in fastboot..."
+fi
+
+#touch sensor start
+echo 1 > /sys/class/i2c-adapter/i2c-2/2-004a/touchstart
+
+#disable fb console cursor blinking
+echo 0 >/sys/devices/virtual/graphics/fbcon/cursor_blink
+
+echo -e "[${_G}run profile${C_}]"
+# Run profile
+. /etc/profile
+
+if [ -e /opt/etc/.debugmode ]; then
+ echo "debug mode enabled"
+ # enable coredump
+ echo "/var/lib/corewatcher/core_%e_%t" > /proc/sys/kernel/core_pattern
+ echo 1 > /proc/sys/kernel/core_uses_pid
+ ulimit -c unlimited
+else
+ echo "debug mode disabled"
+fi
+
+# Check rw mode
+DEVEL_UPDATE_MODE=`grep devel_update_boot /proc/cmdline`
+if [ -f /opt/etc/.devel_update ] && [ -z "$DEVEL_UPDATE_MODE" ]; then
+ touch /opt/etc/.hib_capturing
+ rm /opt/etc/.devel_update
+fi
+
+ export LAUNCHER_ENGINE=opengl_x11
+
+ # Run all rc3 scripts
+ echo -e "[${_G}run all rc3 scripts${C_}]"
+ echo "normal boot"
+ for i in /etc/rc.d/rc3.d/*; do
+ echo -e "[${_G}${i} start${C_}]"
+ $i start
+ done
+
+ echo -e "[${_G}set cpufreq governor${C_}]"
+ # Set default cpufreq governor
+ echo slp > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
+ if [ $? -ne 0 ];then
+ echo -e "\t[${_Y}slp not exits, set default ondemand${C_}]"
+ echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
+ fi
+
+# symbolic link
+if [ ! -e /opt/apps ]; then
+ echo -e "[${_G}link /opt/apps -> /mnt/ums/apps${C_}]"
+ ln -s /mnt/ums/apps /opt/apps
+fi
+
+
+/etc/rc.d/rc.emul