#!/bin/sh . /lib/dracut-lib.sh [ -f /tmp/root.info ] && . /tmp/root.info PATH=/usr/sbin:/usr/bin:/sbin:/bin [ -z "$1" ] && exit 1 livedev="$1" # Create live tree mkdir -m 0755 -p /live/distrib mkdir -m 0755 -p /live/media mkdir -m 0755 -p /live/overlay mkdir -m 0755 -p /live/union mkdir -m 0755 -p /run/mgalive/ovlsize # Get the base device name basedev=$(echo $livedev | sed 's,\(/dev/sd[a-z]\)1,\1,g') # Make it available to draklive-install and mgalive-shutdown echo $basedev > /run/mgalive/basedev # Get the base directory for locating the loopback file. In normal use this is # the root directory, but a multi-boot USB stick may want to override this. basedir=$(getarg mgalive.basedir) # Get the device or path used for persistent storage (if it exists). In normal # use this is another partition on the same base device, but a multi-boot USB # stick may want to override this. overlay=$(getarg mgalive.overlay) if [ -z "$overlay" ] ; then overlay=`blkid -t LABEL=mgalive-persist -o device | grep $basedev` else overlay=$livedev$overlay fi if [ -z "$basedir" -a -z "$overlay" ] ; then # Fix udev isohybrid LABEL issues (mga #3334) # (things have moved on - this may not be needed now) media=$basedev else media=$livedev fi info "mgalive basedev is $basedev" info "mgalive livedev is $livedev" info "mgalive basedir is $basedir/" info "mgalive overlay is $overlay" # Mount the live media mount -n -o ro $media /live/media # Mount the loopback filesystem LOOPDEV=$( losetup -f ) if [ -e /live/media$basedir/loopbacks/distrib-lzma.sqfs ] ; then # Retain support for the original draklive. Note that despite the file # name, it uses xz compression. losetup -r $LOOPDEV /live/media$basedir/loopbacks/distrib-lzma.sqfs else losetup -r $LOOPDEV /live/media$basedir/loopbacks/distrib.sqfs fi mount -n -t squashfs -o ro $LOOPDEV /live/distrib mount -n -t squashfs -o ro $LOOPDEV /run/mgalive/ovlsize # Mount the overlay filesystem if [ -z "$overlay" ] ; then mount -n -t tmpfs -o mode=755 none /live/overlay else mount -n -o noatime $overlay /live/overlay fi # work and memory must be on same root mkdir -m 0755 -p /live/overlay/work mkdir -m 0755 -p /live/overlay/memory mount -n -t overlay overlay -o lowerdir=/live/distrib,upperdir=/live/overlay/memory,workdir=/live/overlay/work,noatime /live/union ln -s /live/union /dev/root printf '/bin/mount --rbind /live/union %s\n' "$NEWROOT" > $hookdir/mount/01-$$-live.sh printf '/bin/umount /live/union\n' >> $hookdir/mount/01-$$-live.sh # /live will not be visible once we pivot, so schedule its cleanup now. # This is needed to allow a persistent overlay to be shutdown cleanly. umount -l /live/distrib umount -l /live/overlay umount -l /live/media need_shutdown exit 0