Skip to content

Instantly share code, notes, and snippets.

@koshigoe
Created February 11, 2011 14:57
Show Gist options
  • Save koshigoe/822455 to your computer and use it in GitHub Desktop.
Save koshigoe/822455 to your computer and use it in GitHub Desktop.
Like tmpfs in Mac OSX
#!/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)
#
mount_point=${1}
size=${2:-64}
mkdir -p $mount_point
if [ $? -ne 0 ]; then
echo "The mount point didn'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
exit $?
fi
mount -t hfs $device_name $mount_point
if [ $? -ne 0 ]; then
echo "Could not mount disk image." >&2
exit $?
fi
#!/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)
#
mount_point=$1
if [ ! -d "${mount_point}" ]; then
echo "The mount point didn't available." >&2
exit 1
fi
mount_point=$(cd $mount_point && pwd)
device_name=$(df "${mount_point}" 2>/dev/null | tail -1 | grep "${mount_point}" | cut -d' ' -f1)
if [ -z "${device_name}" ]; then
echo "The mount point didn't mount 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
@sturlamolden
Copy link

tmpfs is not ramdisk.

@Roman2K
Copy link

Roman2K commented Nov 17, 2014

Here's my take using hdiutil instead of hdid (deprecated) with mount, umount and orphan commands (and the device won't show up in Finder 😉): https://gist.github.com/Roman2K/3238fb441e298369198e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment