add script grml2ram and manpage for grml2ram
[grml-scripts.git] / usr_sbin / grml2ram
1 #!/bin/sh
2 # Filename:      grml2ram
3 # Purpose:       copy compressed GRML image to RAM
4 # Authors:       grml-team (grml.org), (c) Michael Schierl <schierlm-public@gmx.de>, (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 # Latest change: Die Dez 12 19:55:05 CET 2006 [mika]
8 ################################################################################
9
10 set -e
11
12 . /etc/grml/lsb-functions
13 . /etc/grml/script-functions
14
15 check4root || exit 1
16 check4progs rsync gawk || exit 2
17
18 if ! isgrmlcd ; then
19    eerror "Not running grml in live-cd mode. Nothing to be done, exiting." ; eend 1
20    exit 1
21 fi
22
23 if ! [ -r /cdrom/GRML/GRML ] ; then
24    eerror "Can not access /cdrom/GRML/GRML. Looks like you did run grml2ram already?" ; eend 1
25    exit 1
26 fi
27
28 GRMLSIZE=$(du /cdrom/GRML/GRML | awk '{print $1}')
29 RAM=$(/usr/bin/gawk '/MemFree/{print $2}' /proc/meminfo)
30
31 case "$*" in -f|--force)
32   ewarn "Forcing copy process for grml-image (${GRMLSIZE}kB) as requested via force option." ; eend 0
33    ;;
34   *)
35    if test $RAM -lt $GRMLSIZE ; then
36       eerror "Sorry, not enough free RAM (${RAM}kB) available for grml-image (${GRMLSIZE}kB)." ; eend 1
37       exit 1
38    fi
39    ;;
40 esac
41
42 einfo "Copying /cdrom/GRML/GRML to RAM, this might take a while."
43 rsync -a --progress /cdrom/GRML/GRML /tmp/GRML
44 LANGUAGE=C LANG=C LC_ALL=C perl << EOF
45 open LOOP, '</dev/loop0' or die $!;
46 open DEST, '</tmp/GRML' or die $!;
47 ioctl(LOOP, 0x4C06, fileno(DEST)) or die $!
48 close LOOP;
49 close DEST;
50 EOF
51
52 einfo "Unmounting /cdrom."
53 umount /cdrom ; eend $?
54 einfo "Now you can eject your grml-cd (e.g. run 'eject /dev/cdrom')." ; eend 0
55
56 ## END OF FILE #################################################################