From 9bdc5a0129276ccb9c3458ddc2351c9db2f11a62 Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Wed, 10 Sep 2008 21:21:23 +0000 Subject: 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 --- meta/packages/initrdscripts/files/init-live.sh | 70 ++++++++++++++++++++++ .../initrdscripts/initramfs-live-boot_1.0.bb | 12 ++++ 2 files changed, 82 insertions(+) create mode 100644 meta/packages/initrdscripts/files/init-live.sh create mode 100644 meta/packages/initrdscripts/initramfs-live-boot_1.0.bb (limited to 'meta/packages/initrdscripts') diff --git a/meta/packages/initrdscripts/files/init-live.sh b/meta/packages/initrdscripts/files/init-live.sh new file mode 100644 index 0000000000..e081d44dd0 --- /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 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 index 0000000000..0ca962f03e --- /dev/null +++ b/meta/packages/initrdscripts/initramfs-live-boot_1.0.bb @@ -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 " -- cgit v1.2.3-54-g00ecf