|
|
| version 1.1, 2014/01/21 09:19:06 | version 1.1.2.1, 2014/01/21 09:19:06 |
|---|---|
| Line 0 | Line 1 |
| #!/bin/sh | |
| # | |
| # Boot startup script for elwix :) | |
| # | |
| # $Id$ | |
| stty status '^T' | |
| trap : 2 | |
| trap : 3 | |
| trap : 18 | |
| HOME=/root | |
| PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/pkg/bin:/usr/pkg/sbin:/usr/local/bin:/usr/local/sbin | |
| TERM=xterm | |
| BLOCKSIZE=1k | |
| EDITOR=vi | |
| PAGER=less | |
| export HOME PATH TERM BLOCKSIZE EDITOR PAGER | |
| SYSPKGDIR="/var/frm" | |
| BOOTLOG="/var/run/elwix.boot" | |
| XML="/etc/config.xml" | |
| MGMT_VLAN="4093" | |
| MGMT_NAME="mgmt" | |
| MGMT_ADDR="10.254.254.254/30" | |
| umask 022 | |
| boot() | |
| { | |
| echo "Check and mount filesystems ..." | |
| fsck -y 1>/dev/null 2>&1 && mount -a || fsck -f -y | |
| echo "Loading elwix firmware variables ..." | |
| cd /elwix/altroot | |
| pax -rw -pe var / | |
| chmod 1777 /var/tmp | |
| cd / | |
| } | |
| options() | |
| { | |
| echo "Set firmware options ..." | tee -a $BOOTLOG | |
| [ -x /etc/sysctl.conf ] && /etc/sysctl.conf | tee -a $BOOTLOG | |
| } | |
| passwd() | |
| { | |
| echo "Syncing password database ..." | tee -a $BOOTLOG | |
| pwd_mkdb /etc/master.passwd | tee -a $BOOTLOG 1>/dev/null 2>&1 | |
| rm -f /etc/nologin | |
| } | |
| local() | |
| { | |
| echo "Configurate localhost ..." | tee -a $BOOTLOG | |
| ifconfig lo0 127.0.0.1 | tee -a $BOOTLOG 1>/dev/null 2>&1 | |
| hostname `cat /etc/myname` | |
| if [ -x /usr/bin/xmler ]; then | |
| hostname `xmler -g /elwix/system/hostname $XML` | |
| domainname `xmler -g /elwix/system/domain $XML` | |
| fi | |
| } | |
| geteth() | |
| { | |
| ifconfig -a -u | awk ' | |
| (match($0, "[:alpha:]*\: ") && match($2, "flags=")) { eth = substr($1, 1, index($1, ":") - 1); next; }; | |
| (match($0, "media:\ Ethernet")) { printf("%s\n", eth); }; | |
| ' | head -1 | |
| } | |
| mgmt() | |
| { | |
| [ -r /etc/mylan ] && VDEV=`cat /etc/mylan` | |
| if [ -x /usr/bin/get1steth ]; then | |
| VDEV=${VDEV:-`get1steth -g`} | |
| get1steth -v $VDEV | tee -a $BOOTLOG 1>/dev/null 2>&1 | |
| else | |
| VDEV=${VDEV:-`geteth`} | |
| ifconfig $VDEV up | |
| ifconfig vlan$MGMT_VLAN create vlan $MGMT_VLAN vlandev $VDEV | |
| ifconfig vlan$MGMT_VLAN name $MGMT_NAME | |
| ifconfig $MGMT_NAME inet $MGMT_ADDR | |
| fi | |
| echo "Configurete management interface to ($VDEV) ..." | tee -a $BOOTLOG | |
| } | |
| syspkg() | |
| { | |
| echo "Setup elwix dynamic link libraries ..." | |
| ldconfig /etc/ld.so.conf | |
| echo "Mounting firmware system packages:" | tee -a $BOOTLOG | |
| # Raw images | |
| for i in /elwix/cf/*-pkg.frm; do | |
| if [ -r $i ]; then | |
| MDDEV=$(mdconfig -a -t vnode -f $i); | |
| install -d $SYSPKGDIR/$MDDEV; | |
| mount -r /dev/$MDDEV $SYSPKGDIR/$MDDEV | tee -a $BOOTLOG 1>/dev/null 2>&1; | |
| if [ $? -ne 0 ]; then | |
| mdconfig -d -u $MDDEV; | |
| echo "Failed mount system package $i ... Corrupted!" | tee -a $BOOTLOG; | |
| continue | |
| else | |
| echo "Added firmware system package ... $i($?)" | tee -a $BOOTLOG; | |
| PATH=$PATH:$SYSPKGDIR/$MDDEV/bin:$SYSPKGDIR/$MDDEV/sbin | |
| export PATH | |
| [ -d $SYSPKGDIR/$MDDEV/lib ] && ldconfig -v -m $SYSPKGDIR/$MDDEV/lib | \ | |
| tee -a $BOOTLOG 1>/dev/null 2>&1; | |
| [ -x $SYSPKGDIR/$MDDEV/.pkg2sys ] && $SYSPKGDIR/$MDDEV/.pkg2sys; | |
| fi | |
| fi | |
| done | |
| # UZIP images | |
| for i in /elwix/cf/*-pkg.frz; do | |
| if [ -r $i ]; then | |
| MDDEV=$(mdconfig -a -t vnode -f $i); | |
| install -d $SYSPKGDIR/$MDDEV; | |
| mount -r /dev/$MDDEV.uzip $SYSPKGDIR/$MDDEV | tee -a $BOOTLOG 1>/dev/null 2>&1; | |
| if [ $? -ne 0 ]; then | |
| mdconfig -d -u $MDDEV; | |
| echo "Failed mount system package $i ... Corrupted!" | tee -a $BOOTLOG; | |
| continue | |
| else | |
| echo "Added firmware system package ... $i($?)" | tee -a $BOOTLOG; | |
| PATH=$PATH:$SYSPKGDIR/$MDDEV/bin:$SYSPKGDIR/$MDDEV/sbin | |
| export PATH | |
| [ -d $SYSPKGDIR/$MDDEV/lib ] && ldconfig -v -m $SYSPKGDIR/$MDDEV/lib | \ | |
| tee -a $BOOTLOG 1>/dev/null 2>&1; | |
| [ -x $SYSPKGDIR/$MDDEV/.pkg2sys ] && $SYSPKGDIR/$MDDEV/.pkg2sys; | |
| fi | |
| fi | |
| done | |
| } | |
| service() | |
| { | |
| echo "Starting distribution static services:" | tee -a $BOOTLOG | |
| for i in /etc/rc.d/*.run; do | |
| if [ -x $i ]; then | |
| $i | |
| fi | |
| done | |
| if [ -d /etc/rc.S ]; then | |
| echo "Select boot service directory ..." `readlink /etc/rc.S` | tee -a $BOOTLOG | |
| echo "Starting distribution services:" | tee -a $BOOTLOG | |
| for i in /etc/rc.S/*.run; do | |
| if [ -x $i ]; then | |
| $i | |
| fi | |
| done | |
| fi | |
| } | |
| # | |
| ## main() | |
| # | |
| boot | |
| echo "elwix>>> Start system boot stage at `date`" | tee $BOOTLOG | |
| options | |
| passwd | |
| local | |
| mgmt | |
| syspkg | |
| service | |
| echo "elwix>>> Start local services:" | tee -a $BOOTLOG | |
| [ -r /etc/rc.local ] && . /etc/rc.local | |
| echo "elwix>>> Done." | tee -a $BOOTLOG |