Changes
Jump to navigation
Jump to search
Debian Using tmpfs for /tmp, /var/(log,run,lock...) (view source)
Revision as of 08:19, 12 August 2011
, 08:19, 12 August 2011no edit summary
'''To Save CF-Flash-Cards from burned do:'''
nano /etc/fstab
add:
<pre>
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
</pre>
create:
nano /etc/default/tmpfs.sh
insert:
<pre>
MNT_TMPFS="/dev/shm"
DIRS="/tmp /var/log /var/run /var/lock"
OPTS_TMPFS="nodev,noexec"
#SHM_SIZE=64
#QUIET=""
</pre>
nano /etc/init.d/tmpfs.sh
insert:
<pre>
#! /bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start: mountall
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Mount directories in tmpfs
# Description: This initscript can bind directories in a tmpfs ramdisk, the
# primary goal is to allow laptop users to let the hard-disk
# drive spin up most of the time, it can also be used by people
# having their system on a USB disk or a CF card.
# Author: Mathias Laurin
# License: GNU General Public License version 2 or higher
# Version: 1.0.4
### END INIT INFO
PATH=/sbin:/bin
NAME="my-tmpfs.sh"
. /lib/init/vars.sh
. /lib/lsb/init-functions
# Source tmpfs before $NAME so that SHM_SIZE gets overwritten
[ -e /etc/default/tmpfs ] && . /etc/default/tmpfs
[ -e /etc/default/$NAME ] && . /etc/default/$NAME
# no directory to mount, exit graciously
[ -z "$DIRS" ] && exit 0
[ -n "$QUIET" ] && OPTS_TMPFS_QUIET="-n"
[ -z "MNT_TMPFS" ] && MNT_TMPFS="/dev/shm"
# no /dev/shm, error and exit
[ ! -d "/dev/shm" ] && echo "Enable tmpfs in the kernel" >&2 && exit 1
do_start() {
# Prepare mount point
[ ! -d "$MNT_TMPFS" ] && mkdir "$MNT_TMPFS"
# Mount options
MNT_OPTS=${MNT_OPTS:-"rw,nodev,nosuid"}
[ -n "$SHM_SIZE" ] && MNT_OPTS="$MNT_OPTS",size=$SHM_SIZE
[ -n "$(grep $MNT_TMPFS /proc/mounts)" ] && umount "$MNT_TMPFS"
mount -t tmpfs -o "$MNT_OPTS" tmpfs "$MNT_TMPFS"
for MY_DIR in $DIRS; do
MY_TMPFS="$MNT_TMPFS/$MY_DIR"
[ ! -d "$MY_TMPFS" ] && mkdir -p "$MY_TMPFS"
mount --bind $OPTS_TMPFS_QUIET "$MY_TMPFS" "$MY_DIR" -o "$OPTS_TMPFS"
# special cases handled here, using "case" allows more flexibility
case $MY_DIR in
/tmp|/var/tmp)
mount -o,remount,nodev,nosuid $MY_DIR
chmod 1777 $MY_DIR
;;
/var/log)
touch /var/log/lastlog
touch /var/log/wtmp
chgrp utmp /var/log/lastlog
chmod 0644 /var/log/lastlog
chmod 0644 /var/log/wtmp
chmod 0600 /var/log/btmp
mkdir /var/log/news
chown news:news /var/log/news
chmod g+s /var/log/news
[ -f /etc/init.d/mpd ] &&
mkdir /var/log/mpd &&
chown mpd:audio /var/log/mpd
[-f /etc/init.d/ipw3945d ] &&
mkdir /var/log/ipw3945d &&
chown Debian-ipw3945d:Debian-ipw3945d /var/log/ipw3945d
;;
/var/run)
mount -o,remount,nodev,nosuid,noexec /var/run
chmod 1777 /var/run
[ ! -d /var/run/screen ] && mkdir -m 0777 /var/run/screen
touch /var/run/utmp
chgrp utmp /var/run/utmp
chmod 0644 /var/run/utmp
;;
esac
done
}
case "$1" in
start|"")
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
*)
echo "Usage: my-tmpfs.sh [start|stop]" >&2
exit 3
;;
esac
:
</pre>
now do:
<pre>
chmod 755 /etc/init.d/my-tmpfs.sh
cd /etc/rcS.d
ln -s ../init.d/tmpfs.sh S37tmpfs.sh
</pre>
reboot..
nano /etc/fstab
add:
<pre>
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
</pre>
create:
nano /etc/default/tmpfs.sh
insert:
<pre>
MNT_TMPFS="/dev/shm"
DIRS="/tmp /var/log /var/run /var/lock"
OPTS_TMPFS="nodev,noexec"
#SHM_SIZE=64
#QUIET=""
</pre>
nano /etc/init.d/tmpfs.sh
insert:
<pre>
#! /bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start: mountall
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start: S
# Default-Stop:
# Short-Description: Mount directories in tmpfs
# Description: This initscript can bind directories in a tmpfs ramdisk, the
# primary goal is to allow laptop users to let the hard-disk
# drive spin up most of the time, it can also be used by people
# having their system on a USB disk or a CF card.
# Author: Mathias Laurin
# License: GNU General Public License version 2 or higher
# Version: 1.0.4
### END INIT INFO
PATH=/sbin:/bin
NAME="my-tmpfs.sh"
. /lib/init/vars.sh
. /lib/lsb/init-functions
# Source tmpfs before $NAME so that SHM_SIZE gets overwritten
[ -e /etc/default/tmpfs ] && . /etc/default/tmpfs
[ -e /etc/default/$NAME ] && . /etc/default/$NAME
# no directory to mount, exit graciously
[ -z "$DIRS" ] && exit 0
[ -n "$QUIET" ] && OPTS_TMPFS_QUIET="-n"
[ -z "MNT_TMPFS" ] && MNT_TMPFS="/dev/shm"
# no /dev/shm, error and exit
[ ! -d "/dev/shm" ] && echo "Enable tmpfs in the kernel" >&2 && exit 1
do_start() {
# Prepare mount point
[ ! -d "$MNT_TMPFS" ] && mkdir "$MNT_TMPFS"
# Mount options
MNT_OPTS=${MNT_OPTS:-"rw,nodev,nosuid"}
[ -n "$SHM_SIZE" ] && MNT_OPTS="$MNT_OPTS",size=$SHM_SIZE
[ -n "$(grep $MNT_TMPFS /proc/mounts)" ] && umount "$MNT_TMPFS"
mount -t tmpfs -o "$MNT_OPTS" tmpfs "$MNT_TMPFS"
for MY_DIR in $DIRS; do
MY_TMPFS="$MNT_TMPFS/$MY_DIR"
[ ! -d "$MY_TMPFS" ] && mkdir -p "$MY_TMPFS"
mount --bind $OPTS_TMPFS_QUIET "$MY_TMPFS" "$MY_DIR" -o "$OPTS_TMPFS"
# special cases handled here, using "case" allows more flexibility
case $MY_DIR in
/tmp|/var/tmp)
mount -o,remount,nodev,nosuid $MY_DIR
chmod 1777 $MY_DIR
;;
/var/log)
touch /var/log/lastlog
touch /var/log/wtmp
chgrp utmp /var/log/lastlog
chmod 0644 /var/log/lastlog
chmod 0644 /var/log/wtmp
chmod 0600 /var/log/btmp
mkdir /var/log/news
chown news:news /var/log/news
chmod g+s /var/log/news
[ -f /etc/init.d/mpd ] &&
mkdir /var/log/mpd &&
chown mpd:audio /var/log/mpd
[-f /etc/init.d/ipw3945d ] &&
mkdir /var/log/ipw3945d &&
chown Debian-ipw3945d:Debian-ipw3945d /var/log/ipw3945d
;;
/var/run)
mount -o,remount,nodev,nosuid,noexec /var/run
chmod 1777 /var/run
[ ! -d /var/run/screen ] && mkdir -m 0777 /var/run/screen
touch /var/run/utmp
chgrp utmp /var/run/utmp
chmod 0644 /var/run/utmp
;;
esac
done
}
case "$1" in
start|"")
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
*)
echo "Usage: my-tmpfs.sh [start|stop]" >&2
exit 3
;;
esac
:
</pre>
now do:
<pre>
chmod 755 /etc/init.d/my-tmpfs.sh
cd /etc/rcS.d
ln -s ../init.d/tmpfs.sh S37tmpfs.sh
</pre>
reboot..