(reset history)
This commit is contained in:
		
							
								
								
									
										319
									
								
								rcS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										319
									
								
								rcS
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,319 @@
 | 
			
		||||
#/bin/sh
 | 
			
		||||
# Copyright(C) 2006 Nokia Corporation.
 | 
			
		||||
 | 
			
		||||
#  This program is free software; you can redistribute it and/or modify
 | 
			
		||||
#  it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
#  published by the Free Software Foundation.
 | 
			
		||||
 | 
			
		||||
#  This program is distributed in the hope that it will be useful, but
 | 
			
		||||
#  WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
			
		||||
#  General Public License for more details.
 | 
			
		||||
 | 
			
		||||
#  You should have received a copy of the GNU General Public License
 | 
			
		||||
#  along with this program; if not, write to the Free Software
 | 
			
		||||
#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
 | 
			
		||||
#  USA
 | 
			
		||||
 | 
			
		||||
#Modified by NIN101(http://nin101.uni.cx).
 | 
			
		||||
#Provides: Shell if demanded by user; maps an LUKS encrypted partition
 | 
			
		||||
#Requires busybox-power or at least the applets "loadkmap" & "watchdog"
 | 
			
		||||
 | 
			
		||||
#WARNING: Charging WON'T work when device is turned off before the
 | 
			
		||||
#user pluggs in the charger. Or: It will, but you have to enter
 | 
			
		||||
#your LUKS password at a state where the screen is very very dark :-).
 | 
			
		||||
#This is because home gets mounted before BME starts. 
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
umask 022
 | 
			
		||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
 | 
			
		||||
MODULES="twl4030-vibra
 | 
			
		||||
dspbridge
 | 
			
		||||
iommu2
 | 
			
		||||
omap3-iommu
 | 
			
		||||
omap34xxcam-mod
 | 
			
		||||
omap_previewer_hack
 | 
			
		||||
board-rx51-camera
 | 
			
		||||
et8ek8
 | 
			
		||||
ad5820
 | 
			
		||||
adp1653
 | 
			
		||||
vs6555
 | 
			
		||||
uinput"
 | 
			
		||||
 | 
			
		||||
if [ -L /var/run ]
 | 
			
		||||
then
 | 
			
		||||
	rm -f /var/run
 | 
			
		||||
	mkdir /var/run
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
mount -n -t proc proc /proc
 | 
			
		||||
mount -n -t sysfs sysfs /sys
 | 
			
		||||
mount -n -t tmpfs -o size=1M,noatime tmpfs /tmp
 | 
			
		||||
mount -n -t tmpfs -o size=256k,mode=0755,nosuid,noatime tmpfs /var/run
 | 
			
		||||
 | 
			
		||||
#MODE=`getbootstate`
 | 
			
		||||
 | 
			
		||||
# This doesn't really belong here, but we have start this so early
 | 
			
		||||
