initrdscripts: init can now launch the installation script

Depending on the boot label ("boot" or "install"), init will either 
chroot into the rootfs image (live boot path), or launch the 
installation script (installation path).


git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5457 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
Samuel Ortiz
2008-10-08 14:34:50 +00:00
parent 460d93416d
commit 62ece10eb1

View File

@@ -7,7 +7,9 @@ UMOUNT="/bin/umount"
early_setup() {
mkdir /proc
mkdir /sys
mount -t proc proc /proc
mount -t sysfs sysfs /sys
udevd --daemon
}
@@ -22,6 +24,12 @@ read_args() {
ROOT_FSTYPE=$optarg ;;
rootdelay=*)
rootdelay=$optarg ;;
LABEL=*)
label=$optarg ;;
video=*)
video_mode=$optarg ;;
vga=*)
vga_mode=$optarg ;;
esac
done
}
@@ -38,14 +46,13 @@ fatal() {
exec sh
}
echo "Starting initramfs boot..."
early_setup
[ -z "$CONSOLE" ] && CONSOLE="/dev/console"
read_args
echo "Waiting for Live image to show up..."
echo "Waiting for removable media..."
while true
do
for i in `ls /media 2>/dev/null`; do
@@ -59,12 +66,26 @@ do
sleep 1
done
mkdir $ROOT_MOUNT
mknod /dev/loop0 b 7 0
case $label in
boot)
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
;;
install)
if [ -f /media/$i/$ROOT_IMAGE ] ; then
./install.sh $i $ROOT_IMAGE $video_mode $vga
else
fatal "Couldnt find install script"
fi
# If we're getting here, we failed...
fatal "Installation image failed"
;;
esac
if ! $MOUNT -o rw,loop,noatime,nodiratime /media/$i/$ROOT_IMAGE $ROOT_MOUNT
then
fatal "Couldnt mount rootfs image"
else
boot_live_root
fi