diff --git a/config/rootfiles/common/armv5tel/initscripts b/config/rootfiles/common/armv5tel/initscripts index a174c5b45..e37a905c3 100644 --- a/config/rootfiles/common/armv5tel/initscripts +++ b/config/rootfiles/common/armv5tel/initscripts @@ -125,12 +125,13 @@ etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd etc/rc.d/init.d/template #etc/rc.d/init.d/tftpd -etc/rc.d/init.d/tmpfs +#etc/rc.d/init.d/tmpfs #etc/rc.d/init.d/tor etc/rc.d/init.d/udev etc/rc.d/init.d/udev_retry etc/rc.d/init.d/upnpd #etc/rc.d/init.d/vdr +etc/rc.d/init.d/vnstat #etc/rc.d/init.d/vdradmin #etc/rc.d/init.d/vsftpd #etc/rc.d/init.d/watchdog @@ -149,13 +150,14 @@ etc/rc.d/rc0.d/K30sshd etc/rc.d/rc0.d/K45random etc/rc.d/rc0.d/K47setclock etc/rc.d/rc0.d/K49cyrus-sasl +etc/rc.d/rc0.d/K51vnstat etc/rc.d/rc0.d/K78snort etc/rc.d/rc0.d/K79leds etc/rc.d/rc0.d/K80network etc/rc.d/rc0.d/K82wlanclient #etc/rc.d/rc0.d/K84bluetooth #etc/rc.d/rc0.d/K85messagebus -etc/rc.d/rc0.d/K85tmpfs +#etc/rc.d/rc0.d/K85tmpfs etc/rc.d/rc0.d/K90sysklogd etc/rc.d/rc0.d/S60sendsignals etc/rc.d/rc0.d/S70localnet @@ -163,7 +165,8 @@ etc/rc.d/rc0.d/S80mountfs etc/rc.d/rc0.d/S90swap etc/rc.d/rc0.d/S99halt #etc/rc.d/rc3.d -etc/rc.d/rc3.d/S01tmpfs +#etc/rc.d/rc3.d/S01tmpfs +etc/rc.d/rc3.d/S01vnstat etc/rc.d/rc3.d/S10sysklogd #etc/rc.d/rc3.d/S15messagebus #etc/rc.d/rc3.d/S16bluetooth @@ -197,13 +200,14 @@ etc/rc.d/rc6.d/K30sshd etc/rc.d/rc6.d/K45random etc/rc.d/rc6.d/K47setclock etc/rc.d/rc6.d/K49cyrus-sasl +etc/rc.d/rc6.d/K51vnstat etc/rc.d/rc6.d/K78snort etc/rc.d/rc6.d/K79leds etc/rc.d/rc6.d/K80network etc/rc.d/rc6.d/K82wlanclient #etc/rc.d/rc6.d/K84bluetooth #etc/rc.d/rc6.d/K85messagebus -etc/rc.d/rc6.d/K85tmpfs +#etc/rc.d/rc6.d/K85tmpfs etc/rc.d/rc6.d/K90sysklogd etc/rc.d/rc6.d/S60sendsignals etc/rc.d/rc6.d/S70mountfs diff --git a/config/rootfiles/common/i586/initscripts b/config/rootfiles/common/i586/initscripts index 84c432a05..d5c8f1d4b 100644 --- a/config/rootfiles/common/i586/initscripts +++ b/config/rootfiles/common/i586/initscripts @@ -126,13 +126,14 @@ etc/rc.d/init.d/sysctl etc/rc.d/init.d/sysklogd etc/rc.d/init.d/template #etc/rc.d/init.d/tftpd -etc/rc.d/init.d/tmpfs +#etc/rc.d/init.d/tmpfs #etc/rc.d/init.d/tor #etc/rc.d/init.d/transmission etc/rc.d/init.d/udev etc/rc.d/init.d/udev_retry etc/rc.d/init.d/upnpd #etc/rc.d/init.d/vdr +etc/rc.d/init.d/vnstat #etc/rc.d/init.d/vdradmin #etc/rc.d/init.d/vsftpd #etc/rc.d/init.d/watchdog @@ -151,13 +152,14 @@ etc/rc.d/rc0.d/K30sshd etc/rc.d/rc0.d/K45random etc/rc.d/rc0.d/K47setclock etc/rc.d/rc0.d/K49cyrus-sasl +etc/rc.d/rc0.d/K51vnstat etc/rc.d/rc0.d/K78snort etc/rc.d/rc0.d/K79leds etc/rc.d/rc0.d/K80network etc/rc.d/rc0.d/K82wlanclient #etc/rc.d/rc0.d/K84bluetooth #etc/rc.d/rc0.d/K85messagebus -etc/rc.d/rc0.d/K85tmpfs +#etc/rc.d/rc0.d/K85tmpfs etc/rc.d/rc0.d/K87acpid etc/rc.d/rc0.d/K90sysklogd etc/rc.d/rc0.d/S60sendsignals @@ -166,7 +168,8 @@ etc/rc.d/rc0.d/S80mountfs etc/rc.d/rc0.d/S90swap etc/rc.d/rc0.d/S99halt #etc/rc.d/rc3.d -etc/rc.d/rc3.d/S01tmpfs +#etc/rc.d/rc3.d/S01tmpfs +etc/rc.d/rc3.d/S01vnstat etc/rc.d/rc3.d/S10sysklogd etc/rc.d/rc3.d/S12acpid #etc/rc.d/rc3.d/S15messagebus @@ -201,13 +204,14 @@ etc/rc.d/rc6.d/K30sshd etc/rc.d/rc6.d/K45random etc/rc.d/rc6.d/K47setclock etc/rc.d/rc6.d/K49cyrus-sasl +etc/rc.d/rc6.d/K51vnstat etc/rc.d/rc6.d/K78snort etc/rc.d/rc6.d/K79leds etc/rc.d/rc6.d/K80network etc/rc.d/rc6.d/K82wlanclient #etc/rc.d/rc6.d/K84bluetooth #etc/rc.d/rc6.d/K85messagebus -etc/rc.d/rc6.d/K85tmpfs +#etc/rc.d/rc6.d/K85tmpfs etc/rc.d/rc6.d/K87acpid etc/rc.d/rc6.d/K90sysklogd etc/rc.d/rc6.d/S60sendsignals diff --git a/config/rootfiles/common/stage2 b/config/rootfiles/common/stage2 index 4021cafad..5b763fd87 100644 --- a/config/rootfiles/common/stage2 +++ b/config/rootfiles/common/stage2 @@ -40,6 +40,7 @@ etc/profile.d/term256.sh etc/profile.d/umask.sh etc/resolv.conf etc/securetty +etc/sysconfig/ramdisk etc/sysctl.conf etc/syslog.conf etc/system-release diff --git a/lfs/initscripts b/lfs/initscripts index 141fd66d8..c4e349221 100755 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -61,6 +61,9 @@ $(TARGET) : -rm -rf /etc/init.d ln -svf rc.d/init.d /etc/init.d + #create ramdiskfile to force ramdiskcreation if FORCE=1 + echo "FORCE=0" > /etc/sysconfig/ramdisk + for i in $(DIR_SRC)/src/initscripts/init.d/*; do \ install -v -m 754 $$i /etc/rc.d/init.d/; \ done @@ -128,9 +131,6 @@ $(TARGET) : ln -sf ../init.d/random /etc/rc.d/rc3.d/S25random ln -sf ../init.d/random /etc/rc.d/rc6.d/K45random ln -sf ../../sysconfig/rc.local /etc/rc.d/rc3.d/S98rc.local - ln -sf ../init.d/tmpfs /etc/rc.d/rc0.d/K85tmpfs - ln -sf ../init.d/tmpfs /etc/rc.d/rc3.d/S01tmpfs - ln -sf ../init.d/tmpfs /etc/rc.d/rc6.d/K85tmpfs ln -sf ../init.d/mediatomb /etc/rc.d/rc3.d/S98mediatomb ln -sf ../init.d/mediatomb /etc/rc.d/rc0.d/K02mediatomb ln -sf ../init.d/mediatomb /etc/rc.d/rc6.d/K02mediatomb @@ -178,6 +178,9 @@ $(TARGET) : ln -sf ../init.d/firewall /etc/rc.d/rcsysinit.d/S85firewall ln -sf ../init.d/network-trigger /etc/rc.d/rcsysinit.d/S90network-trigger ln -sf ../init.d/rngd /etc/rc.d/rcsysinit.d/S92rngd + ln -sf ../init.d/vnstat /etc/rc.d/rc3.d/S01vnstat + ln -sf ../init.d/vnstat /etc/rc.d/rc0.d/K51vnstat + ln -sf ../init.d/vnstat /etc/rc.d/rc6.d/K51vnstat ln -sf ../init.d/wlanclient /etc/rc.d/rc0.d/K82wlanclient ln -sf ../init.d/wlanclient /etc/rc.d/rc3.d/S19wlanclient ln -sf ../init.d/wlanclient /etc/rc.d/rc6.d/K82wlanclient diff --git a/lfs/vnstat b/lfs/vnstat index b8c8b2759..1c1333b53 100644 --- a/lfs/vnstat +++ b/lfs/vnstat @@ -76,6 +76,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) cd $(DIR_APP) && make all $(MAKETUNING) LOCAL_CONFIGURE_OPTIONS="--enable-readline=yes" cd $(DIR_APP) && make install sed -i 's|eth0|green0|g' /etc/vnstat.conf - sed -i 's|/var/lib/vnstat|/var/log/rrd/vnstat|g' /etc/vnstat.conf + sed -i 's|/var/lib/vnstat|/var/log/vnstat|g' /etc/vnstat.conf @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/src/initscripts/init.d/cleanfs b/src/initscripts/init.d/cleanfs index e8c8c8bb0..2d5778df9 100644 --- a/src/initscripts/init.d/cleanfs +++ b/src/initscripts/init.d/cleanfs @@ -77,7 +77,36 @@ case "${1}" in rm -rf /var/run ln -s ../run /var/run fi - + # + # create some folders + # + if [ ! -e /var/lock/subsys ]; then + mkdir -p /var/lock/subsys + fi + if [ ! -e /var/lock/time ]; then + mkdir -p /var/lock/time + chown nobody.root /var/lock/time + fi + if [ ! -e /var/run/clamav ]; then + mkdir -p /var/run/clamav + chown clamav:clamav /var/run/clamav + fi + if [ ! -e /var/run/cups ]; then + mkdir -p /var/run/cups + fi + if [ ! -e /var/run/dbus ]; then + mkdir -p /var/run/dbus + fi + if [ ! -e /var/run/mysql ]; then + mkdir -p /var/run/mysql + chown mysql:mysql /var/run/mysql + fi + if [ ! -e /var/run/saslauthd ]; then + mkdir -p /var/run/saslauthd + fi + if [ ! -e /var/log/vnstat ]; then + mkdir -p /var/log/vnstat + fi boot_mesg -n "Cleaning file systems:" ${INFO} boot_mesg -n " /tmp" ${NORMAL} diff --git a/src/initscripts/init.d/collectd b/src/initscripts/init.d/collectd index 96bd12676..69dc94c6f 100644 --- a/src/initscripts/init.d/collectd +++ b/src/initscripts/init.d/collectd @@ -6,6 +6,7 @@ . $rc_functions eval $(/usr/local/bin/readhash /var/ipfire/main/settings) +eval $(/usr/local/bin/readhash /etc/sysconfig/ramdisk) if [ "$RRDLOG" = '' ]; then RRDLOG=/var/log/rrd @@ -13,6 +14,35 @@ fi case "$1" in start) + if [ "$FORCE" == '1' ] || [ "$(mem_amount)" -gt "490" ];then + #mount ramdisk + if ! mountpoint $RRDLOG &>/dev/null; then + boot_mesg "Mount rrd Ramdisk..." + if [ $(find "$RRDLOG" | wc -l) -ne 1 ]; then + backup_ramdisk "$RRDLOG" + fi + mount_ramdisk "$RRDLOG" + evaluate_retval + #cleanup cron + if [ -e $RRDLOG.bak/cron/new.root ]; then + if [ -e $RRDLOG.bak/cron/root ]; then + rm -f $RRDLOG.bak/cron/new.root + fi + fi + #restore old values to ramdisk if exist + restore_ramdisk "$RRDLOG" + fi + else + restore_ramdisk "$RRDLOG" + fi + # + # Move /var/spool/cron to ramdisk and make a symlink + # + if [ ! -L /var/spool/cron ]; then + mv /var/spool/cron /var/log/rrd/cron + ln -s /var/log/rrd/cron /var/spool/cron + fi + # If run from init and collectd alrady started then exit silent if [ "$(basename $0)" != "collectd" ]; then if [ "$(ps -A | grep " collectd$")" != "" ]; then @@ -106,10 +136,8 @@ case "$1" in boot_mesg "Stopping Collection daemon..." killproc /usr/sbin/collectd evaluate_retval - # Save the ramdisk at manual stop but not at shutdown - if [ "$(basename $0)" == "collectd" ]; then - /etc/init.d/tmpfs backup - fi + backup_ramdisk "$RRDLOG" + umount_ramdisk "$RRDLOG" # sync after backup... sync ;; diff --git a/src/initscripts/init.d/functions b/src/initscripts/init.d/functions index e2e058d38..ec3e512ec 100644 --- a/src/initscripts/init.d/functions +++ b/src/initscripts/init.d/functions @@ -702,4 +702,35 @@ run_subdir() { done } +mem_amount() { + local pagesize="$(getconf PAGESIZE)" + local pages="$(getconf _PHYS_PAGES)" + + echo "$(( ${pagesize} * ${pages} / 1024 / 1024 ))" +} + +mount_ramdisk() { + mount -t tmpfs none $1 +} + +umount_ramdisk() { + if mountpoint $1 &>/dev/null; then + umount $1 + fi +} + +backup_ramdisk() { + if [ ! -e $1.bak ]; then + mkdir -p $1.bak + fi + cp -pR $1/* $1.bak/ + rm -rf $1/* +} + +restore_ramdisk() { + if [ -e $1.bak ];then + cp -pR $1.bak/* $1/ + rm -rf $1.bak/* + fi +} # End $rc_base/init.d/functions diff --git a/src/initscripts/init.d/tmpfs b/src/initscripts/init.d/tmpfs deleted file mode 100644 index 2ee2ffb72..000000000 --- a/src/initscripts/init.d/tmpfs +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -# Begin $rc_base/init.d/tmpfs - -. /etc/sysconfig/rc -. $rc_functions - -eval $(/usr/local/bin/readhash /var/ipfire/main/settings) - -if [ "$RRDLOG" = '' ]; then - RRDLOG=/var/log/rrd -fi - -case "$1" in - start) - $0 restore - if [ ! -e $RRDLOG.bak/vnstat ]; then - mkdir -p $RRDLOG.bak/vnstat - fi - if [ ! -e $RRDLOG/vnstat ]; then - mkdir -p $RRDLOG/vnstat - fi - # - # create some folders - # - if [ ! -e /var/lock/subsys ]; then - mkdir -p /var/lock/subsys - fi - if [ ! -e /var/lock/time ]; then - mkdir -p /var/lock/time - chown nobody.root /var/lock/time - fi - if [ ! -e /var/run/clamav ]; then - mkdir -p /var/run/clamav - chown clamav:clamav /var/run/clamav - fi - if [ ! -e /var/run/cups ]; then - mkdir -p /var/run/cups - fi - if [ ! -e /var/run/dbus ]; then - mkdir -p /var/run/dbus - fi - if [ ! -e /var/run/mysql ]; then - mkdir -p /var/run/mysql - chown mysql:mysql /var/run/mysql - fi - if [ ! -e /var/run/saslauthd ]; then - mkdir -p /var/run/saslauthd - fi - - # - # Move /var/spool/cron to ramdisk and make a symlink - # - if [ ! -L /var/spool/cron ]; then - cp -pR /var/spool/cron /var/log/rrd.bak/cron - mv /var/spool/cron /var/log/rrd/cron - ln -s /var/log/rrd/cron /var/spool/cron - fi - - echo_ok - ;; - stop) - $0 backup - ;; - - backup) - boot_mesg "Save ramdisk..." - cp -pR $RRDLOG/* $RRDLOG.bak/ - evaluate_retval - ;; - restore) - if ! mountpoint $RRDLOG &>/dev/null; then - mount -t tmpfs -o size=64M none "$RRDLOG" - fi - - if [ -e $RRDLOG.bak/cron/new.root ]; then - if [ -e $RRDLOG.bak/cron/root ]; then - rm -f $RRDLOG.bak/cron/new.root - fi - fi - if [ -e $RRDLOG.bak ];then - boot_mesg "Restore ramdisk..." - cp -pR $RRDLOG.bak/* $RRDLOG/ - fi - ;; - - - *) - echo "Usage: $0 {start|stop|backup}" - exit 1 - ;; -esac - -# End $rc_base/init.d/tmpfs diff --git a/src/initscripts/init.d/vnstat b/src/initscripts/init.d/vnstat new file mode 100755 index 000000000..2e4a87874 --- /dev/null +++ b/src/initscripts/init.d/vnstat @@ -0,0 +1,45 @@ +#!/bin/sh +# Begin $rc_base/init.d/vnstat + +. /etc/sysconfig/rc +. $rc_functions + +eval $(/usr/local/bin/readhash /var/ipfire/main/settings) + +if [ "$VNSTATLOG" = '' ]; then + VNSTATLOG=/var/log/vnstat +fi + +case "$1" in + start) + if [ "$FORCE" == '1' ] || [ "$(mem_amount)" -gt "490" ];then + if ! mountpoint $VNSTATLOG &>/dev/null; then + boot_mesg "Mount vnstat ramdisk..." + if [ $(find "$VNSTATLOG" | wc -l) -ne 1 ]; then + backup_ramdisk "$VNSTATLOG" + fi + mount_ramdisk "$VNSTATLOG" + evaluate_retval + $0 restore + fi + else + restore_ramdisk "$VNSTATLOG" + fi + ;; + stop) + $0 backup + umount_ramdisk "$VNSTATLOG" + ;; + backup) + backup_ramdisk "$VNSTATLOG" + ;; + restore) + restore_ramdisk "$VNSTATLOG" + ;; + *) + echo "Usage: $0 {start|stop|backup}" + exit 1 + ;; +esac + +# End $rc_base/init.d/vnstat