Kernel & sysctl guide
Each tweak states what it changes and cites a source. Commands copy with one click and are never run for you.
vm.max_map_count
Memory-hungry games can crash when a process hits the kernel's limit on memory mappings. Fedora, Ubuntu and, since April 2024, Arch use 1048576 (the older default was 65530). Check yours first; if it already shows 1048576 or more, do nothing.
Check the current value
sysctl vm.max_map_countPrints the limit in use right now.
Apply until reboot
sudo sysctl -w vm.max_map_count=1048576Takes effect immediately and is lost on reboot. Good for testing.
Make it permanent
echo 'vm.max_map_count=1048576' | sudo tee /etc/sysctl.d/99-gaming.confWrites a drop-in file that is read at every boot. Apply it now with: sudo sysctl --system
Ubuntu 24.04: AppArmor user namespaces
Ubuntu 24.04 restricts unprivileged user namespaces through AppArmor. Apps that build their own sandboxes need an AppArmor profile that permits it, and a flaw in a shipped Steam profile made Steam stop with "Steam now requires user namespaces to be enabled". First update your packages, because fixes were released through updates.
The command below turns the restriction off for every application on the machine, not just Steam. Prefer updated packages or a per-app profile, and treat this as a temporary diagnostic.
Check the setting
sysctl kernel.apparmor_restrict_unprivileged_userns1 means the restriction is on. 0 means it is off.
Turn the restriction off until reboot
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0A documented workaround. It reverts on reboot. If it fixes the problem, replace it with a proper profile instead of leaving it off.
Proton runtime flags
Set these in a game's Steam launch options. They help diagnose problems and are documented in Proton's README. There is no flag that enables Easy Anti-Cheat or BattlEye: that depends on the developer.
Write a log to your home folder
PROTON_LOG=1 %command%Creates steam-<appid>.log, the file to attach to a bug report. Scrub it first with the log scrubber.
Turn off esync
PROTON_NO_ESYNC=1 %command%Disables eventfd-based synchronization. Try it when a game hangs or crashes at launch.
Turn off fsync
PROTON_NO_FSYNC=1 %command%Disables futex-based synchronization, which needs Linux 5.16 or newer.