blob: da321e3273ef9f359016b5c150c55e2da04c1f6e [file] [log] [blame]
#!/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