tmpfs-config(5)

πŸ“¦
version 3.14 Β· 2 versions
, in debian trixie

tmpfs-config β€” the tmpfs-config(5) glow-up πŸ’…

okay so bestie, this is a page from the Debian Administrator's Manual, and it's all about the little file that decides which tmpfs filesystems get mounted while your machine is still waking up. pull up a chair, we're getting into it 🫢


✨ NAME ✨

tmpfs-config β€” the variables that configure tmpfs filesystems mounted during boot. that's it, that's the whole vibe πŸ’–


🌸 DESCRIPTION 🌸

So. The file /etc/default/tmpfs is where all the magic lives. It holds variable settings in POSIX format, which looks like this:

VAR=VAL

Rules of the house, no cap:

  • Only one assignment per line. one. that's the limit.
  • Comments are allowed, and they start with #.

This file configures tmpfs filesystems that get mounted in early boot β€” like, before the filesystems from /etc/fstab even show up. currently that means these four: /run, /run/lock, /run/shm and /tmp. let's break them down one by one, because each one has its own lil personality πŸ¦‹

A couple of ground rules first, fr fr:

  • /run is required to be a tmpfs on systems that support tmpfs mounts. not optional, bestie.
  • /run/lock and /run/shm may be separate tmpfs mounts, which is genuinely useful if you want to enforce separate size limits on them. obsessed with the flexibility honestly.
  • /tmp is not required to be a tmpfs, and it is not mounted as a tmpfs by default. it's just living its life as part of the root filesystem unless you say otherwise.

πŸŽ€ /run

Previously configured using RAMRUN in /etc/default/rcS, /run is now always mounted as a ram file system (tmpfs). the size of the tmpfs can be controlled using TMPFS_SIZE and RUN_SIZE.

if you want, the defaults may also be overridden with an entry in in /etc/fstab, for example:

tmpfs     /run tmpfs     nodev,nosuid,size=10%,mode=755     0    0

Now for the real talk πŸ’€:

  • The contents of /run will always be lost on system reboot, and it it is no longer explicitly cleaned at boot.
  • Packages can not expect directories in /run to exist after boot. packages that expect this are buggy and need to be fixed. periodt.
  • Note that /run was previously /var/run, and a compatibility symlink or bind mount will be created to allow the old path to continue to function. so your old paths still slay, they're just cosplaying πŸ‘‘

πŸŽ€ /run/lock

Previously configured using RAMLOCK in /etc/default/rcS. configured using RAMLOCK, TMPFS_SIZE and LOCK_SIZE.

if you want, the defaults may also be overridden with an entry in in /etc/fstab, for example:

tmpfs     /run/lock tmpfs     nodev,noexec,nosuid,size=52428800,mode=1777  0    0

now the important bit β€” irrespective of these settings, /run/lock will be located on a tmpfs, either one mounted on /run/lock (if RAMLOCK=yes) or one mounted on /run (if RAMLOCK=no). so either way it's on a tmpfs, bestie. and as a result:

  • the contents of /var/lock will always be lost on system reboot, and it it is no longer explicitly cleaned at boot.
  • Packages can not expect directories in /var/lock to exist after boot. packages expecting this are buggy and need to be fixed.
  • Note that /run/lock was previously /var/lock, and a compatibility symlink or bind mount will be created to allow the old path to continue to function. iconic behavior honestly πŸ’…

πŸŽ€ /run/shm

Previously configured using RAMSHM in /etc/default/rcS. heads up though: the setting in /etc/default/rcS, if present, will still be used, but the setting in /etc/default/tmpfs will take precedence if enabled. so the new file wins, no debate.

Configured using RAMSHM, TMPFS_SIZE and SHM_SIZE. and if you want, the defaults may also be overridden with an entry in in /etc/fstab, for example:

tmpfs     /run/shm  tmpfs     nosuid,nodev,size=40%,mode=1777    0    0
  • Packages can not expect directories in /run/shm to exist after boot.
  • Note that /run/shm was previously /dev/shm, and a compatibility symlink or bind mount will be created to allow the old path to continue to function.
  • Special case alert 🚨: if an fstab entry for /dev/shm exists instead of /run/shm, then /dev/shm will continue to be used. note that this is only needed for users of newer versions of the Oracle database, which contain a buggy check for /dev/shm. yep. that's the reason. not me being salty about it πŸ™ˆ

πŸŽ€ /tmp

Previously configured using RAMTMP in /etc/default/rcS. same deal as above: the setting in /etc/default/rcS, if present, will still be used, but the setting in /etc/default/tmpfs will take precedence if enabled.

