+++ /dev/null
-#!/bin/sh
-
-#set -e
-
-copy_live_to ()
-{
- copyfrom="${1}"
- copytodev="${2}"
- copyto="${copyfrom}_swap"
-
- if [ -z "${MODULETORAM}" ]
- then
- size=$(fs_size "" ${copyfrom}/ "used")
- else
- MODULETORAMFILE="${copyfrom}/${LIVE_MEDIA_PATH}/${MODULETORAM}"
-
- if [ -f "${MODULETORAMFILE}" ]
- then
- size=$( expr $(ls -la ${MODULETORAMFILE} | awk '{print $5}') / 1024 + 5000 )
- else
- log_warning_msg "Error: toram-module ${MODULETORAM} (${MODULETORAMFILE}) could not be read."
- return 1
- fi
- fi
-
- if [ "${copytodev}" = "ram" ]
- then
- # copying to ram:
- freespace=$(awk '/^MemFree:/{f=$2} /^Cached:/{c=$2} END{print f+c}' /proc/meminfo)
- mount_options="-o size=${size}k"
- free_string="memory"
- fstype="tmpfs"
- dev="/dev/shm"
- else
- # it should be a writable block device
- if [ -b "${copytodev}" ]
- then
- dev="${copytodev}"
- free_string="space"
- fstype=$(get_fstype "${dev}")
- freespace=$(fs_size "${dev}")
- else
- log_warning_msg "${copytodev} is not a block device."
- return 1
- fi
- fi
-
- if [ "${freespace}" -lt "${size}" ]
- then
- log_warning_msg "Not enough free ${free_string} (${freespace}k free, ${size}k needed) to copy live media in ${copytodev}."
- return 1
- fi
-
- # Custom ramdisk size
- if [ -z "${mount_options}" ] && [ -n "${ramdisk_size}" ]
- then
- # FIXME: should check for wrong values
- mount_options="-o size=${ramdisk_size}"
- fi
-
- # begin copying (or uncompressing)
- mkdir "${copyto}"
- log_begin_msg "mount -t ${fstype} ${mount_options} ${dev} ${copyto}"
- mount -t "${fstype}" ${mount_options} "${dev}" "${copyto}"
-
- if [ "${extension}" = "tgz" ]
- then
- cd "${copyto}"
- tar zxf "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
- rm -f "${copyfrom}/${LIVE_MEDIA_PATH}/$(basename ${FETCH})"
- mount -r -o move "${copyto}" "${rootmnt}"
- cd "${OLDPWD}"
- else
- if [ -n "${MODULETORAMFILE}" ]
- then
- if [ -x /bin/rsync ]
- then
- echo " * Copying $MODULETORAMFILE to RAM" 1>/dev/console
- rsync -a --progress ${MODULETORAMFILE} ${copyto} 1>/dev/console # copy only the filesystem module
- else
- cp ${MODULETORAMFILE} ${copyto} # copy only the filesystem module
- fi
- else
- if [ -x /bin/rsync ]
- then
- echo " * Copying whole medium to RAM" 1>/dev/console
- rsync -a --progress ${copyfrom}/* ${copyto} 1>/dev/console # "cp -a" from busybox also copies hidden files
- else
- mkdir -p ${copyto}/${LIVE_MEDIA_PATH}
- cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/* ${copyto}/${LIVE_MEDIA_PATH}
- if [ -e ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ]
- then
- cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ${copyto}
- fi
- fi
- fi
-
- umount ${copyfrom}
- mount -r -o move ${copyto} ${copyfrom}
- fi
-
- rmdir ${copyto}
- return 0
-}