systemd: Deaktivieren Sie nutzlose tmpfs

513
syam

Kontext: eingebettetes System, schreibgeschützte MMC mit tmpfsOverlay. Alles wird in den RAM geschrieben und verschwindet beim Neustart.

systemdbesteht darauf, zahlreiche tmpfsReittiere (zumindest /run /run/lock /run/shmund /tmpvon oben, vielleicht andere) zu erstellen, die völlig nutzlos sind, da das gesamte schreibgeschützte Dateisystem bereits von einem überlagert wird tmpfs.

Problem: Dies ist ein ziemlich eingeschränktes Embedded-System, und jedes Byte RAM zählt. Ich möchte den Aufwand für die Verwaltung mehrerer tmpfsan unterschiedlichen Standorten vermeiden und einfach alles in die Hauptüberlagerung tmpfseinfügen.

Leider habe ich es bisher nur geschafft, /tmp( systemctl mask systemd-tmpfiles*) zu deaktivieren, aber es hat nichts für die /runHierarchie.

Irgendeine Idee, wo diese Einstellungen verborgen sind?

1
Wenn jedes Byte des RAMs zählt, wäre das Ersetzen des gesamten "systemd" durch ein kleineres init nicht die erste Vorgehensweise? Sie würden mehrere _megabytes_ im Vergleich zu einem tmpfs-Mount freigeben, der einige KB kostet. grawity vor 5 Jahren 2
Du hast offensichtlich recht und das ist geplant. Leider gibt es Konsequenzen (hauptsächlich Hotplug), für die ich noch keine Zeit habe. Das wird warten müssen, in der Zwischenzeit versuche ich es ... syam vor 5 Jahren 0

1 Antwort auf die Frage

2
grawity

Aus meinem Kopf:

Erforderlich:

/sys/fs/cgroup Kann nicht deaktiviert werden, da die Standardfunktionalität von systemd auf cgroups basiert.

/devKann und sollte nicht deaktiviert werden, da es sich nicht um ein reguläres tmpfs handelt - es ist ein devtmpfs, bei dem der Kernel automatisch Knoten für Hotplugged-Geräte erstellt. (Dies funktioniert auch ohne udev.)

Schwer:

/runkann nicht deaktiviert werden; Sie können es in systemd aus der Tabelle heraus patchensrc/core/mount-setup.c, tun Sie dies jedoch nur, solange der Speicherort die gleichen tmpfs-ähnlichen Eigenschaften enthält.

/run/shmSie kann auch nicht deaktiviert werden, da glibc die Implementierung des gemeinsam genutzten POSIX-Speichers erfordert. Sie können es wieder herauspatchen src/core/mount-setup.c, solange der Speicherort auf einem tmpfs bleibt . Denken Sie daran, dass es sich bei diesem Pfad um einen benutzerdefinierten Distributions-Patch handelt - dieses Dateisystem ist traditionell /dev/shm.

Wahlweise:

/dev/mqueue, /dev/hugepageswerden entsprechend ihrer .mountUnit-Dateien angehängt, die gelöscht werden können.

/run/lockist eigentlich kein tmpfs standardmäßig. Wenn an diesem Standort etwas montiert ist, muss dies an Ihrer Distribution vorgenommen werden. Sie kann sehr wahrscheinlich durch Entfernen der run-lock.mountEinheit deaktiviert werden .

/tmpist optional und wird je nach tmp.mountGerät montiert . Sie können diese Einheitendatei entfernen.


Ich wäre sehr überrascht, wenn ein tmpfs-Mount mehr kostet als eine Speicherseite.

Danke, das habe ich befürchtet: Ein Teil davon ist hart codiert. Die Einstellung "wir wissen besser als Sie" des systemd-Teams macht mich müde. Nun, ich rekompiliere systemd nur deshalb nicht neu, also werde ich einfach alles los, wie Sie es vorgeschlagen haben, wenn ich etwas Zeit dafür habe. syam vor 5 Jahren 0