+++ /dev/null
-#!/bin/sh
-
-set -e
-
-# Read cmdline
-for _PARAMETER in $(cat /proc/cmdline)
-do
- case "${_PARAMETER}" in
- module=*)
- _MODULE="${_PARAMETER#module=}"
- ;;
- esac
-done
-
-# Assemble filesystems
-if [ -z "${_MODULE}" ]
-then
- _FILESYSTEMS="/live/image/live/filesystem.squashfs"
-else
- for _FILESYSTEM in _MODULE
- do
- _FILESYSTEMS="${_FILESYSTEMS} /live/image/live/${_FILESYSTEM}"
- done
-fi
-
-# Exit if system is not debian live
-if [ ! -d /live/image ]
-then
- echo "E: live-toram only works on Debian Live systems."
-
- exit 1
-fi
-
-# Exit if filesystem not accessible
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
- if [ ! -r ${_FILESYSTEM} ]
- then
- echo "E: ${_FILESYSTEM}: No such file"
- echo "I: live-toram already run?"
-
- exit 1
- fi
-done
-
-# Exit if user is unprivileged
-if [ "$(id -u)" -ne 0 ]
-then
- echo "E: need root privileges"
-
- exit 1
-fi
-
-# Exit if not enough free memory
-_SIZE=0
-
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
- _SIZE="$((${_SIZE} + $(du ${_FILESYSTEM} | awk '{ print $1 }')))"
- _MEMORY="$(awk '/MemFree/ { print $2 }' /proc/meminfo)"
-done
-
-case ${@} in
- -f|--force)
- echo "W: Ignoring memory constrains as requested"
- ;;
-
- *)
- if [ $_MEMORY -lt $_SIZE ]
- then
- echo "E: not enough free memory available."
- echo "I: images need ${_SIZE}kB, free memory is ${_MEMORY}kB."
-
- exit 1
- fi
- ;;
-esac
-
-# Copying image to memory
-echo "P: Copying images to memory."
-echo "P: This may take a while..."
-
-# FIXME: doesn't work with multiple filesystems
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
- if [ ! -x "$(which rsync 2>/dev/null)" ]
- then
- rsync -a --progress ${_FILESYSTEM} /tmp/live
- else
- cp -av ${_FILESYSTEM} /tmp/live
- fi
-
-LANGUAGE=C LANG=C LC_ALL=C perl << EOF
-open LOOP, '</dev/loop0' or die $!;
-open DEST, '</tmp/live' or die $!;
-ioctl(LOOP, 0x4C06, fileno(DEST)) or die $!
-close LOOP;
-close DEST;
-EOF
-
-done
-
-# Unmounting live media
-_DEVICE="$(awk '/\/live\/image / { print $1 }' /proc/mounts)"
-
-if [ -d /live/image ]
-then
- umount /live/image
- rmdir --ignore-fail-on-non-empty /live/image || true
-fi
-
-# Ejecting live media if it is not an optical device
-if [ "$(expr substr ${_DEVICE} 1 2)" != "sd" ] && \
- ! readlink /sys/block/$(expr substr ${_DEVICE} 6 3) | grep -q usb
-then
- if [ ! -x "$(which rsync 2>/dev/null)" ]
- then
- eject -p -m ${_DEVICE} >/dev/null 2>&1
- fi
-fi