Warning: This guide contains system-level modifications. Some steps are irreversible or can render your system unbootable. Read every section fully before executing any command. Know what you are doing, or do not proceed.
All examples are written for runit. Adapt service commands for OpenRC or s6 as needed.
Each init system has trade-offs. Choose based on your priorities — there is no universally correct option.
| Criterion | runit | OpenRC | s6-rc |
|---|---|---|---|
| Boot Speed | Mid | Mid | Fastest |
| Ease of Use | Simplest | Moderate | Complex |
| Codebase Simplicity | Minimal | Moderate | Moderate |
| RAM Usage | Lowest* | Low | Higher |
| Feature Set | Basic | Good | Most complete |
* The runit Busybox variant is significantly more memory-efficient than the standard build.
rEFInd is a graphical, auto-detecting bootloader that is faster and simpler to configure than GRUB. It supports BIOS mode and adapts to hardware automatically.
Warning: rEFInd has known issues with XFS filesystems. Do not use it if your root partition is XFS.
sudo pacman -S refind
sudo refind-install --usedefault /dev/sda # Replace with your actual EFI diskAfter installation, configure rEFInd at /boot/EFI/refind/refind.conf and add a pacman hook so the bootloader stays updated on kernel upgrades.
Suppress all GRUB and boot output for a clean, splash-free startup. Add the following to GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub, then regenerate the config.
loglevel=0 console=tty2 udev.log_level=0 vt.global_cursor_default=0
The "Welcome to GRUB!" message can be suppressed with grub-shusher. You can also manually remove echo lines from /boot/grub/grub.cfg:
sudo nano /boot/grub/grub.cfg # Remove all echo "..." linesNote:
/boot/grub/grub.cfgis overwritten every time you rungrub-mkconfig. Re-apply manual edits after GRUB updates.
Disabling CPU vulnerability mitigations (Spectre, Meltdown, etc.) can yield measurable performance gains, particularly on older Intel CPUs. This is a deliberate security trade-off.
Danger: Do not disable mitigations on machines that run untrusted code, shared workloads, or are exposed to the network. Read meltdownattack.com and this performance guide before proceeding.
Add to GRUB_CMDLINE_LINUX_DEFAULT, then update GRUB:
mitigations=off
The hardware watchdog timer forces a reboot if the system hangs. On a personal machine you can reboot manually — the watchdog is unnecessary overhead.
Add to GRUB_CMDLINE_LINUX_DEFAULT:
nowatchdog
To also prevent the watchdog kernel module from loading entirely:
echo "blacklist iTCO_wdt" | sudo tee /etc/modprobe.d/nowatchdog.confThe following parameters reduce kernel self-checks and tune scheduling for desktop workloads. Most originate from Clear Linux's performance work.
intel_idle.max_cstate=1 cryptomgr.notests initcall_debug intel_iommu=igfx_off no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 tsc=reliable
A complete /etc/default/grub with all optimizations from this guide applied:
# GRUB Configuration
GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=0 console=tty2 udev.log_level=0 vt.global_cursor_default=0 mitigations=off nowatchdog msr.allow_writes=on pcie_aspm=force module.sig_unenforce intel_idle.max_cstate=1 cryptomgr.notests initcall_debug intel_iommu=igfx_off no_timer_check noreplace-smp page_alloc.shuffle=1 rcupdate.rcu_expedited=1 tsc=reliable resume=UUID=YOUR-SWAP-UUID-HERE"
GRUB_DISABLE_OS_PROBER=true
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_SUBMENU=trueApply changes:
sudo grub-mkconfig -o /boot/grub/grub.cfgEven with a silent GRUB, the Artix banner in /etc/issue may still flash at tty login. Remove it:
sudo rm /etc/issueNote: If you use a display manager (LightDM, SDDM, etc.), the tty banner is irrelevant during normal desktop usage.
Artix is compatible with Arch Linux repositories. Adding them gives you access to the full Arch package ecosystem.
sudo pacman -S artix-archlinux-support
sudo pacman-key --populate archlinuxAdd the following to /etc/pacman.conf after all Artix repos:
[extra]
Include = /etc/pacman.d/mirrorlist-arch
[community]
Include = /etc/pacman.d/mirrorlist-arch
# Uncomment if you need 32-bit support:
#[multilib]
#Include = /etc/pacman.d/mirrorlist-archThird-party repos provide pre-built AUR binaries — only add repos you trust. A compromised repo can silently inject malicious code into packages.
sudo pacman-key --recv-key FBA220DFC880C036 --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key FBA220DFC880C036
sudo pacman -U \
'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' \
'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'Add to /etc/pacman.conf:
[chaotic-aur]
Include = /etc/pacman.d/chaotic-mirrorlistsudo pacman-key --recv-key B545E9B7CD906FE3
sudo pacman-key --lsign-key B545E9B7CD906FE3Add to /etc/pacman.conf:
[andontie-aur]
Server = https://aur.andontie.net/$archCustom kernels offer lower latency, better scheduling, and hardware-specific tuning. The best kernel depends on your workload — test several before committing.
| Kernel | Best For |
|---|---|
linux-tkg-bmq |
Desktop responsiveness, task scheduling |
linux-zen |
General desktop, conservative tuning |
linux-xanmod |
Aggressive tuning, gaming |
linux-hardened |
Security-focused (not performance) |
# Requires Chaotic-AUR
sudo pacman -S linux-tkg-bmq-generic_v3 linux-tkg-bmq-generic_v3-headersWarning: bbswitch breaks on TKG kernels. Use
bbswitch-dkmsinstead if you need Optimus Manager.
Screen tearing and graphical artifacts on Intel iGPUs can be fixed with an Xorg device config.
sudo nano /usr/share/X11/xorg.conf.d/20-intel.confSection "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "AccelMethod" "sna"
Option "TearFree" "true"
Option "Tiling" "true"
Option "SwapbuffersWait" "true"
Option "DRI" "3"
EndSection
Danger: If Xorg fails to start after adding this file, comment out options one by one to isolate the conflict. If nothing works, delete the file — your system will revert to the default driver config.
The i915 module accepts hardware-specific tunables. Verify each parameter against the Arch Wiki for your GPU generation before applying.
sudo nano /etc/modprobe.d/i915.confoptions i915 enable_guc=2 enable_dc=4 enable_hangcheck=0 error_capture=0 enable_dp_mst=0 fastboot=1
Rebuild the initramfs after editing (replace the kernel name as needed):
sudo mkinitcpio -p linux-tkg-bmq-generic_v3Danger: Incorrect
i915parameters can cause an unbootable system. If this happens, boot from a live USB, mount your root partition, and remove or correct/etc/modprobe.d/i915.conf, then rebuild the initramfs.
Install the appropriate driver for your kernel. Use nvidia-dkms for custom or DKMS kernels.
# Standard Artix/Arch kernel
sudo pacman -S nvidia nvidia-utils
# Custom or DKMS kernels
sudo pacman -S nvidia-dkms nvidia-utilsFor a performance-patched NVIDIA driver:
yay -S nvidia-dkms-performanceNote: Always match the driver series to your GPU generation. See ArchWiki: NVIDIA for legacy vs. current driver compatibility.
The Artix Universe repo contains init-specific service packages not available in the main repos (e.g. optimus-manager-runit).
Add to /etc/pacman.conf:
[universe]
Server = https://universe.artixlinux.org/$archRun sudo pacman -Sy after adding to sync the database.
Optimus Manager switches between or disables your discrete GPU when not in use, reducing heat and power draw on NVIDIA Optimus laptops.
sudo pacman -S optimus-manager-git optimus-manager-runit bbswitch-dkms lightdm-optimus-runitConfigure the switching mechanism in /etc/optimus-manager/optimus-manager.conf:
[optimus]
switching=bbswitch
pci_power_control=no
pci_remove=no
pci_reset=noAfter rebooting, verify the discrete GPU is powered off:
cat /proc/acpi/bbswitch # Expected output: 0000:01:00.0 OFFWarning: If bbswitch reports ON after boot, another service (e.g. powertop's auto-tune) may be conflicting. Investigate with
journalctl -banddmesg | grep bbswitch. If bbswitch is incompatible with your hardware, tryacpi_callas the switching method instead.
Brightness is not saved across reboots by default. Install and enable the backlight service to persist brightness settings.
sudo ln -sfv /etc/runit/sv/backlight /run/runit/service/Note: The exact package name varies. Search for
backlightin the Universe or AUR for your init variant.
PSD symlinks browser profiles (Firefox, Chromium, Librewolf, etc.) to a tmpfs RAM filesystem, reducing disk I/O and speeding up browser operations. Especially beneficial on HDDs.
yay -S profile-sync-daemon
git clone https://github.com/madand/runit-services
cd runit-services
sudo mv psd /etc/runit/sv/
sudo ln -sfv /etc/runit/sv/psd /run/runit/service/
sudo sv start psdWarning:
rsyncmust also be running. PSD relies on it to sync the in-RAM profile back to disk on shutdown. Without rsync, browser data written since the last boot may be lost on power failure.
Colord is a daemon for managing ICC color profiles on input and output devices. Required by some applications (GIMP, Darktable, color-managed DEs) for accurate color reproduction.
sudo pacman -S colord colord-runit
sudo ln -sfv /etc/runit/sv/colord /run/runit/service/EarlyOOM monitors available memory and swap, and kills the most memory-hungry process before the system fully runs out of memory — preventing the system from freezing for minutes under the kernel's default OOM killer.
sudo pacman -S earlyoom earlyoom-runit
sudo ln -sfv /etc/runit/sv/earlyoom /run/runit/service/
sudo nano /etc/default/earlyoom# Kill when free memory drops below 4% (notify at 8%), swap below 1% (notify at 1%)
# Avoid killing: init, Xorg, SSH
EARLYOOM_ARGS="-m 96,92 -s 99,99 -r 5 -n --avoid '(^|/)(runit|Xorg|sshd)$'"Note: Replace
runitin the avoid pattern with your init system (openrc,s6, etc.).
Thermald monitors CPU temperature and applies cooling strategies before hardware thermal throttling kicks in. Most useful on thin laptops or systems with inadequate cooling.
Tip: Verify you actually need this first. Run
watch -n1 sensorsunder load — if temperatures are acceptable without intervention, skip thermald.
sudo pacman -S thermald thermald-runit
sudo ln -sfv /etc/runit/sv/thermald /run/runit/service/Ananicy-CPP automatically adjusts CPU and I/O priorities for known applications using a crowdsourced ruleset, reducing stuttering when multiple demanding processes compete for resources. Written in C++ (vs. the original Bash), it has negligible CPU and RAM overhead.
sudo pacman -S ananicy-cpp ananicy-cpp-runit
sudo ln -sfv /etc/runit/sv/ananicy-cpp /run/runit/service/Preload is an adaptive readahead daemon that records which applications you use most frequently and preloads them into RAM, reducing cold-start times.
Warning: Preload is only beneficial on HDDs. On SSDs (SATA or NVMe), load times are already fast enough that preload offers minimal gain and wastes RAM.
yay -S preloadSince a dedicated runit service may not exist, enable it via /etc/rc.local:
preloadUse one of the two tools below — not both — to avoid conflicts.
TLP is the most comprehensive battery management tool for Linux laptops. It applies sensible defaults automatically and is highly configurable.
sudo pacman -S tlp tlp-runit
sudo ln -sfv /etc/runit/sv/tlp /run/runit/service/
sudo nano /etc/tlp.conf # Defaults are already excellent; adjust as neededPowerTop identifies power-hungry devices and can auto-tune them. If using TLP, use PowerTop only to identify gaps TLP doesn't cover — do not run --auto-tune alongside TLP.
sudo pacman -S powertop
# Add to /etc/rc.local if running standalone (without TLP):
powertop --auto-tunePowerTop's auto-tune aggressively suspends USB devices. If your keyboard or mouse disconnects or stutters, add the following to /etc/rc.local to increase the USB autosuspend delay:
for dev in /sys/bus/usb/devices/*/power/autosuspend_delay_ms; do
echo 60000 > "$dev"
doneUndervolting reduces the voltage supplied to the CPU and iGPU, lowering heat and power draw without sacrificing clock speed. Too aggressive an undervolt causes instability or crashes.
sudo pacman -S intel-undervolt intel-undervolt-runit
sudo ln -sfv /etc/runit/sv/intel-undervolt /run/runit/service/
sudo nano /etc/intel-undervolt.conf
sudo intel-undervolt apply # Test immediately; stress-test before relying on itDanger: Start conservatively — begin with -50mV on CPU and GPU. Stress-test for at least 30 minutes (
stress-ngor Prime95) before increasing. If the system becomes unbootable, boot a live USB, mount the root partition, and remove execute permissions from the service run script:chmod -x /etc/runit/sv/intel-undervolt/run
Linux runs periodic filesystem integrity checks on boot. On personal machines with reliable hardware and clean shutdowns, these are rarely necessary. Set the last two fields on each fstab line to 0 to disable them.
# /etc/fstab — fsck disabled
UUID=f634ad84-... swap swap sw 0 0
UUID=5c24bcde-... / xfs defaults 0 0
UUID=C61D-2685 /boot vfat umask=0077 0 0
tmpfs /tmp tmpfs defaults,nosuid 0 0By default, Linux updates a file's last-accessed timestamp (atime) on every read — causing a write for every read. Replacing defaults with noatime eliminates this overhead.
# /etc/fstab — noatime
UUID=45bfdbc4-... swap swap sw 0 0
UUID=5A68-E64A /boot vfat noatime 0 0
UUID=57f97d04-... / xfs noatime 0 0
tmpfs /tmp tmpfs noatime,mode=1777 0 0Tip: For full POSIX compliance with most of the benefit, use
relatimeinstead. It only updatesatimewhen the file has been modified more recently than its last access — the kernel default on modern Linux.
A default Artix install starts many services you likely do not need. Removing them reduces RAM usage and shortens boot time.
Remove extra getty terminals (keep tty1 and tty2 as a minimum fallback):
sudo rm /run/runit/service/agetty-tty{3,4,5,6}Remove unused services:
sudo rm /run/runit/service/{cupsd,cronie,syslog-ng}Uninstall associated packages:
sudo pacman -Rscn \
memtest86+ os-prober \
artix-gtk-presets artix-qt-presets artix-grub-theme artix-branding-base \
syslog-ng-runit rsync-runit rpcbind-runit openssh-runit ntp-runit \
nfs-utils-runit mdadm-runit lvm2-runit haveged-runit dhcpcd-runit \
device-mapper-runit cups-runit cryptsetup-runit cronie-runit alsa-utils-runitDanger: Do not blindly copy-paste the removal command. Review each package carefully. Keep
openssh-runitif you use SSH,alsa-utils-runitif you use ALSA directly,dhcpcd-runitif you use DHCP without NetworkManager, etc.
Artix generates two initramfs images per kernel: a default and a fallback. The fallback includes all kernel modules and is used if the default image fails to boot. Removing it saves space on small EFI partitions.
Danger: The fallback image is your safety net. If a kernel update or misconfiguration breaks the default image, fallback lets you still boot. Only remove it if you have an alternative recovery method (e.g. Arch live USB) and understand the implications.
sudo rm /boot/*fallback*Prevent future kernel upgrades from regenerating it by editing the kernel preset:
sudo nano /etc/mkinitcpio.d/linux-tkg-bmq-generic_v3.presetALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux-tkg-bmq-generic_v3"
PRESETS=('default') # Removed 'fallback'
default_image="/boot/initramfs-linux-tkg-bmq-generic_v3.img"Rebuild to apply:
sudo mkinitcpio -p linux-tkg-bmq-generic_v3Last revised: OCt 2025. Commands are verified against Artix with runit. Always review upstream documentation before applying system-level changes.
Thanks to Qontinuum for his suggestions.