aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/initrdscripts/initramfs-framework/setup-live
blob: 7e92f93322b27f51da4c4c585ef84179a91c54fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/bin/sh
# Copyright (C) 2011 O.S. Systems Software LTDA.
# Licensed on MIT

setup_enabled() {
	return 0
}

setup_run() {
ROOT_IMAGE="rootfs.img"
ISOLINUX=""
ROOT_DISK=""
shelltimeout=30

	if [ -z "$bootparam_root" -o "$bootparam_root" = "/dev/ram0" ]; then
		echo "Waiting for removable media..."
		C=0
		while true
		do
		  for i in `ls /run/media 2>/dev/null`; do
		      if [ -f /run/media/$i/$ROOT_IMAGE ] ; then
				found="yes"
				ROOT_DISK="$i"
				break
			  elif [ -f /run/media/$i/isolinux/$ROOT_IMAGE ]; then
				found="yes"
				ISOLINUX="isolinux"
				ROOT_DISK="$i"
				break
		      fi
		  done
		  if [ "$found" = "yes" ]; then
		      break;
		  fi
		  # don't wait for more than $shelltimeout seconds, if it's set
		  if [ -n "$shelltimeout" ]; then
		      echo -n " " $(( $shelltimeout - $C ))
		      if [ $C -ge $shelltimeout ]; then
		           echo "..."
			   echo "Mounted filesystems"
		           mount | grep media
		           echo "Available block devices"
		           cat /proc/partitions
		           fatal "Cannot find $ROOT_IMAGE file in /run/media/* , dropping to a shell "
		      fi
		      C=$(( C + 1 ))
		  fi
		  sleep 1
		done
		# The existing rootfs module has no support for rootfs images. Assign the rootfs image.
		bootparam_root="/run/media/$ROOT_DISK/$ISOLINUX/$ROOT_IMAGE"
	fi

	if [ "$bootparam_LABEL" != "boot" -a -f /init.d/$bootparam_LABEL.sh ] ; then
		if [ -f /run/media/$i/$ISOLINUX/$ROOT_IMAGE ] ; then
		    ./init.d/$bootparam_LABEL.sh $i/$ISOLINUX $ROOT_IMAGE $video_mode $vga_mode $console_params
		else
		    fatal "Could not find $bootparam_LABEL script"
		fi

		# If we're getting here, we failed...
		fatal "Target $bootparam_LABEL failed"
	fi
}