#!/bin/sh
#
-# $Id: rc.sysinit,v 1.18.2.36 2005/12/01 20:13:08 eoberlander Exp $
+# rc.sysinit by the IPFire Team
#
eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
+PROGRESS=0
+NUMBEROFSCRIPTS=`ls -l /etc/boot.d | grep ^- | wc -l`
+progressbar()
+{
+ if [ $# != 1 ]
+ then
+ echo "Usage: progressbar {progress}"
+ exit 1
+ fi
+ if [ -e /proc/splash ]; then
+ echo "show $(( 65534 * $1 / $NUMBEROFSCRIPTS ))" > /proc/splash
+ fi
+}
+
echo "Mounting /proc filesystem"
mount -n -t proc /proc /proc
-# Unmount the initrd, if necessary
-if grep -q /initrd /proc/mounts && ! grep -q /initrd/loopfs /proc/mounts ; then
- umount /initrd >/dev/null 2>&1
- blockdev --flushbufs /dev/ram0 >/dev/null 2>&1
-fi
-
-echo "Setting hostname"
-if [ -z "$DOMAINNAME" ]; then
- hostname $HOSTNAME
-else
- hostname ${HOSTNAME}.${DOMAINNAME}
-fi
-
-if [ "$KEYMAP" != "" ]; then
- loadkeys $KEYMAP
-fi
-
-# Initializing Power Management ACPI first, then APM.
-# APM won't load if ACPI is initialized anyway.
-echo "Initializing Power Management"
-modprobe ac > /dev/null 2>&1
-modprobe battery > /dev/null 2>&1
-modprobe button > /dev/null 2>&1
-modprobe fan > /dev/null 2>&1
-modprobe processor > /dev/null 2>&1
-modprobe thermal > /dev/null 2>&1
-modprobe apm > /dev/null 2>&1
-
-# Initialize USB controllers
-echo "Initializing USB controllers"
-aliases=`/sbin/modprobe -c | awk '/^alias usb-controller/ { print $3 }'`
-if [ -n "$aliases" -a "$aliases" != "off" ] ; then
- modprobe usbcore
- mount -n -t usbdevfs usbdevfs /proc/bus/usb
- for alias in $aliases ; do
- [ "$alias" != "off" ] && modprobe $alias
- done
-
- echo "Initializing USB storage devices"
- modprobe usb-storage
- modprobe sd_mod
-
- echo "Initializing USB keyboard"
- modprobe hid
- modprobe keybdev
-
- echo "Initializing USB modems"
- modprobe acm
-fi
-
-STRING="Checking root filesystem"
-
-fsck -R -T -a -C /
-RC=$?
-
-if [ "$RC" = "0" ]; then
- echo "$STRING: Success"
-elif [ "$RC" = "1" ]; then
- echo "$STRING: Passed"
-fi
-
-# A return of 2 or higher means there were serious problems.
-if [ $RC -gt 1 ]; then
- echo "$STRING: Failed"
- echo "*** An error occurred during the file system check."
- echo "*** Dropping you to a shell; the system will reboot"
- echo "*** when you leave the shell."
- export PS1="(Repair filesystem) \# # "
- sulogin
- echo "Unmounting filesystems"
- umount -a
- mount -n -o remount,ro /
- echo "Automatic reboot in progress."
- reboot -f
-fi
-
-echo "Mounting root read/write"
-mount -n -o remount,rw /
-
-STRING="Checking other filesystems"
-fsck -R -T -a -C -A
-RC=$?
-
-if [ "$RC" = "0" ]; then
- echo "$STRING: Success"
-elif [ "$RC" = "1" ]; then
- echo "$STRING: Passed"
-fi
-
-# A return of 2 or higher means there were serious problems.
-if [ $RC -gt 1 ]; then
- echo "$STRING: Failed"
- echo "*** An error occurred during the file system check."
- echo "*** Dropping you to a shell; the system will reboot"
- echo "*** when you leave the shell."
- export PS1="(Repair filesystem) \# # "
- sulogin
- echo "Unmounting filesystems"
- umount -n -a
- mount -n -o remount,ro /
- echo "Automatic reboot in progress."
- reboot -f
-fi
-
-echo "Mounting other filesystems"
-mount -a -n
-
-if [ -e /swapfile ]; then
- echo "Turning on swap"
- chmod 600 /swapfile
- swapon /swapfile
-fi
-
-echo "Updating System.map file location"
-if [ -L /boot/System.map -a -r /boot/System.map-`uname -r` -a \
- ! /boot/System.map -ef /boot/System.map-`uname -r` ]; then
- ln -s -f System.map-`uname -r` /boot/System.map
-fi
-if [ ! -e /boot/System.map -a -r /boot/System.map-`uname -r` ]; then
- ln -s -f System.map-`uname -r` /boot/System.map
-fi
-
-echo "Updating /etc/fstab to reflect removable devices"
-/usr/sbin/updfstab
-
-echo "Setting kernel settings"
-/sbin/sysctl -e -p /etc/sysctl.conf >/dev/null
+progressbar 0
-if [ -e /etc/FLASH ]; then
- if [ -e /etc/rc.d/rc.flash.up ]; then
- echo "Decompressing Flash"
- . /etc/rc.d/rc.flash.up
- fi
-fi
-
-echo "Setting locale"
-LANG=en_US.utf8
-export LANG
-
-echo "Setting consolefonts"
-eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
-for i in 2 3 4 5 6; do
- > /dev/tty$i
+list=`find /etc/boot.d -type f -maxdepth 1 | sort`
+for script in $list; do
+ . $script
+ let PROGRESS=$PROGRESS+1
+ progressbar $PROGRESS
done
-if [ "$LANGUAGE" = "el" ]; then
- /usr/bin/unicode_start iso07u-16
-elif [ "$LANGUAGE" = "pt" -o "$LANGUAGE" = "bz" ]; then
- /usr/bin/unicode_start lat1-16
-elif [ "$LANGUAGE" = "cs" -o "$LANGUAGE" = "hu" -o "$LANGUAGE" = "pl" -o "$LANGUAGE" = "sk" ]; then
- /usr/bin/unicode_start lat2-16
-elif [ "$LANGUAGE" = "tr" ]; then
- /usr/bin/unicode_start lat5-16
-elif [ "$LANGUAGE" = "vi" ]; then
- /usr/bin/unicode_start viscii10-8x16
-else
- /usr/bin/unicode_start lat0-16
-fi
-
-echo "Update modules dependencies when necessary"
-if [ -e /var/run/need-depmod-`uname -r` ]; then
- /sbin/depmod -a
- /bin/rm -f /var/run/need-depmod-`uname -r`
-fi
-
-echo "Clearing old files"
-rm -f /var/run/{*.pid,*.sem,*.tdb}
-rm -f /var/run/dhcpcd-*.pid
-rm -f /var/lock/{LCK..tty*,rc.updatered.lock}
-rm -f /var/ipfire/dhcpc/{*.pid,*.cache,*.info}
-rm -f /var/ipfire/red/{active,eciadsl-synch-done}
-
-echo "Setting the clock"
-/sbin/hwclock --hctosys
-
-# Cleaning up wtmp/utmp files
->/var/run/utmp
-touch /var/log/wtmp
-chgrp utmp /var/run/utmp /var/log/wtmp
-chmod 0664 /var/run/utmp /var/log/wtmp
-
-if [ -x /usr/sbin/isapnp -a -f /var/ipfire/isapnp/isapnp.conf -a ! -f /proc/isapnp ]; then
- echo "Running isapnp"
- /usr/sbin/isapnp /var/ipfire/isapnp/isapnp.conf 2>/dev/null
-fi
-
-if [ ! -e /etc/ssh/ssh_host_key ]; then
- echo "Generating SSH RSA1 key. This may take several minutes."
- /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N ""
-fi
-if [ ! -e /etc/ssh/ssh_host_rsa_key ]; then
- echo "Generating SSH RSA key. This may take several minutes."
- /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
-fi
-if [ ! -e /etc/ssh/ssh_host_dsa_key ]; then
- echo "Generating SSH DSA key. This may take several minutes."
- /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
-fi
-
-# https certificate
-if [ -f /etc/httpd/server.key -a -f /etc/httpd/server.crt -a -f /etc/httpd/server.csr ]; then
- /usr/local/bin/httpscert read
-else
- /usr/local/bin/httpscert new
-fi
-
-echo "Rotating logs"
-/usr/sbin/logrotate /etc/logrotate.conf
-
-echo "Starting syslogd"
-/usr/sbin/syslogd -m 0
-echo "Starting klogd"
-/usr/sbin/klogd -u klogd -j /var/empty
-
-echo "Running /etc/rc.d/rc.network"
-. /etc/rc.d/rc.network
-
-echo "Dumping boot messages"
-dmesg > /var/log/dmesg
-
-echo 7200 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
-
-#if [ -e /var/log/rrd/disk.rrd ]; then
-# echo "Adjusting graphs to compensate for boot"
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk.rrd","-t","readsect:writesect","N:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hda.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hda.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hdb.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hdb.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hdc.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hdc.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hdd.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hdd.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hde.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hde.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hdf.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hdf.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hdg.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hdg.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /var/log/rrd/disk-hdh.rrd ]; then
-# /usr/bin/perl -e 'use RRDs;RRDs::update("/var/log/rrd/disk-hdh.rrd","-t","readsect:writesect:sleeping","N:U:U:U");'
-#fi
-#if [ -e /tmp/hddshutdown-stat ] ; then
-# rm /tmp/hddshutdown-*"
-#fi
-#/usr/local/bin/hddshutdown
-
-echo "Starting crond"
-/usr/sbin/fcron
-echo "Starting Snort (if enabled)"
-/usr/local/bin/restartsnort red blue orange green
-echo "Starting httpd"
-/usr/sbin/httpd
-echo "Starting dhcpd (if enabled)"
-/usr/local/bin/restartdhcp
-echo "Starting sshd (if enabled)"
-/usr/local/bin/restartssh
-echo "Starting ntpd (if enabled)"
-/usr/local/bin/restartntpd
-echo "Starting openvpn (if enabled)"
-/usr/local/bin/openvpnctrl --start-daemon-only
-
-if [ -e "/var/ipfire/proxy/squid.conf" ]; then
- echo "Starting squid (if enabled)"
- /usr/local/bin/restartsquid
-fi
-
-echo "Running rc.local"
-. /etc/rc.d/rc.local
logger -t ipfire "IPFire started."
/usr/bin/beep -l 75 -f 1000
/usr/bin/beep -l 75 -f 2000
/usr/bin/beep -l 75 -f 3000
+