-
-
Save bgotink/3277698 to your computer and use it in GitHub Desktop.
Like tmpfs in Mac OS X. This code is public domain.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# This program has two feature. | |
# | |
# 1. Create a disk image on RAM. | |
# 2. Mount that disk image. | |
# | |
# Usage: | |
# $0 <dir> <size> | |
# | |
# size: | |
# The `size' is a size of disk image (MB). | |
# | |
# dir: | |
# The `dir' is a directory, the dir is used to mount the disk image. | |
# | |
# See also: | |
# - hdid(8) | |
# | |
if [ $# -lt 1 ]; then | |
cat <<EOF >&2 | |
Usage: $0 <dir> [size] | |
Creates a disk image of the given size in megabyte (default: 64) and mounts it at the given directory. | |
EOF | |
exit 1 | |
fi | |
mount_point=${1} | |
size=${2:-64} | |
mkdir -p $mount_point | |
if [ $? -ne 0 ]; then | |
echo "The mount point isn't available." >&2 | |
exit $? | |
fi | |
sector=$(expr $size \* 1024 \* 1024 / 512) | |
device_name=$(hdid -nomount "ram://${sector}" | awk '{print $1}') | |
if [ $? -ne 0 ]; then | |
echo "Could not create disk image." >&2 | |
exit $? | |
fi | |
newfs_hfs $device_name > /dev/null | |
if [ $? -ne 0 ]; then | |
echo "Could not format disk image." >&2 | |
hdiutil detach -quiet $device_name | |
exit $? | |
fi | |
mount -t hfs $device_name $mount_point | |
if [ $? -ne 0 ]; then | |
echo "Could not mount disk image." >&2 | |
hdiutil detach -quiet $device_name | |
exit $? | |
fi |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# This program has two features. | |
# | |
# 1. Unmount a disk image. | |
# 2. Detach the disk image from RAM. | |
# | |
# Usage: | |
# $0 <dir> | |
# | |
# dir: | |
# The `dir' is a directory, the dir is mounting a disk image. | |
# | |
# See also: | |
# - hdid(8) | |
# | |
if [ $# -lt 1 ]; then | |
echo "Usage: $0 <mount point>" >&2 | |
exit 1 | |
fi | |
mount_point=$1 | |
if [ ! -d "${mount_point}" ]; then | |
echo "The mount point isn't available." >&2 | |
exit 1 | |
fi | |
mount_point=$(cd $mount_point && pwd) | |
device_name=$(df "${mount_point}" 2>/dev/null | tail -1 | grep $(basename "${mount_point}") | cut -d' ' -f1) | |
if [ -z "${device_name}" ]; then | |
echo "The mount point didn't match any disk image." >&2 | |
exit 1 | |
fi | |
umount "${mount_point}" | |
if [ $? -ne 0 ]; then | |
echo "Could not unmount." >&2 | |
exit $? | |
fi | |
hdiutil detach -quiet $device_name |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment