#!/bin/bash #export PATH=$PATH:/usr/sbin.rom:/usr/bin.rom #LINUXFMT=ext2 LINUXFMT=ext3 MKE2FSOPT= if [ "$LINUXFMT" = "ext3" ]; then MKE2FSOPT=-j fi # # get device pcmcia_slot # format: get_dev_pcmcia_slot [slot number] # slot number: 0, 1 # output: device name (hda or hdc) # get_dev_pcmcia() { while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR; do echo $DEVS done } get_dev_pcmcia_slot() { grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia } RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1` if [ "$RW_MTD_LINE" = "" ]; then RW_MTD_LINE=`cat /proc/mtd | grep "\.*\<2\>" | tail -n 1` fi RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2` RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2` RW_MTD=/dev/mtd$RW_MTD_NO RW_MTDBLK=/dev/mtdblock$RW_MTD_NO RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /` initlog -s $"found $RW_MTD ${RW_MTD_SIZE}\"Kbyte\"" #echo "ZAURUS_RESET=$ZAURUS_RESET RW_MTD_NO=$RW_MTD_NO RW_MTD_SIZE_HEX=$RW_MTD_SIZE_HEX" #ZAURUS_RESET=HARD if [ "$ZAURUS_RESET" = "HARD" ]; then STRING=$"Starting filesystem: " msg -n $STRING # mount /home /sbin/eraseall $RW_MTD 2> /dev/null > /dev/null mount -t jffs2 -o rw,noatime $RW_MTDBLK /home cd / tar xf /root/.home_default.tar # mount /dev dd if=/dev/zero of=/dev/ram1 bs=1024 count=64 2> /dev/null > /dev/null mkfs.minix -i 512 /dev/ram1 64 2> /dev/null > /dev/null mount -t minix /dev/ram1 /dev (cd /home ; tar cf - dev | (cd / ; tar xf -)) # mount /tmp mount -t tmpfs -o size=1m none /dev/shm mkdir /dev/shm/tmp chmod 4777 /dev/shm/tmp mkdir /dev/shm/run touch /dev/shm/run/utmp mkdir /dev/shm/run/usb /etc/ledmode reset # mount HDD /etc/rc.d/init.d/pcmcia start while [ "$IDE1" = "" ]; do IDE1=`get_dev_pcmcia_slot 1` done if [ "$HDDCLEAR" = "YES" ]; then dd if=/dev/zero of=/dev/${IDE1}2 > /dev/null 2> /dev/null fi mke2fs $MKE2FSOPT /dev/${IDE1}2 2> /dev/null > /dev/null e2fsck -p /dev/${IDE1}2 > /dev/null if [ "$HDDCLEAR" = "YES" ]; then dd if=/dev/zero of=/dev/${IDE1}3 > /dev/null 2> /dev/null fi mke2fs $MKE2FSOPT /dev/${IDE1}3 2> /dev/null > /dev/null mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD1 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi mount -t $LINUXFMT -o noatime /dev/${IDE1}2 /hdd2 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD2 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi mount -t $LINUXFMT -o noatime /dev/${IDE1}3 /hdd3 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD3 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi if [ ! -f /hdd1/.sys/hdimage2.tgz ]; then echo "Error!! HDD is not initialized!" fi cd / gzip -dc /hdd1/.sys/hdimage2.tgz | tar xf - sltime -clear rc=$? if [ "$rc" = "0" ]; then success "$STRING" else failure "$STRING" fi msg else ### SW Reset ! #STRING=$"Checking filesystem: " # mount /home mount -t jffs2 -o rw,noatime $RW_MTDBLK /home # mount /dev dd if=/dev/zero of=/dev/ram1 bs=1024 count=64 2> /dev/null > /dev/null mkfs.minix -i 512 /dev/ram1 64 2> /dev/null > /dev/null mount -t minix /dev/ram1 /dev (cd /home ; tar cf - dev | (cd / ; tar xf -)) if [ -f /home/etc/restorepc ]; then RESTORE_CONNECTION=`cat /home/etc/restorepc` else RESTORE_CONNECTION="" fi if [ "$RESTORE_CONNECTION" != "" ]; then cp /home/etc/restoreip /dev/restoreip 2> /dev/null > /dev/null cp /home/zaurus/Settings/Security.conf /dev/Security.conf 2> /dev/null > /dev/null umount $RW_MTDBLK /sbin/eraseall $RW_MTD 2> /dev/null > /dev/null mount -t jffs2 -o rw,noatime $RW_MTDBLK /home mount -t tmpfs -o size=1m none /dev/shm mkdir /dev/shm/tmp chmod 4777 /dev/shm/tmp mkdir /dev/shm/run touch /dev/shm/run/utmp mkdir /dev/shm/run/usb cd / tar xf /root/.home_default.tar /etc/ledmode reset # mount HDD /etc/rc.d/init.d/pcmcia start while [ "$IDE1" = "" ]; do IDE1=`get_dev_pcmcia_slot 1` done mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD1 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi mke2fs $MKE2FSOPT /dev/${IDE1}2 2> /dev/null > /dev/null e2fsck -p /dev/${IDE1}2 > /dev/null mount -t $LINUXFMT -o noatime /dev/${IDE1}2 /hdd2 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD2 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi cd / # Documents files are discarded... gzip -dc /hdd1/.sys/hdimage2.tgz | tar xf - mount -t $LINUXFMT -o noatime /dev/${IDE1}3 /hdd3 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD3 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi if [ ! -f /hdd1/.sys/hdimage2.tgz ]; then echo -n "Error!! HDD is not initialized!" /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi rm /home/zaurus/Settings/route.conf 2>/dev/null >/dev/null echo -n $RESTORE_CONNECTION > /home/zaurus/Settings/route.conf touch /home/etc/restorepc mv /dev/restoreip /etc/hotplug/usbdnet.conf 2> /dev/null > /dev/null mv /dev/Security.conf /home/zaurus/Settings/Security.conf 2> /dev/null > /dev/null else # mount /tmp mount -t tmpfs -o size=1m none /dev/shm mkdir /dev/shm/tmp chmod 4777 /dev/shm/tmp mkdir /dev/shm/run touch /dev/shm/run/utmp mkdir /dev/shm/run/usb /etc/ledmode reset # mount HDD /etc/rc.d/init.d/pcmcia start while [ "$IDE1" = "" ]; do IDE1=`get_dev_pcmcia_slot 1` done mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD1 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi mount -t $LINUXFMT -o noatime /dev/${IDE1}2 /hdd2 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD2 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi mount -t $LINUXFMT -o noatime /dev/${IDE1}3 /hdd3 rc=$? if [ "$rc" != "0" ]; then echo -n "HDD3 Error!! " /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi if [ ! -f /hdd1/.sys/hdimage2.tgz ]; then echo -n "Error!! HDD is not initialized!" /bin/ledctl ledmode 0 /bin/ledctl alarm 1 while [ "$DUMMY" = "" ]; do sleep 1 done fi fi fi echo $LAUNCH > /home/sharp/etc/launch.default