start_bootchart(){
 | 
			
		||||
	if [ -e /bootchart -a -e /etc/init.d/bootchart ]
 | 
			
		||||
	then
 | 
			
		||||
		/etc/init.d/bootchart start
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start_softupd()
 | 
			
		||||
{
 | 
			
		||||
    	echo "Starting software updater"
 | 
			
		||||
	/etc/init.d/softupd.rcS
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
in_flash_mode()
 | 
			
		||||
{
 | 
			
		||||
	grep update /proc/component_version 1>/dev/null 2>/dev/null
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mount_devpts() {
 | 
			
		||||
	TTYGRP=5
 | 
			
		||||
	TTYMODE=620
 | 
			
		||||
 | 
			
		||||
	if [ ! -d /dev/pts ]
 | 
			
		||||
	then
 | 
			
		||||
	    mkdir /dev/pts
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if [ ! -c /dev/ptmx ]
 | 
			
		||||
	then
 | 
			
		||||
	    mknod /dev/ptmx c 5 2
 | 
			
		||||
		chmod 666 /dev/ptmx
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	mount -n -t devpts -ogid=$TTYGRP,mode=$TTYMODE devpts /dev/pts
 | 
			
		||||
	rm -rf /var/tmp/*
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# I hate this hack.  -- Md
 | 
			
		||||
make_extra_nodes () {
 | 
			
		||||
    if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
 | 
			
		||||
	cp -a /lib/udev/devices/* /dev/
 | 
			
		||||
    fi
 | 
			
		||||
  grep '^[^#]' /etc/udev/links.conf | \
 | 
			
		||||
  while read type name arg1; do
 | 
			
		||||
    [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
 | 
			
		||||
    case "$type" in
 | 
			
		||||
    L)
 | 
			
		||||
      ln -s $arg1 /dev/$name
 | 
			
		||||
      ;;
 | 
			
		||||
    D)
 | 
			
		||||
      mkdir -p /dev/$name
 | 
			
		||||
      ;;
 | 
			
		||||
    M)
 | 
			
		||||
      mknod /dev/$name $arg1 && chmod 600 /dev/$name
 | 
			
		||||
      ;;
 | 
			
		||||
    *)
 | 
			
		||||
      echo "unparseable line ($type $name $arg1)"
 | 
			
		||||
      ;;
 | 
			
		||||
    esac
 | 
			
		||||
  done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
load_extra_modules () {
 | 
			
		||||
    echo -n "Loading extra modules..."
 | 
			
		||||
    for i in $MODULES; do
 | 
			
		||||
	echo "Loading $i"
 | 
			
		||||
	modprobe -q $i ||:
 | 
			
		||||
    done
 | 
			
		||||
    echo "done."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Mount home and paging partitions if they are available
 | 
			
		||||
mount_mmc(){
 | 
			
		||||
   device=$1
 | 
			
		||||
   swap=$device"p1"
 | 
			
		||||
   home=$device"p2"
 | 
			
		||||
   test=$device"p3"
 | 
			
		||||
 | 
			
		||||
   if [ -e $test ]
 | 
			
		||||
   then
 | 
			
		||||
      echo "Mounting partition $swap for paging"
 | 
			
		||||
      # swap disabled as a workaround for Xorg bug, per NB#111807.
 | 
			
		||||
      swapon $swap
 | 
			
		||||
      modprobe ext3
 | 
			
		||||
      echo "Mounting partition $home as home directory"
 | 
			
		||||
      mount -t ext3 -o noatime,commit=1,data=writeback $home /home
 | 
			
		||||
   else
 | 
			
		||||
      echo "No paging partition available as $swap"
 | 
			
		||||
      echo "No home partition available as $home"
 | 
			
		||||
   fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
prepare_start_udev()
 | 
			
		||||
{
 | 
			
		||||
	. /etc/udev/udev.conf
 | 
			
		||||
 | 
			
		||||
	if [ -z "$tmpfs_size" ]; then
 | 
			
		||||
		tmpfs_size="1M"
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	ACTION=add
 | 
			
		||||
	echo -n "Mounting a tmpfs over /dev..."
 | 
			
		||||
	mount -n -o size=$tmpfs_size,mode=0755,noatime -t tmpfs none /dev
 | 
			
		||||
	echo "done."
 | 
			
		||||
	mkdir -p /dev/.udev/db /dev/.udev/queue
 | 
			
		||||
	echo "" > /sys/kernel/uevent_helper
 | 
			
		||||
	echo -n "Creating extra device nodes... "
 | 
			
		||||
	make_extra_nodes
 | 
			
		||||
	echo "done."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start_udev()
 | 
			
		||||
{
 | 
			
		||||
    	prepare_start_udev
 | 
			
		||||
	/sbin/udevd --daemon
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
make_nodes()
 | 
			
		||||
{
 | 
			
		||||
	echo -n "Creating device nodes... "
 | 
			
		||||
 | 
			
		||||
	if [ -x /sbin/udevtrigger ]; then
 | 
			
		||||
		/sbin/udevtrigger
 | 
			
		||||
	else
 | 
			
		||||
		/sbin/udevadm trigger
 | 
			
		||||
		#wait for all events
 | 
			
		||||
		/sbin/udevadm settle
 | 
			
		||||
	fi
 | 
			
		||||
	echo "done."
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# When modifying this script, do not forget that between the time that
 | 
			
		||||
# the new /dev has been mounted and udevtrigger has been run there will be
 | 
			
		||||
# no /dev/null. This also means that you cannot use the "&" shell command.
 | 
			
		||||
 | 
			
		||||
	start_bootchart
 | 
			
		||||
 | 
			
		||||
if in_flash_mode; then
 | 
			
		||||
	start_softupd
 | 
			
		||||
	reboot
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# here only in non-flash mode
 | 
			
		||||
 | 
			
		||||
# No need to start udev before softupd anymore
 | 
			
		||||
 | 
			
		||||
	start_udev
 | 
			
		||||
	make_nodes
 | 
			
		||||
	load_extra_modules
 | 
			
		||||
 | 
			
		||||
mount_devpts
 | 
			
		||||
mount -n -o size=64M,nosuid,nodev,noatime -t tmpfs tmpfs /dev/shm
 | 
			
		||||
 | 
			
		||||
# mount_mmc "/dev/mmcblk0"
 | 
			
		||||
 | 
			
		||||
/sbin/hwclock -s || true
 | 
			
		||||
 
 | 
			
		||||
watchdog -t 10 /dev/twl4030_wdt
 | 
			
		||||
watchdog -t 10 /dev/watchdog
 | 
			
		||||
modprobe dm_mod
 | 
			
		||||
modprobe dm_loop
 | 
			
		||||
 | 
			
		||||
#LED part taken from a post on talk.maemo.org by Mentalist Traceur. Thx
 | 
			
		||||
modprobe leds-lp5523
 | 
			
		||||
for i in 1 2 3 4 5 6; do
 | 
			
		||||
    echo 25 > /sys/class/leds/lp5523\:kb$i/brightness
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
loadkmap < /nokia-n900.kmap
 | 
			
		||||
 | 
			
		||||
CONT=0
 | 
			
		||||
while [ "$CONT" -ne 1  ] ; do
 | 
			
		||||
cryptsetup luksOpen /dev/mmcblk0p2 home_luks
 | 
			
		||||
if [ "$?" -eq 0 ] || [ -b /dev/mapper/home_luks ] ; then
 | 
			
		||||
CONT=1
 | 
			
		||||
fi
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "Press any key to enable shell"
 | 
			
		||||
read -n 1 -t 2 shellmode
 | 
			
		||||
if [ -n "$shellmode"  ] ; then
 | 
			
		||||
sh
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
killall watchdog
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# cannot collect product data if we are under SDK
 | 
			
		||||
# it should not be run there, but explicit check is better
 | 
			
		||||
OPI=`which osso-product-info`
 | 
			
		||||
 | 
			
		||||
if [ x$OPI != x ]; then
 | 
			
		||||
 | 
			
		||||
	# Make sure /etc/hostname and /etc/hosts exist and are not empty. They do not
 | 
			
		||||
	# exist if this is the very first boot, and they may be empty if power cut
 | 
			
		||||
	# happended before the contents has reached the media.
 | 
			
		||||
	if [ ! -f /etc/hostname  -o ! -s /etc/hostname -o ! -f /etc/hosts -o ! -s /etc/hosts ]; then
 | 
			
		||||
		hostname="`$OPI -qOSSO_PRODUCT_SHORT_NAME | sed 's/ /-/g'`"
 | 
			
		||||
		echo $hostname > /etc/hostname
 | 
			
		||||
		echo "127.0.0.1 $hostname localhost" > /etc/hosts
 | 
			
		||||
		chmod 644 /etc/hosts
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# Similarly, make sure /etc/issue and /etc/issue.net are fine
 | 
			
		||||
	if [ ! -f /etc/issue -o ! -s /etc/issue -o ! -f /etc/issue.net -o ! -s /etc/issue.net -o -f /home/user/first-boot-flag ]; then
 | 
			
		||||
		full_name=`$OPI -qOSSO_PRODUCT_RELEASE_FULL_NAME`
 | 
			
		||||
		echo "$full_name \n \l" > /etc/issue
 | 
			
		||||
		echo "" >> /etc/issue
 | 
			
		||||
		echo "$full_name %h" > /etc/issue.net
 | 
			
		||||
	fi
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Note, normally we would have to sync the FS to make sure the files have
 | 
			
		||||
# reached the media. But because the files are small, they would be either
 | 
			
		||||
# empty or non-existing in case of an unclean reboot, and we handle both
 | 
			
		||||
# cases.
 | 
			
		||||
 | 
			
		||||
hostname -F /etc/hostname
 | 
			
		||||
ifup lo &
 | 
			
		||||
 | 
			
		||||
#echo /sbin/udevsend > /proc/sys/kernel/hotplug
 | 
			
		||||
 | 
			
		||||
#: > /var/run/utmp
 | 
			
		||||
#chmod 664 /var/run/utmp
 | 
			
		||||
#chgrp utmp /var/run/utmp
 | 
			
		||||
 | 
			
		||||
rm -f /etc/mtab
 | 
			
		||||
cat /proc/mounts > /etc/mtab
 | 
			
		||||
 | 
			
		||||
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
 | 
			
		||||
echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects
 | 
			
		||||
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
 | 
			
		||||
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
 | 
			
		||||
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
 | 
			
		||||
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 | 
			
		||||
echo "49152 65535" > /proc/sys/net/ipv4/ip_local_port_range
 | 
			
		||||
echo 6000 > /sys/class/bluetooth/hci0/idle_timeout
 | 
			
		||||
 | 
			
		||||
# adjust other kernel parameters to minimize memory consumption
 | 
			
		||||
# and optimize IO pressure
 | 
			
		||||
echo 16 > /proc/sys/kernel/pty/max
 | 
			
		||||
echo 1024 > /proc/sys/kernel/threads-max
 | 
			
		||||
echo 8192 > /proc/sys/fs/file-max
 | 
			
		||||
echo 100 > /proc/sys/vm/swappiness
 | 
			
		||||
echo 5 > /proc/sys/vm/page-cluster
 | 
			
		||||
echo 500 > /proc/sys/vm/dirty_expire_centisecs
 | 
			
		||||
echo 65536 > /proc/sys/net/core/rmem_default
 | 
			
		||||
echo 16384 > /proc/sys/net/core/wmem_default
 | 
			
		||||
echo 20 > /proc/sys/net/unix/max_dgram_qlen
 | 
			
		||||
 | 
			
		||||
# Finalize SSU in case it has been interrupted by power failure
 | 
			
		||||
if test -x /usr/libexec/ham-rescue.sh; then
 | 
			
		||||
  /usr/libexec/ham-rescue.sh
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Disable sysrq to avoid accidental console-carbage resets.
 | 
			
		||||
echo 0 > /proc/sys/kernel/sysrq
 | 
			
		||||
 | 
			
		||||
echo "/what/me/worry" > /proc/sys/kernel/core_pattern
 | 
			
		||||
echo 1 > /proc/sys/kernel/panic
 | 
			
		||||
echo 1 > /proc/sys/kernel/panic_on_oops
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
		Reference in New Issue
	
	Block a user