User:Ruskie

(Repartitioning: use <source> and <pre>)
(5 intermediate revisions not shown)
Line 4: Line 4:
= My repos =
= My repos =
-
  non-optified repo: deb https://repo.codemages.net nonopt/
+
  non-optified repo: deb https://repo.codemages.net/ nonopt/
-
  optified repo: deb https://repo.codemages.net opt/
+
  optified repo: deb https://repo.codemages.net/ opt/
What do the repos contain?
What do the repos contain?
-
* modest from git
 
-
* tinymail from svn with imap idle enabled
 
* zsh - just don't set it as your default shell
* zsh - just don't set it as your default shell
-
* xmms2 with wavpack, mpg123, mpcdec, ogg, flac, etc... support
+
* xmms2 with wavpack, mpg123, mpcdec, ogg, flac, etc... support - also updated to not start at max loud
* fcron - requires some manual work after the install(I'll try to give it an event.d script and do that stuff after the fact but not just yet)
* fcron - requires some manual work after the install(I'll try to give it an event.d script and do that stuff after the fact but not just yet)
 +
* gcoreutils and gtar
 +
* rsyslog
 +
* curl
 +
* djmount
 +
* tinc
 +
* xset and xrdb
  create a fcron user
  create a fcron user
Line 28: Line 32:
Here is what I did to repartition:
Here is what I did to repartition:
http://talk.maemo.org/showpost.php?p=411490&postcount=51
http://talk.maemo.org/showpost.php?p=411490&postcount=51
 +
 +
Copied from the post by request:
 +
 +
 +
<source lang="bash">
 +
#!/bin/bash
 +
 +
echo "Not for running only REFERENCE!!!"
 +
exit
 +
 +
### THIS ALL APPLIES TO ALL PR 1.0 PR 1.0.1 PR 1.1 ###
 +
 +
# backup your user
 +
mount /dev/mmcblk1p1 /media/mmc1
 +
cp -a /home/user /media/mmc1/
 +
 +
# partitioning
 +
sfdisk -uM --no-reread /dev/mmcblk0 << FDSK
 +
0 2048 c
 +
2049 20544 83
 +
22593 768 82
 +
23361 7170 5
 +
23362 2048 83
 +
25410 5120 83
 +
 +
FDSK
 +
 +
# REBOOT
 +
 +
# do this sometime
 +
mkfs.ext2 /dev/mmcblk0p5
 +
mkfs.ext2 /dev/mmcblk0p2
 +
mkfs.ext2 /dev/mmcblk0p6
 +
mkfs.vfat /dev/mmcblk0p1
 +
mkswap /dev/mmcblk0p3
 +
 +
# change /etc/event.d/rcS-late
 +
# comment out generation of fstab
 +
# the following sed command will add a comment character "#"
 +
# at the start of lines 10-20
 +
sed "10,20s:\(.*\):#\1:" /etc/event.d/rcS-late > /etc/event.d/rcS-late.new
 +
cp /etc/event.d/rcS-late.new /etc/event.d/rcS-late
 +
 +
# add mount /home/user/MyDocs
 +
# this sed command inserts /bin/mount /home/user/MyDocs || echo 'Failed to mount' on line 23
 +
sed "23i/bin/mount /home/user/MyDocs || echo 'Failed to mount /home/user/MyDocs partition.'" /etc/event.d/rcS-late > /etc/event.d/rcS-late.new
 +
cp /etc/event.d/rcS-late.new /etc/event.d/rcS-late
 +
rm /etc/event.d/rcS-late.new
 +
# change /etc/init.d/rcS
 +
# this sed command starts on line 197 and if it finds: load_extra_module
 +
# it will replace it with: load_extra_module newline and a mount for usr and opt
 +
sed "197s:load_extra_modules:load_extra_modules\nmount /usr || echo 'Failed to mount /usr'\nmount /opt || echo 'Failed to mount /opt':" /etc/init.d/rcS > /etc/init.d/rcS.new
 +
cp /etc/init.d/rcS.new /etc/init.d/rcS
 +
rm /etc/init.d/rcS.new
 +
# fstab
 +
cat << FSTAB > /etc/fstab
 +
rootfs / rootfs defaults,errors=remount-ro,noatime 0 0
 +
/dev/mmcblk0p6 /usr ext2 rw,noatime,nodiratime,errors=continue 0 0
 +
/dev/mmcblk0p5 /opt ext2 rw,noatime,nodiratime,errors=continue 0 0
 +
/dev/mmcblk0p3 none swap sw 0 0
 +
/dev/mmcblk0p2 /home ext2 rw,noatime,nodiratime,errors=continue 0 0
 +
/dev/mmcblk0p1 /home/user/MyDocs vfat noauto,nodev,noexec,nosuid,noatime,nodiratime,utf8,uid=29999,shortname=mixed,dmask=000,fmask=0133,rodir 0 0
 +
 +
FSTAB
 +
mkdir /usra
 +
mount /dev/mmcblk0p6 /usra
 +
cp -a /usr/* /usra/
 +
mount /home
 +
mount /home/user/MyDocs
 +
mount /dev/mmcblk1p1 /media/mmc1
 +
cp -a /media/mmc1/user /home/
 +
 +
mkdir /tmproot
 +
mount -o bind / /tmproot
 +
</source>
Output of df -h
Output of df -h
-
Filesystem                Size      Used Available Use% Mounted on
+
<pre>
-
rootfs                  227.8M    142.0M    81.6M  64% /
+
Filesystem                Size      Used Available Use% Mounted on
-
/dev/mmcblk0p6            4.9G    293.1M      4.4G  6% /usr
+
rootfs                  227.8M    142.0M    81.6M  64% /
-
/dev/mmcblk0p5            2.0G    198.1M      1.7G  10% /opt
+
/dev/mmcblk0p6            4.9G    293.1M      4.4G  6% /usr
-
/dev/mmcblk0p2          19.7G      1.2G    17.5G  6% /home
+
/dev/mmcblk0p5            2.0G    198.1M      1.7G  10% /opt
-
/dev/mmcblk0p1            2.0G    287.4M      1.7G  14% /home/user/MyDocs
+
/dev/mmcblk0p2          19.7G      1.2G    17.5G  6% /home
 +
/dev/mmcblk0p1            2.0G    287.4M      1.7G  14% /home/user/MyDocs
 +
</pre>
= Setting profile from the terminal =
= Setting profile from the terminal =
Line 171: Line 252:
You can check what any of these are with: apt-cache show name
You can check what any of these are with: apt-cache show name
 +
 +
 +
= Bootmenu =
 +
 +
The following is my setup for /bootmenu.sh
 +
 +
It is still a work in progress and requires FBCON to be actually usable.
 +
 +
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
 +
 +
 +
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."
 +
}
 +
 +
start_udev
 +
make_nodes
 +
load_extra_modules
 +
export BOOTSTATE=LOCAL
 +
touch /tmp/$BOOTSTATE
 +
echo $BOOTSTATE > /tmp/STATE
 +
source /etc/resource_limits.conf
 +
echo "About to exec dsme in state '$BOOTSTATE'."
 +
/sbin/dsme -p /usr/lib/dsme/libstartup.so &
 +
e2fsck -vvv -f /dev/mmcblk0p1
 +
e2fsck -vvv -f /dev/mmcblk0p2
 +
e2fsck -vvv -f /dev/mmcblk0p5
 +
e2fsck -vvv -f /dev/mmcblk0p6
 +
mount /usr/local || echo 'Failed to mount /usr/local'
 +
mount /opt || echo 'Failed to mount /opt'
 +
 +
mount_devpts
 +
mount -n -o size=64M,nosuid,nodev,noatime -t tmpfs tmpfs /dev/shm
 +
 +
/sbin/hwclock -s || true
 +
 +
 +
hostname -F /etc/hostname
 +
ifup lo &
 +
ifup usb0 &
 +
 +
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 8 > /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
 +
 +
# 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
 +
 +
export BOOTSTATE=LOCAL
 +
touch /tmp/$BOOTSTATE
 +
echo $BOOTSTATE > /tmp/STATE
 +
source /etc/resource_limits.conf
 +
echo "About to exec dsme in state '$BOOTSTATE'."
 +
/sbin/dsme -p /usr/lib/dsme/libstartup.so &
 +
if [ ! -d /var/run/sshd ] ; then
 +
  mkdir /var/run/sshd
 +
  chmod 755 /var/run/sshd
 +
  /usr/sbin/sshd -D &
 +
fi
 +
 +
exec /bin/sh

Revision as of 09:58, 6 September 2010

Contents

About me

Sometime

My repos

non-optified repo: deb https://repo.codemages.net/ nonopt/
optified repo: deb https://repo.codemages.net/ opt/

What do the repos contain?

  • zsh - just don't set it as your default shell
  • xmms2 with wavpack, mpg123, mpcdec, ogg, flac, etc... support - also updated to not start at max loud
  • fcron - requires some manual work after the install(I'll try to give it an event.d script and do that stuff after the fact but not just yet)
  • gcoreutils and gtar
  • rsyslog
  • curl
  • djmount
  • tinc
  • xset and xrdb
create a fcron user
chown fcron:fcron /etc/fcron.*
chown -R fcron:fcron /var/spool/fcron

Then edit /etc/event.d/rcS-late

And after initctl emit MOUNTS_OK

put:
/etc/init.d/fcron start

Repartitioning

Here is what I did to repartition: http://talk.maemo.org/showpost.php?p=411490&postcount=51

Copied from the post by request:


#!/bin/bash
 
echo "Not for running only REFERENCE!!!"
exit
 
### THIS ALL APPLIES TO ALL PR 1.0 PR 1.0.1 PR 1.1 ###
 
# backup your user
mount /dev/mmcblk1p1 /media/mmc1
cp -a /home/user /media/mmc1/
 
# partitioning
sfdisk -uM --no-reread /dev/mmcblk0 << FDSK
0 2048 c
2049 20544 83
22593 768 82
23361 7170 5
23362 2048 83
25410 5120 83
 
FDSK
 
# REBOOT
 
# do this sometime
mkfs.ext2 /dev/mmcblk0p5
mkfs.ext2 /dev/mmcblk0p2
mkfs.ext2 /dev/mmcblk0p6
mkfs.vfat /dev/mmcblk0p1
mkswap /dev/mmcblk0p3
 
# change /etc/event.d/rcS-late
# comment out generation of fstab
# the following sed command will add a comment character "#"
# at the start of lines 10-20 
sed "10,20s:\(.*\):#\1:" /etc/event.d/rcS-late > /etc/event.d/rcS-late.new
cp /etc/event.d/rcS-late.new /etc/event.d/rcS-late
 
# add mount /home/user/MyDocs
# this sed command inserts /bin/mount /home/user/MyDocs || echo 'Failed to mount' on line 23
sed "23i/bin/mount /home/user/MyDocs || echo 'Failed to mount /home/user/MyDocs partition.'" /etc/event.d/rcS-late > /etc/event.d/rcS-late.new
cp /etc/event.d/rcS-late.new /etc/event.d/rcS-late
rm /etc/event.d/rcS-late.new
# change /etc/init.d/rcS
# this sed command starts on line 197 and if it finds: load_extra_module
# it will replace it with: load_extra_module newline and a mount for usr and opt
sed "197s:load_extra_modules:load_extra_modules\nmount /usr || echo 'Failed to mount /usr'\nmount /opt || echo 'Failed to mount /opt':" /etc/init.d/rcS > /etc/init.d/rcS.new
cp /etc/init.d/rcS.new /etc/init.d/rcS
rm /etc/init.d/rcS.new
# fstab
cat << FSTAB > /etc/fstab
rootfs / rootfs defaults,errors=remount-ro,noatime 0 0
/dev/mmcblk0p6 /usr ext2 rw,noatime,nodiratime,errors=continue 0 0
/dev/mmcblk0p5 /opt ext2 rw,noatime,nodiratime,errors=continue 0 0
/dev/mmcblk0p3 none swap sw 0 0
/dev/mmcblk0p2 /home ext2 rw,noatime,nodiratime,errors=continue 0 0
/dev/mmcblk0p1 /home/user/MyDocs vfat noauto,nodev,noexec,nosuid,noatime,nodiratime,utf8,uid=29999,shortname=mixed,dmask=000,fmask=0133,rodir 0 0
 
FSTAB
mkdir /usra
mount /dev/mmcblk0p6 /usra
cp -a /usr/* /usra/
mount /home
mount /home/user/MyDocs
mount /dev/mmcblk1p1 /media/mmc1
cp -a /media/mmc1/user /home/
 
mkdir /tmproot
mount -o bind / /tmproot

Output of df -h

Filesystem                Size      Used Available Use% Mounted on
rootfs                  227.8M    142.0M     81.6M  64% /
/dev/mmcblk0p6            4.9G    293.1M      4.4G   6% /usr
/dev/mmcblk0p5            2.0G    198.1M      1.7G  10% /opt
/dev/mmcblk0p2           19.7G      1.2G     17.5G   6% /home
/dev/mmcblk0p1            2.0G    287.4M      1.7G  14% /home/user/MyDocs

Setting profile from the terminal

The reason for fcron in my case was that I wanted the ability to have it set a specific profile at a specific time. This is the script that does this: cat /home/user/setprofile.sh

#!/bin/sh
profile=$1

dbus-send \
           --print-reply \
           --type=method_call \
           --dest=com.nokia.profiled \
           /com/nokia/profiled com.nokia.profiled.set_profile \
           string:$profile > /dev/null
echo "$(date +%Y-%m-%dT%H:%M) Set profile to $profile" > /tmp/setprofile.sh.log

My remove list

Stuff I removed by default

adobe-flashplayer
amazon-installer
ap-installer
as-config-applet-0
as-daemon-0
camel-as-provider-0
camelisync
ezitext-czech
ezitext-danish
ezitext-dutch
ezitext-english-gb
ezitext-english-us
ezitext-essential-plugins
ezitext-finnish
ezitext-french-ca
ezitext-french-fr
ezitext-german
ezitext-greek
ezitext-italian
ezitext-norwegian
ezitext-polish
ezitext-portuguese-pt
ezitext-russian
ezitext-spanish-es
ezitext-spanish-us
ezitext-swedish
facebook-installer
foreca-installer
google-search-widget
hildon-welcome
hildon-welcome-default-logo
libas-common-utils-0
libas-protocol-0
libas-storage-0
libezitext
libtinymail-1.0-0
libtinymail-camel-1.0-0
libtinymail-gnomevfs-1.0-0
libtinymail-maemo-1.0-0
libtinymailui-1.0-0
libtinymailui-gtk-1.0-0
modest
modest-as-plugin-0
modest-l10n-cscz 
modest-l10n-dadk 
modest-l10n-dede
modest-l10n-engb
modest-l10n-enus
modest-l10n-eses
modest-l10n-esmx
modest-l10n-fifi
modest-l10n-frca
modest-l10n-frfr
modest-l10n-itit
modest-l10n-mr0
modest-l10n-nlnl
modest-l10n-nono
modest-l10n-plpl
modest-l10n-ptpt
modest-l10n-ruru
modest-l10n-svse
modest-nokiamessaging-plugin-l10n-cscz
modest-nokiamessaging-plugin-l10n-dadk
modest-nokiamessaging-plugin-l10n-dede
modest-nokiamessaging-plugin-l10n-engb
modest-nokiamessaging-plugin-l10n-enus
modest-nokiamessaging-plugin-l10n-eses
modest-nokiamessaging-plugin-l10n-esmx
modest-nokiamessaging-plugin-l10n-fifi
modest-nokiamessaging-plugin-l10n-frca
modest-nokiamessaging-plugin-l10n-frfr
modest-nokiamessaging-plugin-l10n-itit
modest-nokiamessaging-plugin-l10n-mr0
modest-nokiamessaging-plugin-l10n-nlnl
modest-nokiamessaging-plugin-l10n-nono
modest-nokiamessaging-plugin-l10n-plpl
modest-nokiamessaging-plugin-l10n-ptpt
modest-nokiamessaging-plugin-l10n-ruru
modest-nokiamessaging-plugin-l10n-svse
modest-providers-data
nokiamessaging
osso-startup-wizard
osso-tutorial-l10n-cscz
osso-tutorial-l10n-dadk
osso-tutorial-l10n-dede
osso-tutorial-l10n-engb
osso-tutorial-l10n-enus
osso-tutorial-l10n-eses
osso-tutorial-l10n-esmx
osso-tutorial-l10n-fifi
osso-tutorial-l10n-frca
osso-tutorial-l10n-frfr
osso-tutorial-l10n-itit
osso-tutorial-l10n-mr0
osso-tutorial-l10n-nlnl
osso-tutorial-l10n-nono
osso-tutorial-l10n-plpl
osso-tutorial-l10n-ptpt
osso-tutorial-l10n-ruru
osso-tutorial-l10n-svse
ovi-promotion-widget
rtcom-accounts-plugin-gtalk
rtcom-accounts-plugin-nokiachat
sharing-rtcom
sharing-service-flickr
sharing-service-ovi
skyhost-bin
skyhost-vengine
status-area-applet-activesync-0
telepathy-spirit
tutorial-home-applet
dtg-installer
osso-accounts-plugin-skype
rtcom-abook-skype-plugin
hildon-desktop-application-shortcuts-mr0

You can check what any of these are with: apt-cache show name


Bootmenu

The following is my setup for /bootmenu.sh

It is still a work in progress and requires FBCON to be actually usable.

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


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."
}

	start_udev
	make_nodes
	load_extra_modules
export BOOTSTATE=LOCAL
touch /tmp/$BOOTSTATE
echo $BOOTSTATE > /tmp/STATE
source /etc/resource_limits.conf
echo "About to exec dsme in state '$BOOTSTATE'."
/sbin/dsme -p /usr/lib/dsme/libstartup.so &
e2fsck -vvv -f /dev/mmcblk0p1
e2fsck -vvv -f /dev/mmcblk0p2
e2fsck -vvv -f /dev/mmcblk0p5
e2fsck -vvv -f /dev/mmcblk0p6
mount /usr/local || echo 'Failed to mount /usr/local'
mount /opt || echo 'Failed to mount /opt'

mount_devpts
mount -n -o size=64M,nosuid,nodev,noatime -t tmpfs tmpfs /dev/shm

/sbin/hwclock -s || true


hostname -F /etc/hostname
ifup lo &
ifup usb0 &

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 8 > /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

# 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

export BOOTSTATE=LOCAL
touch /tmp/$BOOTSTATE
echo $BOOTSTATE > /tmp/STATE
source /etc/resource_limits.conf
echo "About to exec dsme in state '$BOOTSTATE'."
/sbin/dsme -p /usr/lib/dsme/libstartup.so &
if [ ! -d /var/run/sshd ] ; then
  mkdir /var/run/sshd
  chmod 755 /var/run/sshd
  /usr/sbin/sshd -D &
fi

exec /bin/sh