]> code.ossystems Code Review - openembedded-core.git/commitdiff
initrdscripts: Simple init files for initrd/initramfs images
authorSamuel Ortiz <sameo@openedhand.com>
Wed, 10 Sep 2008 21:21:23 +0000 (21:21 +0000)
committerSamuel Ortiz <sameo@openedhand.com>
Wed, 10 Sep 2008 21:21:23 +0000 (21:21 +0000)
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5173 311d38ba-8fff-0310-9ca6-ca027cbcb966

meta/packages/initrdscripts/files/init-live.sh [new file with mode: 0644]
meta/packages/initrdscripts/initramfs-live-boot_1.0.bb [new file with mode: 0644]

diff --git a/meta/packages/initrdscripts/files/init-live.sh b/meta/packages/initrdscripts/files/init-live.sh
new file mode 100644 (file)
index 0000000..e081d44
--- /dev/null
@@ -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
diff --git a/meta/packages/initrdscripts/initramfs-live-boot_1.0.bb b/meta/packages/initrdscripts/initramfs-live-boot_1.0.bb
new file mode 100644 (file)
index 0000000..0ca962f
--- /dev/null
@@ -0,0 +1,12 @@
+DESCRIPTON = "A live image init script"
+
+SRC_URI = "file://init-live.sh"
+
+PR = "r0"
+
+do_install() {
+        install -m 0755 ${WORKDIR}/init-live.sh ${D}/init
+}
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += " /init "