Os sistemas que utilizam a funcionalidade de initrd, montam uma "raiz falsa" antes de montar a raiz verdadeira. Essa raiz falsa (ou temporária), é utilizada para montar os sistemas de arquivos virtuais (
/pro,
/sys e
/dev) que permitem configurar todo o hardware durante o processo de boot.
Quando a etapa de boot chamada de initrd termina, começa a fase de inicialização de processos "levantados" a partir do processo init. O processo init é o pai de todos os processos no espaço usuário e, por isso, SEMPRE terá o PID número 1. Processos criados antes de init, não tem PID e são considerados espontâneos.
Todos os processos precisam de um local para armazenar seus números de PID e seus sockets de comunicação. Esses arquivos precisam ficar em um sistema em RAM, pois caso o sistema congele, eles irão automaticamente desaparecer.
Isso elimina a possibilidade de que, quando o sistema retorne os PIDS e sockets abertos, impeçam os serviços de serem reiniciados e necessitem de uma intervenção manual. Essa é a função do sistema de arquivos temporário em RAM.
Observe que em sistemas Debian Jessie (versão 7), os sistemas de arquivos temporários não estão listados no
/etc/fstab. A razão para isso, é que TODOS são montados durante a fase initrd do processo de boot, antes da leitura de
/etc/fstab que monta a raiz verdadeira.
Esses sistemas são remontados sobre a raiz verdadeira para simular que fazem parte da raiz. Se você criar entradas para esses sistemas em
/etc/fstab, elas irão sobrepor os sistemas iniciais
/run,
/run/lock e
/run/shm.
Outra função desse sistema, segundo [2], é manter o diretório em
/run/shm. Essa é uma funcionalidade associada com os sistemas do tipo POSIX, que utilizam objetos compartilhados em memória (Shared Memory Object).
Assim, um processo pode utilizar essa área para armazenar dados que são compartilhados com outros processos (permissões de segurança são concedidas para ajustar esse compartilhamento) e isso é feito na RAM, para obter um expressivo ganho de desempenho.
Os diretórios
/run,
/run/lock e
/run/shm são sistemas de arquivos temporários em RAM e nenhum deles precisará de ajustes, a menos que seu servidor seja para uso em produção e com grande movimento em serviços, como Samba e Apache.
Se você gosta de controlar parâmetros e ajustes manualmente, pode fazer isso no Debian editando o arquivo em
/etc/default/tmpfs e fazer os seguintes ajustes:
# /etc/default/tmpfs ajustado manualmente para um sistema Debian Jessie/Sid
#
# Ativa a montagem de /run/lock como um sistema tmpfs, separado de /run. O padrão é yes. Se desativado /run/lock será parte
# de /run como um tmpfs se esse existir.
RAMLOCK=yes
# Ativa a montagem de /run/shm como um sistema tmpfs, separado de /run. O padrão é yes. Se desativado /run/shm será parte
# de /run como um tmpfs se esse existir.
RAMSHM=yes
# Garanta que /tmp é uma partição e será montada em disco.
RAMTMP=no
# Lembre que 1 MiB (1 mebibyte) é formado por 1024 bytes vezes 1024 que dá = 1048576 bytes ou 2 ^ 20 bytes.
# Defina os tamanhos de cada filesystem em MiB de acordo com seu gosto suas necessidades e o tamanho de sua RAM.
# Utilize somente se não definir os valores manualmente.
#TMPFS_SIZE=20%VM
# Definição manual de cada tmpfs
RUN_SIZE=5242880 # 5Mib
LOCK_SIZE=5242880 # 5MiB
SHM_SIZE=52428800 # 50MiB
#TMP_SIZE=
#TMP_OVERFLOW_LIMIT=1024
Garanta que os seguintes ajustes estejam feitos em
/etc/default/rcS:
# /etc/default/rcS
# Default settings for the scripts in /etc/rcS.d/
# For information about these variables see the rcS(5) manual page.
# This file belongs to the "initscripts" package.
# delete files in /tmp during boot older than x days.
# '0' means always, -1 or 'infinite' disables the feature
TMPTIME=0
# spawn sulogin during boot, continue normal boot if not used in 30 seconds
SULOGIN=no
# do not allow users to log in until the boot has completed
DELAYLOGIN=yes
# be more verbose during the boot process
VERBOSE=yes
# automatically repair filesystems with inconsistencies during boot
FSCKFIX=no
Referências
Manuais
man dos seguintes assuntos:
- tmpfs
- rcs
- filesystem
- fstab
- mount
- proc
- sysfs
- mkswap