--- /dev/null
+#!/bin/sh
+
+# fstab: lists filesystems, this file is not changed from it's usual
+# format, and is used as such
+#
+# rc.sysinit: done once at start time. responsible for performing any
+# necessary early system initialization. This reads rc.conf for some
+# of its actions
+
+#PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+. /etc/rc.d/functions.rc
+. /etc/rc.conf
+
+# * load any kernel modules needed
+
+# TODO check for /etc/fstab
+# write one if missing?
+
+# need to mount sys because fsck might use it
+# try to mount them directly if they fail from fstab?
+# TODO bail to emergency shell if these fail?
+# try to mount them directly if they fail from fstab?
+# TODO bail to emergency shell if these fail?
+status_begin mounting virtual filesystems
+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 /var/run || mount -t tmpfs run /var/run -o mode=0755,nosuid,nodev
+mountpoint -q /dev || mount -t devtmpfs dev /dev -o mode=0755,nosuid
+mkdir -p /dev/{pts,shm}
+mountpoint -q /dev/pts || mount -t devpts devpts /dev/pts -o mode=0620,gid=5,nosuid,noexec
+mountpoint -q /dev/shm || mount -t tmpfs shm /dev/shm -o mode=1777,nosuid,nodev
+# and make sure they all passed
+mountpoint -q /proc &&
+mountpoint -q /sys &&
+mountpoint -q /var/run &&
+mountpoint -q /dev &&
+mountpoint -q /dev/pts &&
+mountpoint -q /dev/shm
+status_check
+
+#status_begin mounting virtual filesystems
+#mount /proc &&
+#mount /sys &&
+#mount /dev
+#status_check
+
+# * set the host name
+status_begin Setting hostname
+hostname ${HOSTNAME:=$(uname -s)}
+status_check
+
+# TODO should probably bail out if the /sys mount fails
+
+# TODO decide if the loopback network interface should be done here or later
+# I think later, it's not actually necessary
+
+# * sysctl
+
+status_begin loading sysctl.conf
+sysctl -q -p
+status_check
+
+# * set up /dev (via udev on modern linux systems)
+
+##
+## begin voodoo scripting from lfs-initscripts
+##
+
+# udev will handle hotplugs
+echo > /proc/sys/kernel/hotplug
+
+# start udev
+# this should probably be moved to inittab or started via
+# something that could monitor it
+status_starting udevd daemon
+/lib/udev/udevd --daemon
+status_check
+
+# Now traverse /sys in order to "coldplug" devices that have
+# already been discovered
+# this is going to fail if sys isn't mounted
+status_begin populating udevadm triggers
+udevadm trigger --action=add --type=subsystems &&
+udevadm trigger --action=add --type=devices &&
+udevadm trigger --action=change --type=devices
+status_check
+
+# Now wait for udevd to process the uevents we triggered
+# if ! is_true "$OMIT_UDEV_SETTLE"; then
+status_begin waiting for udevadm to settle
+udevadm settle
+status_check
+# fi
+
+# If any LVM based partitions are on the system, ensure they
+# are activated so they can be used.
+# if [ -x /sbin/vgchange ]; then /sbin/vgchange -a y >/dev/null; fi
+
+# log_success_msg2
+
+##
+## end voodoo scripting
+##
+
+# * set up swap
+
+swapon -a
+
+# * fsck and mount filesystems
+
+status_starting fsck of /
+mount -o remount,ro /
+fsck -AT
+# TODO actually check the return value
+mount -o remount,rw /
+status_check
+
+# mount any remaining filesystems
+status_begin mounting remaining filesystems
+mount -a -t noproc,sysfs,devtmpfs,devpts
+status_check
+
+rm -f /etc/mtab
+mount -af
+
+# * do any boot time /tmp cleanup or similar
+
+# * do any utmp/wtmp initialization needed
+
+touch /var/run/utmp
+touch /var/log/wtmp
+
+# * configure the console
+
+# * set timezone and clock
+
+status_begin setting system clock from hardware clock
+hwclock -s
+status_check