#!/bin/sh

echo
echo Welcome to the BEAM BeamNet System

# Create /dev
echo -n "Creating /dev: "
mount -n /tmpfs /dev -t tmpfs
#mknod /dev/console c 5 1
#mknod /dev/null c 1 3
mknod /dev/ram b 1 1
mknod /dev/urandom c 1 9
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
for i in 1 2 3 4; do mknod /dev/tty$i c 4 $i; done
mknod /dev/hda b 3 0
for i in 1 2 3 4; do mknod /dev/hda$i b 3 $i; done
mknod /dev/sda b 8 0
for i in 1 2 3 4; do mknod /dev/sda$i b 8 $i; done
mknod /dev/ptmx c 5 2
mkdir /dev/pts
mount -n /tmpfs /dev/pts -t devpts
#mknod /dev/rtc c 10 135
mknod /dev/rtc c 254 0
mknod /dev/watchdog c 10 130
echo "done."

# Make sure / is ro
echo -n "Mounting '/' read-only: "; mount -n -o remount,ro /; echo "done."

# mount /proc
echo -n "Mounting /proc: "; mount -n /proc /proc -t proc; echo "done."

# mount /sys
echo -n "Mounting /sys: "; mount -n /sys /sys -t sysfs; echo "done."

# Setup the /tmp filesystem
echo -n "Mounting /tmp: "; mount -n /tmpfs /tmp -t tmpfs; echo "done."

mkdir /tmp/var
mkdir /tmp/var/log

# Load modules
modprobe via-rhine
modprobe uhci-hcd

# IPMI interface
modprobe ipmi_msghandler
modprobe ipmi_watchdog
modprobe ipmi_si
modprobe ipmi_devintf

# Mount USB
mount -t usbfs usbfs /proc/bus/usb

# Bring up loopback
echo -n "Bringing up loopback interface: "; ifconfig lo 127.0.0.1 up; echo "done."

# Bring up eth0
echo -n "Bringing up ethernet interface: ";
while true; do
	if udhcpc -s /etc/dhcpConfig -f -n -q -i eth0; then break; fi
	if udhcpc -s /etc/dhcpConfig -f -n -q -i eth1; then break; fi
done
source /tmp/dhcpInfo

# Setup DNS
echo "# Setup by rcS from DHCP info" > /etc/resolv.conf
if [ "${dhcp_domain}" != "" ]; then
	echo "search ${dhcp_domain}" >> /etc/resolv.conf
fi
if [ "${dhcp_dns}" != "" ]; then
	echo "nameserver ${dhcp_dns}" >> /etc/resolv.conf
fi

# Setup system time
echo -n "Setting system time: "; rdate -s ${dhcp_siaddr}; hwclock -w -u; echo "done."

# Start syslogd/klogd
echo -n "Starting syslogd: "; syslogd -L -R server; echo "done."
echo -n "Starting klogd: "; klogd; echo "done."

# Start inetd
echo -n "Starting inetd: "; /usr/sbin/inetd; echo "done."

# Start telnetd
echo -n "Starting telnetd: "; /usr/sbin/telnetd; echo "done."


# Start httpd
echo -n "Starting httpd: "; /usr/sbin/httpd  -h /var/www; echo "done."

# NFS Start
modprobe nfs
mount -n -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs

# Mount Server dirs
mount -n -t nfs -o rw,async,nolock ${dhcp_siaddr}:/usr/tms /usr/tms
mount -n -t nfs -o rw,async,nolock ${dhcp_siaddr}:/data /data

# Load ADMRRC2 driver
modprobe admxrc2
major=`awk "\\$2==\"admxrc2\" {print \\$1}" /proc/devices`
if [ "$major" == "" ] ; then
    echo "Failed to get Admxrc2 major device number"
else
	rm -f /dev/admxrcii*
	mknod /dev/admxrcii0 c $major 0
	mknod /dev/admxrcii1 c $major 1
	mknod /dev/admxrcii2 c $major 2
	mknod /dev/admxrcii3 c $major 3
	mknod /dev/admxrcii4 c $major 4
	mknod /dev/admxrcii5 c $major 5
	mknod /dev/admxrcii6 c $major 6
	mknod /dev/admxrcii7 c $major 7
fi

# Debug options
# mount -n -t nfs -o rw,async,nolock ${dhcp_siaddr}:/src /src

# Start TmsPuServer, can also be done in inittab
/usr/tms/bin/tmsPuServer

echo "System started."
