#!/bin/sh # # System initialesieren echo "Importing settings: " . /etc/init.d/rc.functions . /etc/profile export BOOTSTEPS=$STARTSTEPS check_status { date # Starting loging damons and Destination for extended log messages echo "Setting up logging: " reset >/dev/tty5 echo >/dev/tty10 || failed setlogcons 10 || failed syslogd -m 0 || failed if [ "0$LOG_LEVEL" -lt "3" ]; then klogd -c 1 || failed ln -fs /dev/null /dev/stdlog || failed else klogd -c $(($LOG_LEVEL-2)) || failed ln -fs /dev/stdout /dev/stdlog || failed fi if [ "0$LOG_LEVEL" -lt "2" ];then # log to tmpfs mount -n tmpfs /var/log -t tmpfs || failed fi if [ "0$LOG_LEVEL" -lt "1" ];then # redirect logfiles to /dev/null for f in /var/run/utmp $(find /var/log -type f); do ln -fs /dev/null $f || failed done fi check_status } 2>&1 | tee -a /var/log/sysinit { # Mount devpts, proc, sysfs and hard disks echo "Mounting all filesystems: "; mount -a; check_status # Enabling DMA modus if [ "$ide" != "nodma" ]; then for drive in `ls /proc/ide/hd? 2>/dev/null; ls /proc/ide/sd? 2>/dev/null`; do echo "$( device="/dev/${drive##*/}" echo "Turn on DMA for $device:"; hdparm -d1 $device >>/dev/null 2>&1; check_status "" "no DMA" )" & done fi # Mounting filesystems if [ -n "$(mount | grep "(ro,")" ]; then # System device is read only echo "Preparing read-only system directory: " rm -fr /etc/mld || failed ln -fs $sys_dir /etc/mld || failed # make /etc/addons writeable mkdir -p /mnt/addons || failed mount -t tmpfs -o loop tmpfs /mnt/addons || failed mount -t aufs -o dirs=/mnt/addons:$sys_dir/etc/addons aufs /etc/addons || failed check_status else # Konfig Direktory einbinden echo "Preparing read-write system directory: " ##geht so nicht, da dann der Ordner tmp der Addons verdeckt wird #mount -n tmpfs /tmp -t tmpfs || failed rm -fr /etc/mld || failed ln -fs $sys_dir /etc/mld || failed # needed to make addons mountable as aufs on / mount -o loop $sys_dir/etc/addons /etc/addons || failed check_status fi echo "Setting up netware: " echo -e "$HOST_NAME.$DOM_NAME" > /etc/hostname || failed grep -qs "$HOST_NAME.$DOM_NAME" /etc/hosts || sed "s/127.0.0.1\s.*\..*/127.0.0.1\t$HOST_NAME.$DOM_NAME $HOST_NAME/" -i /etc/hosts || failed hostname -F /etc/hostname || failed ifconfig lo up 127.0.0.1 || failed route add -net 127.0.0.0/8 lo || failed check_status echo "Setting timezone:"; hwclock -s -u; check_status echo "$SYSTEM_NAME $SYSTEM_VERSION" >> /etc/issue echo "`uname -s` `uname -r` [`uname -m` arch]\n" >> /etc/issue # install addons rm -rf /var/run/* > /var/spool/apm.new > /var/spool/apm.pid for addon in $(cat /etc/addons/active 2>/dev/null || (cd /etc/addons/; ls *.sfs 2>/dev/null)); do test -z "${addon###*}" && continue name=${addon%-*_*} name=${name##*_} basename=${name%.*} test -e /var/spool/apm.mnt/$basename || echo $basename >> /var/spool/apm.new # echo "$( ( echo "Importing addon: $basename" mkdir -p /var/spool/apm.mnt/$basename || failed if ! mount /etc/addons/$addon /var/spool/apm.mnt/$basename -t squashfs -o loop; then if [ ! -e /etc/addons/$addon ]; then echo " Unknown Addon: $addon" && failed else sleep 1 mount /etc/addons/$addon /var/spool/apm.mnt/$basename -t squashfs -o loop || failed fi fi mount -o remount,add:1:/var/spool/apm.mnt/$basename / || failed check_status # ) 2>&1 )" & echo $! >> /var/spool/apm.pid done while read pid; do wait $pid; done < /var/spool/apm.pid rm -f /var/spool/apm.pid test -e /lib/modules/$(uname -r) && depmod ldconfig.sh # run install scripts for new addons export DIALOG_OUT=/dev/console for addon in $(cat /var/spool/apm.new); do if [ -e /var/spool/apm/$addon ]; then echo "Installing addon: $addon"; /var/spool/apm/$addon install; check_status fi done rm /var/spool/apm.new # Startscripte ausführen /etc/init.d/rc.init start # Save number of bootsteps and set progesivebar to 100% update_setting STARTSTEPS $(cat /var/spool/bootstep) echo $BOOTSTEPS >/var/spool/bootstep show_bootstep . /etc/rc.config if [ "$SHOW_PROMPT" = "1" ]; then # disable silentmode echo "verbose" 2>/dev/null > /proc/splash fi # das logging tee muss abgeschossen werden (sofern er nicht von selbst beendet wird) da ansonsten die gestarteten demons ein beenden dieses Skripts verhindern wuerden #killall tee { sleep 5; killall tee; } >/dev/null 2>&1 &1 | tee -a /var/log/sysinit