Moving everything over to etc and random file. - stali-init - Stali init files. To be shared.
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
 (DIR) commit 376703b08351274682217cce3637326aba97c811
 (DIR) parent ee166e16177a417eedeaedae2ef20e1d4861b6ae
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Sat,  1 Mar 2014 17:35:43 +0100
       
       Moving everything over to etc and random file.
       
       /etc is too hardcoded for being changed so it will be kept.
       
       Additionally the random seed code was updated.
       
       Diffstat:
         rc.init                             |      85 +++++++++++++++++++++++--------
         rc.shutdown                         |      61 +++----------------------------
       
       2 files changed, 70 insertions(+), 76 deletions(-)
       ---
 (DIR) diff --git a/rc.init b/rc.init
       @@ -1,6 +1,6 @@
        #!/bin/busybox ash
        
       -. /cfg/rc.conf
       +. /etc/rc.conf
        
        mkdir -p /dev
        mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
       @@ -33,10 +33,10 @@ then
                mount -o remount,ro /
        fi
        
       -if [ -s /cfg/locale.conf ];
       +if [ -s /etc/locale.conf ];
        tthen
       -        printf "Reading /cfg/locale.conf.\n"
       -        eval $(cat /cfg/locale.conf)
       +        printf "Reading /etc/locale.conf.\n"
       +        eval $(cat /etc/locale.conf)
        fi
        
        if [ -n $(printf "%s" "$LANG" | grep -i utf) ];
       @@ -56,10 +56,10 @@ else
                echo 0 >| /sys/module/vt/parameters/default_utf8
        fi
        
       -if [ -s /cfg/vconsole.conf ];
       +if [ -s /etc/vconsole.conf ];
        tthen
                printf "Reading vconsole.conf.\n"
       -        eval $(cat /cfg/vconsole.conf)
       +        eval $(cat /etc/vconsole.conf)
                [ -n "$FONT" ] && CONSOLEFONT="$FONT"
                [ -n "$FONT_MAP" ] && CONSOLEMAP="$FONT_MAP"
        fi
       @@ -90,25 +90,20 @@ then
        fi
        
        printf "Running nldev.\n"
       -if [ -e /proc/self/fd ];
       -tthen
       -        rm -f /dev/fd 2>/dev/null
       -        ln -sf /proc/self/fd /dev/fd
       -fi
       -
       -nldev -b
       +nldev -kbd &
        
        printf "Loading MODULES from rc.conf.\n"
        for i in $MODULES;
        do
       -        /sbin/modprobe "${i}"
       +        busybox modprobe "${i}"
        done
        
        printf "Triggering all device events.\n"
        nltrigger add all
        
        printf "Setting up lo device.\n"
       -t[ -d /sys/class/net/lo ] && ip link set up dev lo
       +t[ -d /sys/class/net/lo ] && ifconfig lo up
       +#ip link set up dev lo
        
        t[ "$USEDMRAID" = "yes" ] && printf "Setting up dmraid.\n" && env dmraid -i -ay 
        t[ "$USEBTRFS" = "yes" ] && printf "Setting up btrfs.\n" && env btrfs device scan
       @@ -130,7 +125,7 @@ fi
        
        printf "Remounting /.\n"
        mount -o remount,rw /
       -printf "Mounting all filesystems in /cfg/fstab.\n"
       +printf "Mounting all filesystems in /etc/fstab.\n"
        mount -a
        
        t[ "$USELVM" = "yes" ] && printf "Activating lvm monitor.\n" && env vgchange --monitor y >/dev/null
       @@ -146,9 +141,9 @@ then
                then
                        printf "'%s' is not a valid timezone.\n" "${TIMEZONE}"
                else
       -                if [ ! -L /cfg/localtime ] || [ ! /cfg/localtime -ef "${zonefile}" ];
       +                if [ ! -L /etc/localtime ] || [ ! /etc/localtime -ef "${zonefile}" ];
                        then
       -                        ln -sf "${zoneinfo}" /cfg/localtime
       +                        ln -sf "${zoneinfo}" /etc/localtime
                        fi
                fi
        fi
       @@ -160,7 +155,11 @@ then
                cat $RANDOM_SEED > /dev/urandom
        else
                dd if=/dev/random of=/dev/urandom count=1 &>/dev/null
       +        touch $RANDOM_SEED
        fi
       +chmod 600 $RANDOM_SEED
       +POOL_FILE=/proc/sys/kernel/random/poolsize
       +t[ -r $POOL_FILE ] && POOL_SIZE=$(cat $POOL_FILE) || POOL_SIZE=512
        
        printf "Cleaning up /var.\n"
        if [ ! -L /var/lock ] && [ ! /var/lock -ef /run/lock ];
       @@ -175,11 +174,12 @@ then
                ln -sf /run /var/run
        fi
        
       -t[ -s /cfg/hostname ] && HOSTNAME=$(cat /cfg/hostname)
       +t[ -s /etc/hostname ] && HOSTNAME=$(cat /etc/hostname)
        if [ -n "$HOSTNAME" ];
        tthen
                printf "Setting hostname to '%s'.\n" "${HOSTNAME}"
                printf "%s\n" "$HOSTNAME" > /proc/sys/kernel/hostname
       +        hostname -F /etc/hostname
        fi
        
        printf "Storing dmesg output into /var/log/dmesg.log.\n"
       @@ -191,5 +191,50 @@ else
                chmod 0644 /var/log/dmesg.log
        fi
        
       -# next file is stali.multi
       +printf "Running sysctl.\n"
       +sysctl -p /etc/sysctl.conf &>/dev/null
       +for path in /usr/lib/sysctl.d /etc/sysctl.d /run/sysctl.d;
       +do
       +        if [ -d $path ];
       +        then
       +                for file in $(ls -1 $path);
       +                do
       +                        sysctl -p $file &>/dev/null
       +                done
       +        fi
       +done
       +
       +printf "Running binfmt.\n"
       +mountpoint -q /proc/sys/fs/binfmt_misc || \
       +        mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc
       +for path in /usr/lib/binfmt.d /etc/binfmt.d /run/binfmt.d;
       +do
       +        [ ! -d $path ] && continue;
       +        for file in $(ls -1 $path);
       +        do
       +                grep "^:" $file | \
       +                        while read -r line;
       +                        do
       +                                printf "%s" "$line" \
       +                                        > /proc/sys/fs/binfmt_misc/register
       +                        done
       +        done
       +done
       +
       +printf "Killing bootlogd.\n"
       +if [ -f /run/bootlogd.pid ];
       +tthen
       +        kill $(cat /run/bootlogd.pid)
       +        rm -f /run/bootlogd.pid
       +fi
       +t[ -e /run/boot.log ] && mv /run/boot.log /var/log/boot
       +
       +printf "Loading DELAYMODULES from rc.conf.\n"
       +for i in $DELAYMODULES;
       +do
       +        busybox modprobe "${i}"
       +done
       +
       +# next is rc.svc
       +# then is tty1 from stali.inittab
        
 (DIR) diff --git a/rc.shutdown b/rc.shutdown
       @@ -1,6 +1,6 @@
        #!/bin/busybox ash
        
       -. /cfg/rc.conf
       +. /etc/rc.conf
        
        # avoid staircase effect
        stty onlcr
       @@ -13,15 +13,10 @@ svc -k 2>&1 >/dev/null
        
        printf "Saving random seed for next boot.\n"
        RANDOM_SEED=/var/lib/misc/random-seed
       -rm -f $RANDOM_SEED
       +ttouch $RANDOM_SEED
       +chmod 600 $RANDOM_SEED
        POOL_FILE=/proc/sys/kernel/random/poolsize
       -if [ -r $POOL_FILE ];
       -tthen
       -        read POOL_SIZE < $POOL_FILE
       -        POOL_SIZE=$(($POOL_SIZE / 8))
       -else
       -        POOL_SIZE=512
       -fi
       +t[ -r $POOL_FILE ] && POOL_SIZE=$(cat $POOL_FILE) || POOL_SIZE=512
        dd if=/dev/urandom of=$RANDOM_SEED count=1 bs=$POOL_SIZE &>/dev/null
        
        printf "Halting.\n"
       @@ -32,55 +27,9 @@ halt -w
        printf "Swapoff.\n"
        swapoff -a &>/dev/null
        printf "Unmounting all filesystems.\n"
       -umount -a &>/dev/null
       +umount -a -r &>/dev/null
        
        # TODO: crypttab support
        
        t[ "$USELVM" = "yes" ] && printf "Stopping lvm completely.\n" && env vgchange --sysinit -a n
        
       -if [ -x /run/initramfs/shutdown ];
       -tthen
       -        printf "Going back to initramfs.\n"
       -        if [ $RUNLEVEL -eq 0 ];
       -        then
       -                action="poweroff"
       -        else
       -                action="reboot"
       -        fi
       -
       -        mount -o bind /run/initramfs /run/initramfs
       -
       -        mount -o private /run/initramfs
       -        mount -o private /
       -
       -        # bind all api mounts
       -        for i in sys proc dev run oldroot;
       -        do
       -                mkdir -p /run/initramfs/${i}
       -        done
       -        mount -o bind /sys /run/initramfs/sys
       -        mount -o bind /proc /run/initramfs/proc
       -        mount -o bind /dev /run/initramfs/dev
       -        mount -o bind /run /run/initramfs/run
       -
       -        cd /run/initramfs
       -        pivot_root . oldroot
       -
       -        /oldroot/sbin/init u
       -
       -        exec chroot . /shutdown $action </dev/console >/dev/console 2>&1
       -else
       -        mount -o remount,ro /
       -
       -        if [ $RUNLEVEL -eq 0 ];
       -        then
       -                printf "POWERR OFF\n"
       -                poweroff -f
       -        else
       -                printf "REBOOTING\n"
       -                env kexec -e &>/dev/null
       -                reboot -f
       -        fi
       -
       -fi
       -