rc.init - stali-init - Stali init files. To be shared.
 (HTM) git clone git://r-36.net/stali-init
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       rc.init (5566B)
       ---
            1 #!/bin/busybox ash
            2 
            3 . /etc/rc.conf
            4 
            5 mkdir -p /dev
            6 mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
            7 touch /dev/mdev.log
            8 mkdir -p /dev/pts
            9 mountpoint -q /dev/pts || mount -n -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec,noatime
           10 bootlogd -c -l /run/boot.log -p /run/bootlogd.pid
           11 
           12 printf "\n\n"
           13 printf "         sta.li\n"
           14 printf "\n\n"
           15 
           16 printf "Mounting base filesystems.\n"
           17 mkdir -p /proc
           18 mkdir -p /sys
           19 mkdir -p /run
           20 mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev
           21 mountpoint -q /sys || mount -t sysfs sys /sys -o nosuid,noexec,nodev
           22 mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev
           23 
           24 mkdir -p -m 1777 /run/lock
           25 mkdir -p /dev/shm
           26 mountpoint -q /dev/shm || mount -n -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev,noatime
           27 
           28 ln -s /proc/self/fd /dev/fd
           29 
           30 mountpoint -q /sys/fs/cgroup || mount -n -t cgroup nodev /sys/fs/cgroup
           31 
           32 if [ ! -e /run/initramfs/fsck-root ];
           33 then
           34         printf "Remounting root ro.\n"
           35         mount -o remount,ro /
           36 fi
           37 
           38 if [ -s /etc/locale.conf ];
           39 then
           40         printf "Reading /etc/locale.conf.\n"
           41         eval $(cat /etc/locale.conf)
           42 fi
           43 
           44 if [ -n $(printf "%s" "$LANG" | grep -i utf) ];
           45 then
           46         printf "Setting ttys to be UTF-8.\n"
           47         for i in /dev/tty[0-9]*; do
           48                 kbd_mode -u < ${i} &>/dev/null
           49                 printf "\e%%G" > ${i} &>/dev/null
           50         done
           51         echo 1 >| /sys/module/vt/parameters/default_utf8
           52 else
           53         printf "Setting ttys to legacy.\n"
           54         for i in /dev/tty[0-9]*; do
           55                 kbd_mode -a < ${i} &>/dev/null
           56                 printf "\e%%@" > ${i} &>/dev/null
           57         done
           58         echo 0 >| /sys/module/vt/parameters/default_utf8
           59 fi
           60 
           61 if [ -s /etc/vconsole.conf ];
           62 then
           63         printf "Reading vconsole.conf.\n"
           64         eval $(cat /etc/vconsole.conf)
           65         [ -n "$FONT" ] && CONSOLEFONT="$FONT"
           66         [ -n "$FONT_MAP" ] && CONSOLEMAP="$FONT_MAP"
           67 fi
           68 
           69 [ -n "$KEYMAP" ] && loadkeys -q "$KEYMAP"
           70 
           71 HWCLOCK_PARAMS="-s"
           72 case $HARDWARECLOCK in
           73         "")
           74                 ;;
           75         UTC)
           76                 HWCLOCK_PARAMS="${HWCLOCK_PARAMS} -u"
           77                 ;;
           78         localtime)
           79                 HWCLOCK_PARAMS="${HWCLOCK_PARAMS} -l"
           80                 ;;
           81         *)
           82                 HWCLOCK_PARAMS=""
           83                 ;;
           84 esac
           85 
           86 if [ -n "$HWCLOCK_PARAMS" ];
           87 then
           88         printf "Setting hwclock.\n"
           89         [ -n "$TIMEZONE" ] && export TZ="$TIMEZONE"
           90         hwclock $HWCLOCK_PARAMS
           91         unset TZ
           92 fi
           93 
           94 printf "Running nldev.\n"
           95 nldev -kbd &
           96 
           97 printf "Loading MODULES from rc.conf.\n"
           98 for i in $MODULES;
           99 do
          100         busybox modprobe "${i}"
          101 done
          102 
          103 printf "Triggering all device events.\n"
          104 nltrigger add all
          105 
          106 printf "Setting up lo device.\n"
          107 [ -d /sys/class/net/lo ] && ifconfig lo up
          108 #ip link set up dev lo
          109 
          110 [ "$USEDMRAID" = "yes" ] && printf "Setting up dmraid.\n" && env dmraid -i -ay 
          111 [ "$USEBTRFS" = "yes" ] && printf "Setting up btrfs.\n" && env btrfs device scan
          112 [ "$USELVM" = "yes" ] && printf "Setting up lvm.\n" && env vgchange --sysinit -a y >/dev/null
          113 
          114 # TODO: crypttab support
          115 
          116 if [ ! -e /fastboot ];
          117 then
          118         printf "Running fsck -ATa.\n"
          119         fsck -ATa
          120         if [ $? -gt 1 ];
          121         then
          122                 printf "Filesystem errors exist. Please fix manually.\n"
          123                 /bin/busybox ash
          124                 reboot
          125         fi
          126 fi
          127 
          128 printf "Remounting /.\n"
          129 mount -o remount,rw /
          130 printf "Mounting all filesystems in /etc/fstab.\n"
          131 mount -a
          132 
          133 [ "$USELVM" = "yes" ] && printf "Activating lvm monitor.\n" && env vgchange --monitor y >/dev/null
          134 
          135 printf "Activating swap.\n"
          136 swapon -a &
          137 
          138 if [ -n "$TIMEZONE" ];
          139 then
          140         printf "Setting local timezone to '%s',\n" "${TIMEZONE}"
          141         local zonefile="/usr/share/zoneinfo/${TIMEZONE}"
          142         if [ ! -e "${zonefile}" ];
          143         then
          144                 printf "'%s' is not a valid timezone.\n" "${TIMEZONE}"
          145         else
          146                 if [ ! -L /etc/localtime ] || [ ! /etc/localtime -ef "${zonefile}" ];
          147                 then
          148                         ln -sf "${zoneinfo}" /etc/localtime
          149                 fi
          150         fi
          151 fi
          152 
          153 printf "Applying random seed to /dev/urandom.\n"
          154 RANDOM_SEED=/var/lib/misc/random-seed
          155 if [ -s $RANDOM_SEED ];
          156 then
          157         cat $RANDOM_SEED > /dev/urandom
          158 else
          159         dd if=/dev/random of=/dev/urandom count=1 &>/dev/null
          160         touch $RANDOM_SEED
          161 fi
          162 chmod 600 $RANDOM_SEED
          163 POOL_FILE=/proc/sys/kernel/random/poolsize
          164 [ -r $POOL_FILE ] && POOL_SIZE=$(cat $POOL_FILE) || POOL_SIZE=512
          165 
          166 printf "Cleaning up /var.\n"
          167 if [ ! -L /var/lock ] && [ ! /var/lock -ef /run/lock ];
          168 then
          169         rm -rf /var/lock 2>/dev/null
          170         ln -sf /run/lock /var/lock
          171 fi
          172 
          173 if [ ! -L /var/run ] && [ ! /var/run -ef /run ];
          174 then
          175         rm -rf /var/run 2>/dev/null
          176         ln -sf /run /var/run
          177 fi
          178 
          179 [ -s /etc/hostname ] && HOSTNAME=$(cat /etc/hostname)
          180 if [ -n "$HOSTNAME" ];
          181 then
          182         printf "Setting hostname to '%s'.\n" "${HOSTNAME}"
          183         printf "%s\n" "$HOSTNAME" > /proc/sys/kernel/hostname
          184         hostname -F /etc/hostname
          185 fi
          186 
          187 printf "Storing dmesg output into /var/log/dmesg.log.\n"
          188 env dmesg > /var/log/dmesg.log
          189 if [ -e /proc/sys/kernel/dmesg_restrict ] && [ $(cat /proc/sys/kernel/dmesg_restrict) = "1" ];
          190 then
          191         chmod 0600 /var/log/dmesg.log
          192 else
          193         chmod 0644 /var/log/dmesg.log
          194 fi
          195 
          196 printf "Running sysctl.\n"
          197 sysctl -p /etc/sysctl.conf &>/dev/null
          198 for path in /usr/lib/sysctl.d /etc/sysctl.d /run/sysctl.d;
          199 do
          200         if [ -d $path ];
          201         then
          202                 for file in $(ls -1 $path);
          203                 do
          204                         sysctl -p $file &>/dev/null
          205                 done
          206         fi
          207 done
          208 
          209 printf "Running binfmt.\n"
          210 mountpoint -q /proc/sys/fs/binfmt_misc || \
          211         mount -t binfmt_misc binfmt /proc/sys/fs/binfmt_misc
          212 for path in /usr/lib/binfmt.d /etc/binfmt.d /run/binfmt.d;
          213 do
          214         [ ! -d $path ] && continue;
          215         for file in $(ls -1 $path);
          216         do
          217                 grep "^:" $file | \
          218                         while read -r line;
          219                         do
          220                                 printf "%s" "$line" \
          221                                         > /proc/sys/fs/binfmt_misc/register
          222                         done
          223         done
          224 done
          225 
          226 printf "Killing bootlogd.\n"
          227 if [ -f /run/bootlogd.pid ];
          228 then
          229         kill $(cat /run/bootlogd.pid)
          230         rm -f /run/bootlogd.pid
          231 fi
          232 [ -e /run/boot.log ] && mv /run/boot.log /var/log/boot
          233 
          234 printf "Loading DELAYMODULES from rc.conf.\n"
          235 for i in $DELAYMODULES;
          236 do
          237         busybox modprobe "${i}"
          238 done
          239 
          240 # next is rc.svc
          241 # then is tty1 from stali.inittab
          242