#!/bin/sh # vi: ts=4 noexpandtab # # This is the initramfs init script ROOTFS_LABEL="cirros-rootfs" . /lib/cirros/shlib mkdir -p /proc /newroot /dev /tmp mount -t devtmpfs /dev /dev mount -t proc /proc /proc echo "6 4 1 7" >/proc/sys/kernel/printk parse_cmdline for x in $KC_CONSOLES; do [ "$x" = "$KC_CONSOLE" ] || echo "further output written to $KC_CONSOLE" > "$x"; done if [ -n "$KC_PREF_CONSOLE" ]; then exec >"$KC_PREF_CONSOLE" 2>&1 <"$KC_PREF_CONSOLE" fi read uptime cputime < /proc/uptime iinfo "initramfs: up at $uptime" idebug "loading modules" /etc/init.d/load-modules start ROOT="" MOUNTED="" if [ "$KC_RAMDISK_ROOT" != "1" ]; then while read maj min blk name other; do [ -n "${maj}" -a "${maj}" != "major" ] || continue umount=0 mount -o ro "/dev/${name}" "/newroot" >/dev/null 2>&1 && MOUNTED="$MOUNTED ${name}" && umount=1 && [ -x /newroot/sbin/init ] && ROOT="/dev/$name" && break [ ${umount} -eq 0 ] || umount /newroot done < /proc/partitions fi if [ "$KC_DEBUG" = "1" ]; then echo "dropping into initramfs debug shell" /bin/sh fi if [ -z "$ROOT" -a "$KC_RAMDISK_ROOT" != "1" ] && blank=$(blkid -l -o device -t LABEL=$ROOTFS_LABEL) && [ -e "$blank" ]; then iinfo "copying initramfs to $blank" items="" set +f for x in /*; do case "$x" in /dev|/proc|/newroot) : ;; *) items="$items $x";; esac done set -f mount "$blank" /newroot mkdir -p /newroot/dev /newroot/proc cp -a $items /newroot/ cp -a /dev/console /newroot/dev mount -o remount,ro /newroot ROOT="$blank" fi if [ -n "$ROOT" ]; then cd /newroot mount -o move /dev ./dev umount /proc iinfo "initramfs loading root from $ROOT" exec switch_root /newroot "$KC_INIT" "$@" else while read maj min blk name other; do [ -n "${maj}" -a "${maj}" != "major" ] || continue umount=0 mount -o ro "/dev/${name}" "/newroot" >/dev/null 2>&1 && umount=1 && [ -x /newroot/sbin/init ] && ROOT="/dev/$name" && break [ ${umount} -eq 0 ] || umount /newroot done < /proc/partitions umount /proc [ "$KC_RAMDISK_ROOT" = "0" ] && iinfo "initramfs did not find root, running as ramdisk" || iinfo "running in ramdisk mode as requested" exec "$KC_INIT" "$@" fi failure "badness occurred in ramdisk"