#!/bin/sh RESUME_DEVICE=$1 if [ -z "${RESUME_DEVICE}" ]; then echo "usage: $0 resume_device" >&2 exit 1 fi if [ -n "$2" ]; then TMP_FILE=$2; else TMP_FILE="initrd" fi if [ -z "$RESUME" ]; then RESUME="resume" fi if [ -z "$INITRD_SIZE" ]; then INITRD_SIZE=2000k fi if [ -z "$CONFIG_FILE" ]; then CONFIG_FILE="conf/suspend.conf" fi if [ -z "${MOUNT_POINT}" ]; then MOUNT_POINT="mnt" if [ ! -d "${MOUNT_POINT}" ]; then mkdir "${MOUNT_POINT}" if [ ! -d "${MOUNT_POINT}" ]; then echo "Could not create the mount point" >&2 exit 1 fi RMDIR_MOUNT_POINT="yes" else RMDIR_MOUNT_POINT="" fi fi if [ -z "$BOOT_DIR" ]; then BOOT_DIR="/boot" fi if [ -z "$INITRD_FILE" ]; then INITRD_FILE="$BOOT_DIR/resume-initrd" fi if [ -f "$RESUME" -a -d "${MOUNT_POINT}" -a -b "${RESUME_DEVICE}" ]; then dd if=/dev/zero of="$TMP_FILE" bs=$INITRD_SIZE count=1 /sbin/mke2fs -F -m0 "$TMP_FILE" mount -t ext2 -o loop "$TMP_FILE" "${MOUNT_POINT}" if [ "$?" = "0" ]; then mkdir "${MOUNT_POINT}"/dev cp -r /dev/console "${MOUNT_POINT}"/dev/ cp -r /dev/snapshot "${MOUNT_POINT}"/dev/ cp -r /dev/random "${MOUNT_POINT}"/dev/ cp -r /dev/urandom "${MOUNT_POINT}"/dev/ cp -r "${RESUME_DEVICE}" "${MOUNT_POINT}"/dev/ mkdir "${MOUNT_POINT}"/proc mkdir "${MOUNT_POINT}"/etc cp "$CONFIG_FILE" "${MOUNT_POINT}"/etc/ cp "$RESUME" "${MOUNT_POINT}"/resume ln -s resume "${MOUNT_POINT}"/linuxrc umount "${MOUNT_POINT}" if [ -f "$INITRD_FILE" ]; then mv "$INITRD_FILE" "$INITRD_FILE".orig fi chmod 644 "$TMP_FILE" mv "$TMP_FILE" "$INITRD_FILE" else echo "Could not mount $TMP_FILE on ${MOUNT_POINT}" >&2 fi else echo "Could not install the resume initrd" >&2 fi if [ -n "$RMDIR_MOUNT_POINT" ]; then rmdir "${MOUNT_POINT}" fi