mirror of https://github.com/tLDP/LDP
61 lines
2.3 KiB
Bash
61 lines
2.3 KiB
Bash
#!/bin/bash
|
|
# ramdisk.sh
|
|
|
|
# A "ramdisk" is a segment of system RAM memory
|
|
#+ which acts as if it were a filesystem.
|
|
# Its advantage is very fast access (read/write time).
|
|
# Disadvantages: volatility, loss of data on reboot or powerdown,
|
|
#+ less RAM available to system.
|
|
#
|
|
# Of what use is a ramdisk?
|
|
# Keeping a large dataset, such as a table or dictionary on ramdisk,
|
|
#+ speeds up data lookup, since memory access is much faster than disk access.
|
|
|
|
|
|
E_NON_ROOT_USER=70 # Must run as root.
|
|
ROOTUSER_NAME=root
|
|
|
|
MOUNTPT=/mnt/ramdisk # Create with mkdir /mnt/ramdisk.
|
|
SIZE=2000 # 2K blocks (change as appropriate)
|
|
BLOCKSIZE=1024 # 1K (1024 byte) block size
|
|
DEVICE=/dev/ram0 # First ram device
|
|
|
|
username=`id -nu`
|
|
if [ "$username" != "$ROOTUSER_NAME" ]
|
|
then
|
|
echo "Must be root to run \"`basename $0`\"."
|
|
exit $E_NON_ROOT_USER
|
|
fi
|
|
|
|
if [ ! -d "$MOUNTPT" ] # Test whether mount point already there,
|
|
then #+ so no error if this script is run
|
|
mkdir $MOUNTPT #+ multiple times.
|
|
fi
|
|
|
|
##############################################################################
|
|
dd if=/dev/zero of=$DEVICE count=$SIZE bs=$BLOCKSIZE # Zero out RAM device.
|
|
# Why is this necessary?
|
|
mke2fs $DEVICE # Create an ext2 filesystem on it.
|
|
mount $DEVICE $MOUNTPT # Mount it.
|
|
chmod 777 $MOUNTPT # Enables ordinary user to access ramdisk.
|
|
# However, must be root to unmount it.
|
|
##############################################################################
|
|
# Need to test whether above commands succeed. Could cause problems otherwise.
|
|
# Exercise: modify this script to make it safer.
|
|
|
|
echo "\"$MOUNTPT\" now available for use."
|
|
# The ramdisk is now accessible for storing files, even by an ordinary user.
|
|
|
|
# Caution, the ramdisk is volatile, and its contents will disappear
|
|
#+ on reboot or power loss.
|
|
# Copy anything you want saved to a regular directory.
|
|
|
|
# After reboot, run this script to again set up ramdisk.
|
|
# Remounting /mnt/ramdisk without the other steps will not work.
|
|
|
|
# Suitably modified, this script can by invoked in /etc/rc.d/rc.local,
|
|
#+ to set up ramdisk automatically at bootup.
|
|
# That may be appropriate on, for example, a database server.
|
|
|
|
exit 0
|