#!/bin/sh # vim: set ts=4 sw=4 et: emergency_shell() { echo "Cannot continue due to errors above, starting emergency shell." echo "When ready type exit to continue booting." /bin/sh -l } msg() { # bold printf "\033[1m=> $@\033[m" } msg_ok() { # bold/green printf "\033[1m\033[32m OK\033[m\n" } msg_fail() { # bold/red printf "\033[1m\033[31m FAIL\033[m\n" } msg_warn() { # bold/yellow printf "\033[1m\033[33mWARNING: $@\033[m" } PATH=/usr/bin:/usr/sbin msg "Welcome to Void!\n" . /etc/rc.conf msg "Mounting pseudo-filesystems...\n" mountpoint -q /proc || mount -t proc proc /proc -o nosuid,noexec,nodev mountpoint -q /sys || mount -t sysfs sys /sys -o nosuid,noexec,nodev mountpoint -q /run || mount -t tmpfs run /run -o mode=0755,nosuid,nodev mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid mkdir -p -m0755 /run/runit /run/lvm /run/user /dev/pts /dev/shm mountpoint -q /dev/pts || mount -n -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec mountpoint -q /dev/shm || mount -n -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev msg "Remounting rootfs read-only...\n" mount -o remount,ro / msg "Setting up ttys to unicode mode...\n" for i in /dev/tty[0-6]; do unicode_start < $i done if [ -n "$FONT" ]; then msg "Setting up ttys font to '${FONT}'...\n" for i in /dev/tty[0-6]; do setfont ${FONT_MAP:+-m $FONT_MAP} ${FONT_UNIMAP:+-u $FONT_UNIMAP} $FONT -C $i done fi msg "Setting up keymap to '${KEYMAP:-us}'...\n" loadkeys -q -u ${KEYMAP:-us} if [ -n "$HARDWARECLOCK" ]; then msg "Setting up RTC to '${HARDWARECLOCK}'...\n" TZ=$TIMEZONE hwclock --systz \ ${HARDWARECLOCK:+--$(echo $HARDWARECLOCK |tr A-Z a-z) --noadjfile} fi if [ -x /usr/lib/systemd/systemd-udevd ]; then _udevd=/usr/lib/systemd/systemd-udevd elif [ -x /usr/sbin/udevd ]; then _udevd=/usr/sbin/udevd else msg_warn "cannot find udevd!\n" fi if [ -n "${_udevd}" ]; then msg "Starting udev and waiting for devices to settle...\n" { ${_udevd} --daemon; udevadm trigger --action=add --type=subsystems; udevadm trigger --action=add --type=devices; udevadm settle; } || emergency_shell fi msg "Setting up loopback interface...\n" ip link set up dev lo if [ -n "$HOSTNAME" ]; then echo "$HOSTNAME" > /proc/sys/kernel/hostname elif [ -r /etc/hostname ]; then HOSTNAME=$(cat /etc/hostname) echo "$HOSTNAME" > /proc/sys/kernel/hostname fi msg "Setting up hostname to '${HOSTNAME}'...\n" if [ -x /usr/sbin/dmraid ]; then msg "Activating dmraid devices...\n" /usr/sbin/dmraid -i -ay fi if [ -x /usr/bin/btrfs ]; then msg "Activating btrfs devices...\n" btrfs device scan fi if [ -x /usr/sbin/vgchange ]; then msg "Activating LVM devices...\n" vgchange --sysinit -a y fi msg "Checking filesystems:\n" fsck -A -T -a -t noopts=_netdev rval=$? if [ $rval -gt 1 ]; then emergency_shell fi msg "Mounting rootfs read-write...\n" mount -o remount,rw / msg "Mounting all non-network filesystems...\n" mount -a -t "nosysfs,nonfs,nonfs4,nosmbfs,nocifs" -O no_netdev mountpoint -q /sys/fs/cgroup || mount -t tmpfs cgroup /sys/fs/cgroup -o mode=0755 awk '$4==1 { system("mountpoint -q /sys/fs/cgroup/" $1 " || mount -t cgroup -o " $1 ",x-mount.mkdir cgroup /sys/fs/cgroup/" $1) }' /proc/cgroups msg "Initializing swap...\n" swapon -a if [ -n "$TIMEZONE" ]; then msg "Setting up timezone to '${TIMEZONE}'...\n" ln -sf "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime fi msg "Initializing random seed...\n" cp /var/lib/random-seed /dev/urandom >/dev/null 2>&1 || true ( umask 077; dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=512 >/dev/null 2>&1 ) install -m0664 -o root -g utmp /dev/null /run/utmp rm -f /etc/nologin /forcefsck /forcequotacheck /fastboot if [ -n "$MODULES" ]; then msg "Loading kernel modules: ${MODULES} ...\n" modprobe -ab ${MODULES} fi dmesg >/var/log/dmesg.log install -m0 /dev/null /etc/runit/reboot install -m0 /dev/null /etc/runit/stopit msg "Initialization complete, running stage 2...\n"