diff options
Diffstat (limited to 'recipes/slugos-init/files/boot/ram')
-rw-r--r-- | recipes/slugos-init/files/boot/ram | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/recipes/slugos-init/files/boot/ram b/recipes/slugos-init/files/boot/ram new file mode 100644 index 0000000000..0a8fe1d25d --- /dev/null +++ b/recipes/slugos-init/files/boot/ram @@ -0,0 +1,64 @@ +#!/bin/sh +# boot from the hard disk partition "$1" (which +# must be given) using options from the rest of +# the command line. + +# Use the standard init path (see /etc/init.d/rcS) +export PATH=/sbin:/bin:/usr/sbin:/usr/bin + +# Mount required fileystems if necessary +[ -e /proc/cpuinfo ] || mount -t proc proc /proc +[ -e /sys/class ] || mount -t sysfs sysfs /sys + +# Load the helper functions +. /etc/default/functions + +leds beep -r 2 +leds boot system + +if test -n "$1" +then + device="$1" + shift + echo "boot: rootfs: mount $* $device" + + # prepare the device. This uses tmpfs to avoid dependency + # on non-built-in file systems and because tmpfs can expand + # to bigger than the 10MByte ram0 partition used before. + # The 'device' is currently unused. + if mount -t tmpfs "$@" tmpfs /mnt + then + cd / + # filter out boot (with zimage), linuxrc and anything + # below /var, keep dev or the boot will fail. Take + # care that nothing is mounted at this point! + umount /proc + umount /sys + find . -xdev -print | + sed '\@^./boot/@d;\@^./boot$@d;\@^./linuxrc@d;\@^./var/@d' | + cpio -p -d -m -u /mnt + # busybox find with -xdev will not print the name of the + # mountpoint, so create the empty dir manually if required. + test -d /mnt/mnt || mkdir /mnt/mnt + # checkmount checks for sh, chroot, init, /dev + # and /mnt (i.e. /mnt/mnt in this case). + # minimaldevnodes checks (and creates if required) + # a few mandatory /dev nodes we may need. + if checkmount /mnt && minimaldevnodes /mnt + then + # pivot to /mnt + cd / + swivel mnt mnt + # swivel failed + fi + # Failure: unmount the partition + umount /mnt + # Remount /proc and /sys if necessary + [ -e /proc/cpuinfo ] || mount -t proc proc /proc + [ -e /sys/class ] || mount -t sysfs sysfs /sys + fi +fi + +# fallback - use the flash boot +leds beep -f 1000 -r 2 +exec /boot/flash |