Configured using RAMTMP, TMPFS_SIZE and TMP_SIZE. and if you want, the defaults may also be overridden with an entry in in /etc/fstab, for example:

tmpfs     /tmp tmpfs     nodev,nosuid,size=20%,mode=1777    0    0
  • Packages can not expect directories in /tmp to exist after boot. that's the whole bullet. short and devastating πŸ’€
NOTE: This file is ignored when systemd is used as init system. so if you're on systemd, this whole page is basically a museum exhibit πŸ›οΈβœ¨

πŸ’– OPTIONS πŸ’–

The following variables can be set. let's go through every single one because we do not skip βœ‹


🌈 Enabling or disabling tmpfs mounts

The following options enable specific mounts (with the exception of /run) to be enabled or disabled. note that the addition of an entry to /etc/fstab for any of the following will enable the mount unconditionally, overriding the setting here. fstab said what it said πŸ’…

  • RAMLOCK β€” Mount /run/lock as a tmpfs (separately from /run). defaults to yes; set to no to disable (and then /run/lock will be part of the /run tmpfs, if available).
  • RAMSHM β€” Mount /run/shm as a tmpfs (separately from /run). defaults to yes; set to no to disable (and then /run/shm will be part of the /run tmpfs, if available).
  • RAMTMP β€” Mount /tmp as a tmpfs. defaults to no; set to yes to enable (and then /tmp will be part of the root filesystem if disabled). /tmp may also be configured to be a separate mount in /etc/fstab, which will override the RAMTMP setting.

🌈 Configuring size limits for tmpfs mounts

The following options configure size limits for tmpfs mounts. note that the addition of an entry to /etc/fstab will override any of the limits specified here. fstab stays undefeated 😀

The following _SIZE variables are the maximum size (in bytes) that tmpfs filesystems can use. The size will be rounded down to a multiple of the page size, 4096 bytes. If no size is set, TMPFS_SIZE will be used as the default.

More complex mount options may be used by the creation of a suitable entry in /etc/fstab. For example:

tmpfs     /run tmpfs     size=10%  0    0

is equivalent to

RUN_SIZE=10%

and will override the RUN_SIZE setting. This will allow additional options such as nr_blocks and nr_inodes to be used, and also adjustment of the mode, nodev, nosuid, noexec options should any change from the defaults be necessary. so many knobs, so little time πŸŽ›οΈ

  • TMPFS_SIZE β€” Maximum size for all tmpfs filesystems if no specific size is provided. The default is 20%VM (20% of virtual memory, including swap space). If this is explicitly set to an empty string, the kernel default (50% RAM) will be used. Note that the "%VM" suffix may be used in this and all the _SIZE settings below, but may not be used in /etc/fstab (the absolute size is calculated by the init scripts).
  • RUN_SIZE β€” Maximum size of /run (was previously /var/run). The default is 10% core memory; the size required varies widely depending upon the demands of the software being run; this heuristic scales /run usage on system size. Samba in particular has been seen to use at least 50MiB in a large heavily used server. Typical usage is hundreds of KiB, maximum is tens of MiB. samba really said "i will consume" 😭
  • LOCK_SIZE β€” Maximum size of /run/lock (was previously /var/lock). Defaults to 5242880 (5 MiB). Typical usage: tens of KiB; maximum hundreds of KiB. The default of 5 MiB should ensure the limit is never reached. comfy default, we love to see it 🫢
  • SHM_SIZE β€” Maximum size of /run/shm (was previously /dev/shm). No default size; the size required varies widely depending upon the demands of the software being run.
  • TMP_SIZE β€” Maximum size of /tmp. No default size.

🌈 Emergency overflow /tmp

If the amount of free space on the root filesystem falls below a certain size, a tmpfs will be mounted on /tmp (irrespective of the RAMTMP setting, which this overrides). This is to permit logins when there would otherwise be too little free space for this to be possible. emergency girlypop behavior, but make it functional 🚨

  • TMP_OVERFLOW_LIMIT β€” Mount a tmpfs on /tmp if the amount of free space on the root filesystem is below the specified limit at boot time (default 1024 KiB).

πŸ‘‘ AUTHOR πŸ‘‘

Roger Leigh <rleigh@debian.org>


πŸ¦‹ SEE ALSO πŸ¦‹

rcS(5), tmpfs(5), mount(8).


and that's the whole page, bestie!! this one's from 18 Feb 2012, it's page tmpfs-config(5) from the Debian Administrator's Manual, and yes i read the entire thing so you didn't have to. go forth and configure your tmpfs responsibly πŸ’œβœ¨πŸŽ€

πŸ“¦ where this page comes from