before we start its suggested to set up su instead of sudo because it provides better permissions. you can set it up using
sudo passwd root
after that you no longer have to use sudo and only have to enter su once everytime you open a console. meaning put in su then hit enter, fill in your root password that you just made with “sudo passwd root”, and hit enter again before you enter commands.
now there are a bunch of services running in the background that most people will have no use for that will be wasting resources and some such as NetworkManager-wait-online.service that will even slow down boot speeds. don’t believe me? search it up its a long known issue for linux in general. here is a full list of the onces I’ve found so far
NetworkManager-wait-online.service
systemd-journal-catalog-update.service
systemd-coredump.socket
kdumpst-init.service
steamos-kdumpst-layer.service
steamos-devkit-service.service
steamos-dump-info.service
steamos-cfs-debugfs-tunings.service
gpu-trace.service
steamos-log-submitter.service
systemd-journald-dev-log.socket
systemd-journald.socket
systemd-journal-flush.service
systemd-journald-audit.socket
syslog.socket
you can find Linux built in descriptions for each of these by entering this into a console
systemctl
you will be given a long list of what is running on the system with descriptions on the right side. most of whats provided above are either loggers or debugging services.
there is also a service for Dualshock controllers if you don’t need that
ds-inhibit.service
if you don’t need MDNS there are two more you can disable for that
avahi-daemon.socket
avahi-daemon.service
for anybody that might try to disable other services on their own do NOT disable systemd-journald.service. disabling this specific service will cause many issues even preventing you from updating the OS itself or using certain commands in the console.
as for how to disable these services as mentioned before enter su before you enter any of the following commands
systemctl mask NetworkManager-wait-online.service
systemctl mask systemd-journal-catalog-update.service
systemctl mask systemd-coredump.socket
systemctl mask kdumpst-init.service
systemctl mask steamos-kdumpst-layer.service
systemctl mask steamos-devkit-service.service
systemctl mask steamos-dump-info.service
systemctl mask steamos-cfs-debugfs-tunings.service
systemctl mask gpu-trace.service
systemctl mask steamos-log-submitter.service
systemctl mask systemd-journald-dev-log.socket
systemctl mask systemd-journald.socket
systemctl mask systemd-journal-flush.service
systemctl mask systemd-journald-audit.socket
systemctl mask syslog.socket
if you don’t need the Dualshock controller service
systemctl mask ds-inhibit.service
if you don’t need MDNS
systemctl mask avahi-daemon.socket
systemctl mask avahi-daemon.service
this will permanently disable these services. if you want to enable any one service just change mask in the command to unmask or use the following to enable them all again
systemctl unmask NetworkManager-wait-online.service
systemctl unmask systemd-journal-catalog-update.service
systemctl unmask systemd-coredump.socket
systemctl unmask kdumpst-init.service
systemctl unmask steamos-kdumpst-layer.service
systemctl unmask steamos-devkit-service.service
systemctl unmask steamos-dump-info.service
systemctl unmask steamos-cfs-debugfs-tunings.service
systemctl unmask gpu-trace.service
systemctl unmask steamos-log-submitter.service
systemctl unmask systemd-journald-dev-log.socket
systemctl unmask systemd-journald.socket
systemctl unmask systemd-journal-flush.service
systemctl unmask systemd-journald-audit.socket
systemctl unmask syslog.socket
systemctl unmask ds-inhibit.service
systemctl unmask avahi-daemon.socket
systemctl unmask avahi-daemon.service
more services seem to be added in each update so it is possible that if you are on an older version of steamos than me (I’m on 3.6) you might not have some of these services yet.
now as mentioned before the Journald itself must stay enabled (systemd-journald.service) but we can prevent it from writing to the disk which will provide a slight performance improvement
you can do this by going to rootfs/etc/systemd/ then opening journald.conf as a text file and editing #Storage=auto to instead be #Storage=none
now the next is about two mount points that again most users do not need but will be doing stuff in the background these are debugfs which as the name suggests is for debugging and tracefs which is used for logging
I do not recommend disabling these permanently as it could potentially cause issues with updates but you can safely unmount them everytime you reboot by entering this into a console
umount debugfs
umount tracefs
you can then use systemctl to see if they are unmounted. they will disappear from the list when unmounted.
there are a few other things you can do such as disabling CPU Mitigations (which realistically most people won’t run into the issue its trying to prevent) and some kernel tweaks to disable more loggers and debugging among other things that can be changed but lets see how well this is received before I expand on it further.
I’m curious how many of those systemd unit files you’ve actually read while making this list. By way of an example, the first one in your list is a oneshot service, ie it’s something that runs, exits and is never restarted. It’s going to make a tiny improvement to boot speed and nothing else.
I’d suggest utilising the relevant systemd metrics tool to see if you’re actually going after targets that are worth it. These things are all installed/enabled for a reason and you’re risking weirdness down the road.
https://www.freedesktop.org/software/systemd/man/latest/systemd-analyze.html