diff options
Diffstat (limited to 'init')
-rw-r--r-- | init | 64 |
1 files changed, 64 insertions, 0 deletions
@@ -0,0 +1,64 @@ +#!/bin/sh -x +mkdir /sys +mkdir /proc +mkdir /tmp +mount -t sysfs sysfs /sys +mount -t proc proc /proc + +. /conf/initramfs.conf +. /scripts/functions + +# Parse command line options +init=/sbin/init +root= +ro=-r +break= +rootmnt=/root +for x in $(cat /proc/cmdline); do + case $x in + init=*) + INIT=${x#init=} + ;; + root=*) + ROOT=${x#root=} + ;; + nfsroot=*) + NFSROOT=${x#nfsroot=} + ;; + boot=*) + BOOT=${x#boot=} + ;; + ro) + ro=-r + ;; + rw) + ro=-w + ;; + break) + break=yes + ;; + esac +done + +. /scripts/${BOOT} + +# Load the modules +# FIXME - do module options here +for x in $(cat /conf/modules); do + insmod /modules/$x +done + +# Populate /dev tree +udevstart + +if [ x${break} = xyes ]; then + panic "Spawning shell within the initramfs" +fi + +mountroot + +umount /sys +umount /proc + +# Chain to real filesystem +exec run-init ${rootmnt} ${init} "$@" |