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.
What it is: Gummiboot is the original name for what became systemd-boot. It is a minimal, fast UEFI bootloader that replaces GRUB. It has zero configuration complexity and boots faster because it does not scan for OS entries dynamically at every boot.
Prerequisites:
- UEFI system (not legacy/MBR)
- A separate EFI partition
1. Install gummiboot:
sudo xbps-install gummiboot2. Verify EFI partition flags.
Open GParted or use parted and confirm your EFI partition has both boot and esp flags set. Without these, the firmware will not detect your bootloader.
3. Update /etc/fstab to mount EFI at /boot.
If your EFI partition is currently mounted at /boot/efi, change it to /boot. This is required for gummiboot to place kernel images in the correct location.
sudo nano /etc/fstabAfter editing, reboot to apply the new mount point before proceeding.
4. Install the bootloader to the EFI partition:
sudo gummiboot install5. Create a kernel options file:
sudo nano /boot/loader/void-options.confExample contents (adjust root=, resume=, and flags to match your hardware):
root=/dev/sda2 ro 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 page_alloc.shuffle=1 \
rcupdate.rcu_expedited=1 tsc=reliable \
resume=UUID=0b27b94d-1f89-4772-aca2-977b62544472
To find your root UUID:
blkidOr check /etc/fstab — it is already listed there.
6. Reconfigure your kernel so the new bootloader entry is written:
sudo xbps-reconfigure -f linux<version>To find your installed kernel version:
sudo xbps-query -l | grep linux7. Test the boot. The UEFI entry labeled "Linux Boot Manager" should now work. If it does, GRUB can be safely removed.
What it does: Suppresses all kernel log output during boot and redirects it to tty2, giving you a clean, silent boot sequence.
Edit /etc/default/grub and add the following to GRUB_CMDLINE_LINUX_DEFAULT:
loglevel=0 console=tty2 udev.log_level=0 vt.global_cursor_default=0
Then regenerate the GRUB configuration:
sudo update-grubThis message is hardcoded in GRUB's source. The tool grub-shusher patches it out.
sudo nano /boot/grub/grub.cfgDelete all lines beginning with echo.
Warning: This file is overwritten every time GRUB updates. You must redo this after every
update-grubrun.
What it does: Disables Spectre, Meltdown, and related CPU vulnerability mitigations. This can meaningfully improve performance on older Intel CPUs, but it reduces security. Do not do this on machines that run untrusted code or are accessible by other users.
Further reading: Linux Intel CPU performance mitigations | Meltdown & Spectre
Add to GRUB_CMDLINE_LINUX_DEFAULT, then run sudo update-grub:
mitigations=off
What it does: The kernel watchdog monitors system health and reboots the machine if it detects a hang. On a personal computer where you can manually reboot, this is unnecessary overhead.
Further reading: Linux Kernel Watchdog Explained
Add to GRUB_CMDLINE_LINUX_DEFAULT, then run sudo update-grub:
nowatchdog
What it does: These parameters reduce unnecessary work during boot and runtime. Most were sourced from Clear Linux and the Arch Wiki.
Note: Some of these are Intel-specific (
intel_idle,intel_iommu). If you are on AMD hardware, omit those and research the AMD equivalents.
Add to GRUB_CMDLINE_LINUX_DEFAULT:
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
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=b6063c20-d091-4334-8726-55e0ee6b0aed"
GRUB_DISABLE_OS_PROBER=true
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_SUBMENU=truefsck runs periodically on mounted filesystems to check for errors. On servers this is valuable; on a personal machine it adds minutes to an unexpected reboot. The last two numbers on each fstab line control this behavior:
0in the final column = fsck disabled1or2in the final column = fsck enabled
sudo nano /etc/fstabSet both trailing numbers to 0 for every partition you want to skip:
UUID=f634ad84-2283-4c62-b1ab-d57718e64cbb swap swap sw 0 0
UUID=5c24bcde-e284-457d-b1e1-5845e0e77fb8 / xfs noatime 0 0
UUID=C61D-2685 /boot vfat umask=0077 0 0
tmpfs /tmp tmpfs noatime,nosuid 0 0
Every file access on a standard Linux filesystem updates the file's atime (access timestamp). This means even reading a file triggers a disk write. Replacing defaults with noatime eliminates this unnecessary write overhead.
Replace defaults with noatime on all non-swap partitions as shown in the example above.
What it does: Strips the initramfs down to only what your specific hardware needs. A smaller initramfs means faster decompression and a faster boot.
Warning: Setting
hostonly=yesmeans the resulting initramfs will only boot on this exact machine. Do not do this on a system image you intend to clone.
sudo nano /etc/dracut.conf.d/boot.confPaste the following:
hostonly=yes
hostonly_cmdline=no
use_fstab=yes
compress="cat"
omit_dracutmodules+=" dash i18n rpmversion convertfs btrfs lvm qemu \
multipath qemu-net lunmask fstab-sys terminfo securityfs img-lib \
biosdevname caps crypt crypt-gpg dmraid dmsquash-live mdraid nbd \
nfs network "
nofscks=yes
no_hostonly_commandline=yes
Only omit modules you are certain you do not use. For example, if your root filesystem is btrfs, do not omit btrfs.
sudo xbps-reconfigure -f linux<version>Tip: If you are not on XFS, rEFInd is worth considering as a bootloader alternative — it is often faster than GRUB.
What it does: Enables proper font anti-aliasing and disables bitmap fonts, which fixes blurry or jagged text in Firefox and many GTK applications.
sudo ln -s /usr/share/fontconfig/conf.avail/70-no-bitmaps.conf /etc/fonts/conf.d/
sudo xbps-reconfigure -f fontconfigWhat it does: Removes packages pulled in as dependencies that are irrelevant to your hardware or desktop. This reduces update overhead, disk usage, and potential attack surface.
Warning: Only remove packages you are certain you do not need. Removing the wrong package can break your desktop or leave your system in an inconsistent state.
Add entries to the ignore file so xbps does not reinstall removed packages as dependencies:
sudo nano /etc/xbps.d/99-ignore.confExample for a machine with no AMD GPU, no btrfs, no wacom tablet, and no mobile broadband:
ignorepkg=btrfs-progs
ignorepkg=f2fs-tools
ignorepkg=ipw2100-firmware
ignorepkg=ipw2200-firmware
ignorepkg=linux-firmware-amd
ignorepkg=linux-firmware-broadcom
ignorepkg=mobile-broadband-provider-info
ignorepkg=nvi
ignorepkg=openssh
ignorepkg=os-prober
ignorepkg=rtkit
ignorepkg=void-artwork
ignorepkg=xbacklight
ignorepkg=xf86-input-wacom
ignorepkg=xf86-video-amdgpu
ignorepkg=xf86-video-fbdev
ignorepkg=xf86-video-nouveau
ignorepkg=xf86-video-vesa
ignorepkg=xf86-video-vmware
ignorepkg=zd1211-firmware
For KDE Plasma specifically, also add:
ignorepkg=ksystemstats
ignorepkg=oxygen
ignorepkg=plasma-systemmonitor
ignorepkg=plasma-thunderbolt
ignorepkg=plasma-workspace-wallpapers
sudo xbps-remove -Rcon \
f2fs-tools ipw2100-firmware ipw2200-firmware ksystemstats \
linux-firmware-amd linux-firmware-broadcom \
mobile-broadband-provider-info nvi openssh os-prober oxygen \
plasma-systemmonitor plasma-thunderbolt plasma-workspace-wallpapers \
rtkit void-artwork xbacklight xf86-input-wacom xf86-video-amdgpu \
xf86-video-fbdev xf86-video-nouveau xf86-video-vesa xf86-video-vmwareAdditional optional removals (adjust to your setup):
sudo xbps-remove -Rcon \
lvm2 cryptsetup micro rsync ntfs-3g vim AppStream appstream-glib \
flatpak xdg-desktop-portal-gtk gnome-keyring dialog grub-i386-efi \
inetutils accounts-integration kaccounts-providers kwrite ntp \
octoxbps p7zip topgrade vdpauinfo void-repo-multilib xtermWhat it does: Configures the Intel GPU driver to use the SNA acceleration method and enables TearFree rendering, which eliminates screen tearing without needing a compositor.
sudo mkdir -p /etc/X11/xorg.conf.d
sudo nano /etc/X11/xorg.conf.d/20-intel.confPaste:
Section "Device"
Identifier "Intel Graphics"
Driver "Intel"
Option "AccelMethod" "sna"
Option "TearFree" "true"
EndSection
Warning: This configuration is for Intel integrated graphics only. If Xorg fails to start after applying this, either comment out the
Optionlines one at a time to isolate the issue, or delete the file entirely and reboot:sudo rm /etc/X11/xorg.conf.d/20-intel.conf
What it does: Passes low-level options to the i915 kernel module to enable power-saving states, disable error capture overhead, and enable fastboot for the GPU.
Warning: These parameters are hardware-specific. The values below were chosen for a specific machine. Always cross-reference with the Arch Wiki — Intel graphics before applying. Incorrect options can cause display crashes or kernel panics.
sudo nano /etc/modprobe.d/i915.confExample (verify each option applies to your GPU generation):
options i915 enable_guc=2 enable_dc=4 enable_hangcheck=0 \
error_capture=0 enable_dp_mst=0 fastboot=1
Then rebuild the initramfs:
sudo xbps-reconfigure -f linux<version>If your display stops working after a reboot, remove the file and reboot again:
sudo rm /etc/modprobe.d/i915.confWhat it does: Installs the proprietary NVIDIA driver and configures Xorg to use it. This enables hardware-accelerated rendering and PRIME offloading for hybrid graphics laptops.
1. Enable the non-free repository:
sudo xbps-install void-repo-nonfree
sudo xbps-install -S2. Install the driver:
sudo xbps-install nvidiaUse
nvidia390if your GPU is from the 400 or 500 series (Fermi/Kepler era). Check NVIDIA's legacy driver page to confirm which version your card requires.
3. Install and apply the Xorg configuration:
wget https://raw.githubusercontent.com/uditkarode/dots/master/xorg/xorg.conf
sudo mv xorg.conf /etc/X11/Reboot after this step.
4. Verify the driver is active:
glxinfo | grep "OpenGL renderer"
prime-run glxinfo | grep "OpenGL renderer"The two commands should return different renderers — one for the iGPU and one for the NVIDIA GPU.
What it does: Bumblebee implements NVIDIA PRIME power management, keeping the discrete GPU completely powered off unless an application explicitly requests it via optirun or primusrun. This significantly extends battery life on hybrid graphics laptops.
1. Install and configure Bumblebee:
sudo xbps-install bumblebee
sudo usermod -a -G bumblebee <your-username>
sudo ln -sfv /etc/sv/bumblebeed /var/service/2. Install bbswitch and reboot:
sudo xbps-install bbswitch
reboot3. Verify the NVIDIA GPU is off:
cat /proc/acpi/bbswitchExpected output: 0000:01:00.0 OFF
What it does: Saves your screen brightness level across reboots. Without this service, the backlight resets to maximum on every boot.
git clone https://github.com/madand/runit-services
cd runit-services
sudo mv backlight /etc/sv/
sudo ln -s /etc/sv/backlight /var/service/What it does: Symlinks browser profile directories (Firefox, Chromium, etc.) into a tmpfs RAM disk and periodically syncs changes back to disk. This reduces SSD wear and makes browser startup and operation noticeably faster.
Further reading: Arch Wiki — Profile Sync Daemon
Note:
rsyncmust be installed and thersyncdservice enabled for PSD to sync correctly. Ensure you have all build tools installed before compiling.
git clone https://github.com/graysky2/profile-sync-daemon
cd profile-sync-daemon
make
sudo make install
sudo rm -rf /usr/lib/systemd/
cd
git clone https://github.com/madand/runit-services
cd runit-services
sudo mv psd /etc/sv/
sudo ln -s /etc/sv/psd /var/service/What it does: A system daemon that manages ICC color profiles for displays, printers, and scanners. Required for accurate color reproduction and useful if you calibrate your display.
Further reading: Colord — freedesktop.org | Arch Wiki — ICC profiles
sudo xbps-install colord colord-kde gnome-color-manager
sudo ln -sfv /etc/sv/colord /var/service/Adjust the package list based on your desktop:
colord-kdeis for KDE Plasma; for GNOME you only needcolordandgnome-color-manager.
What it does: Distributes hardware interrupt (IRQ) processing across all available CPU cores, preventing a single core from becoming a bottleneck under heavy I/O load.
Further reading: irqbalance.github.io
sudo xbps-install irqbalance
sudo ln -sfv /etc/sv/irqbalance /var/service/What it does: Ananicy (ANother Auto NICe daemon) automatically adjusts the CPU and I/O scheduling priorities of running processes using a community-maintained rule set. Interactive applications get boosted priority; background tasks get throttled.
Further reading: Ananicy on GitHub
git clone https://github.com/Nefelim4ag/Ananicy.git
cd Ananicy
sudo make install
sudo rm -rf /lib/systemd
sudo mkdir /etc/sv/ananicyCreate the run script:
sudo nano /etc/sv/ananicy/run#!/bin/sh
exec /usr/bin/ananicy startCreate the finish script:
sudo nano /etc/sv/ananicy/finish#!/bin/sh
exec /sbin/sysctl -e kernel.sched_autogroup_enabled=1Make both executable and enable the service:
sudo chmod +x /etc/sv/ananicy/run /etc/sv/ananicy/finish
sudo ln -sfv /etc/sv/ananicy /var/serviceWhat it does: Monitors available RAM and swap space at a set interval. When memory drops below configured thresholds, it kills the most memory-hungry process before the kernel's own OOM killer is triggered — which is slower and less selective.
Further reading: EarlyOOM on GitHub
sudo xbps-install earlyoom
sudo ln -sfv /etc/sv/earlyoom /var/service/Configure the thresholds:
sudo nano /etc/default/earlyoomExample configuration:
EARLYOOM_ARGS=" -m 96,92 -s 99,99 -r 5 -n --avoid '(^|/)(runit|Xorg|sshd)$'"
Parameter breakdown:
-m 96,92— kill when free RAM drops below 4% (96% used); stop killing at 8% (92% used)-s 99,99— same thresholds for swap (99% = essentially full swap)-r 5— check every 5 seconds-n— send a desktop notification before killing--avoid— never kill these processes (adjust the list to your needs)
What it does: A thermal management daemon that monitors CPU and platform temperatures and applies cooling policies (fan speed, P-state throttling) before the hardware enforces emergency throttling.
Only install this if your machine throttles or runs hot under load and cannot manage its own thermals adequately.
Further reading: Debian Wiki — thermald
sudo xbps-install thermald
sudo ln -sfv /etc/sv/thermald /var/service/What it does: An adaptive read-ahead daemon. It monitors which applications you launch most frequently and preloads their libraries into RAM, reducing cold-start load times.
This is only beneficial on systems with an HDD. On SSD or NVMe, application cold-start times are already fast enough that preload provides no measurable benefit and wastes RAM.
Further reading: Arch Wiki — Preload
sudo xbps-install preload
sudo ln -sfv /etc/sv/preload /var/service/TLP is a comprehensive laptop power management tool. It automatically applies a large set of power-saving settings on battery and performance settings on AC without requiring any manual configuration.
Further reading: TLP on GitHub
sudo xbps-install tlp
sudo ln -sfv /etc/sv/tlp /var/service/To customize TLP's behavior:
sudo nano /etc/tlp.confThe defaults are well-tuned for most laptops. Unless you have specific requirements, leaving the configuration as-is will give you excellent battery life.
PowerTop measures per-process power consumption and can automatically enable power-saving modes across devices. Use it instead of TLP, or to manually extract settings that TLP does not cover and add them to /etc/rc.local.
Further reading: PowerTop on GitHub
sudo xbps-install powertopTo enable all power-saving tunings automatically on boot, add this to /etc/rc.local:
powertop --auto-tuneIf you use PowerTop or custom power scripts, the default USB autosuspend timer is too aggressive and causes external keyboards and mice to stutter or disconnect. Increase the delay by adding the following to /etc/rc.local:
for dev in /sys/bus/usb/devices/*/power/autosuspend_delay_ms; do
echo 60000 > "$dev"
doneThis sets a 60-second idle timeout on all USB devices before they are suspended.
What it does: Reduces the voltage supplied to the CPU, CPU cache, and GPU below Intel's factory defaults. A successful undervolt lowers power consumption, reduces heat output, and can reduce thermal throttling — with no meaningful performance loss at stable voltages.
Risk: Too aggressive an undervolt causes crashes or freezes under load. Start conservatively and stress-test each change. This does not damage hardware but can cause data corruption if a crash occurs during a write operation.
Further reading: intel-undervolt on GitHub
1. Install intel-undervolt:
sudo xbps-install intel-undervolt2. Configure voltage offsets:
sudo nano /etc/intel-undervolt.confApply the configuration immediately to test for stability:
sudo intel-undervolt applyAn example configuration (values are machine-specific — do not copy blindly) is available here.
3. Create a runit service to apply the undervolt on every boot:
sudo mkdir /etc/sv/intel-undervolt
sudo nano /etc/sv/intel-undervolt/run#!/bin/sh
intel-undervolt apply >/dev/null 2>&1
exec chpst -b intel-undervolt pausesudo chmod +x /etc/sv/intel-undervolt/run
sudo ln -sfv /etc/sv/intel-undervolt /var/service/What it does: Applies CPU microcode patches distributed by Intel to fix hardware errata (bugs in the CPU silicon) discovered after release. These patches are applied by the operating system on each boot and do not persist to the CPU itself. Keeping microcode current is important for stability and security.
1. Enable the non-free repository (if not already done):
sudo xbps-install void-repo-nonfree
sudo xbps-install -S2. Install the microcode package:
sudo xbps-install intel-ucode3. Rebuild the initramfs so the microcode is loaded early in the boot process:
sudo xbps-reconfigure -f linux<version>What it does: Replaces long, frequently typed commands with short keywords, reducing repetitive typing and mistakes.
Add aliases to ~/.bashrc (for Bash) or ~/.zshrc (for Zsh). They take effect on the next shell session or after running source ~/.bashrc.
Example aliases for Void Linux:
# System update
alias update='sudo xbps-install -Su'
# Install a package
alias install='sudo xbps-install'
# Remove a package and its orphaned dependencies
alias remove='sudo xbps-remove -Rcon'
# Search for a package
alias search='xbps-query -Rs'
# List installed packages
alias list='xbps-query -l'
# Reconfigure a package
alias reconf='sudo xbps-reconfigure -f'
# Enable a runit service
alias svenable='sudo ln -sfv /etc/sv/$1 /var/service/'
# Disable a runit service
alias svdisable='sudo rm /var/service/$1'
# Check service status
alias svstatus='sudo sv status /var/service/*'Full alias collections:
Last revised: Dec 2025. Commands are verified against Void Linux with runit and xbps. Always review upstream documentation before applying system-level changes.
That is true, I will be removing that parameter.