#!/bin/sh
# Filename:      grml2ram
# Purpose:       copy compressed GRML image to RAM
# Authors:       grml-team (grml.org), (c) Michael Schierl <schierlm-public@gmx.de>, (c) Michael Prokop <mika@grml.org>
# Bug-Reports:   see http://grml.org/bugs/
# License:       This file is licensed under the GPL v2.
# Latest change: Die Dez 12 19:55:05 CET 2006 [mika]
################################################################################

set -e

. /etc/grml/lsb-functions
. /etc/grml/script-functions

check4root || exit 1
check4progs rsync gawk || exit 2

if ! isgrmlcd ; then
   eerror "Not running grml in live-cd mode. Nothing to be done, exiting." ; eend 1
   exit 1
fi

if ! [ -r /cdrom/GRML/GRML ] ; then
   eerror "Can not access /cdrom/GRML/GRML. Looks like you did run grml2ram already?" ; eend 1
   exit 1
fi

GRMLSIZE=$(du /cdrom/GRML/GRML | awk '{print $1}')
RAM=$(/usr/bin/gawk '/MemFree/{print $2}' /proc/meminfo)

case "$*" in -f|--force)
  ewarn "Forcing copy process for grml-image (${GRMLSIZE}kB) as requested via force option." ; eend 0
   ;;
  *)
   if test $RAM -lt $GRMLSIZE ; then
      eerror "Sorry, not enough free RAM (${RAM}kB) available for grml-image (${GRMLSIZE}kB)." ; eend 1
      exit 1
   fi
   ;;
esac

einfo "Copying /cdrom/GRML/GRML to RAM, this might take a while."
rsync -a --progress /cdrom/GRML/GRML /tmp/GRML
LANGUAGE=C LANG=C LC_ALL=C perl << EOF
open LOOP, '</dev/loop0' or die $!;
open DEST, '</tmp/GRML' or die $!;
ioctl(LOOP, 0x4C06, fileno(DEST)) or die $!
close LOOP;
close DEST;
EOF

einfo "Unmounting /cdrom."
umount /cdrom ; eend $?
einfo "Now you can eject your grml-cd (e.g. run 'eject /dev/cdrom')." ; eend 0

## END OF FILE #################################################################
