diff options
author | Samuel Ortiz <sameo@openedhand.com> | 2008-09-10 21:21:23 +0000 |
---|---|---|
committer | Samuel Ortiz <sameo@openedhand.com> | 2008-09-10 21:21:23 +0000 |
commit | 9bdc5a0129276ccb9c3458ddc2351c9db2f11a62 (patch) | |
tree | cf6032adb16262207a318898d88dd6a929dbb4ab /meta/packages/initrdscripts/files | |
parent | 71a2e0d41d783d79873052f7999a7b6f7b039d2d (diff) | |
download | openembedded-core-9bdc5a0129276ccb9c3458ddc2351c9db2f11a62.tar.gz openembedded-core-9bdc5a0129276ccb9c3458ddc2351c9db2f11a62.tar.bz2 openembedded-core-9bdc5a0129276ccb9c3458ddc2351c9db2f11a62.tar.xz openembedded-core-9bdc5a0129276ccb9c3458ddc2351c9db2f11a62.zip |
initrdscripts: Simple init files for initrd/initramfs images
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5173 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'meta/packages/initrdscripts/files')
-rw-r--r-- | meta/packages/initrdscripts/files/init-live.sh | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/meta/packages/initrdscripts/files/init-live.sh b/meta/packages/initrdscripts/files/init-live.sh new file mode 100644 index 000000000..e081d44dd --- /dev/null +++ b/meta/packages/initrdscripts/files/init-live.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +ROOT_MOUNT="/rootfs/" +ROOT_IMAGE=rootfs.img +MOUNT="/bin/mount" +UMOUNT="/bin/umount" + +early_setup() { + mkdir /proc + mount -t proc proc /proc + udevd --daemon +} + +read_args() { + [ -z "$CMDLINE" ] && CMDLINE=`cat /proc/cmdline` + for arg in $CMDLINE; do + optarg=`expr "x$arg" : 'x[^=]*=\(.*\)'` + case $arg in + root=*) + ROOT_DEVICE=$optarg ;; + rootfstype=*) + ROOT_FSTYPE=$optarg ;; + rootdelay=*) + rootdelay=$optarg ;; + esac + done +} + +boot_live_root() { + killall udevd + cd $ROOT_MOUNT + exec switch_root -c /dev/console $ROOT_MOUNT /sbin/init +} + +fatal() { + echo $1 >$CONSOLE + echo >$CONSOLE + exec sh +} + +echo "Starting initramfs boot..." +early_setup + +[ -z "$CONSOLE" ] && CONSOLE="/dev/console" + +read_args + +echo "Waiting for Live image to show up..." +while true +do + for i in `ls /media 2>/dev/null`; do + if [ -f /media/$i/$ROOT_IMAGE ] ; then + found="yes" + fi + done + if [ "$found" = "yes" ]; then + break; + fi + sleep 1 +done + +mkdir $ROOT_MOUNT +mknod /dev/loop0 b 7 0 + +if ! $MOUNT -o rw,loop,noatime,nodiratime /media/$i/$ROOT_IMAGE $ROOT_MOUNT +then + fatal "Couldnt mount rootfs image" +else + boot_live_root +fi |