This episode dissects the Void kernel: the differences between linux, linux-lts, and linux-zen, how to build a custom kernel, understanding the role of the dracut initramfs, and installing linux-firmware and Intel or AMD microcode for full hardware support.

The kernel is the soul of every Linux system, and Void provides several variants to choose from. Episode 11 dissects the Void kernel: the differences between linux, linux-lts, and linux-zen, how to switch and build kernels, the role of the initramfs built with dracut, and complete firmware and microcode.
Because Void is a rolling release, the kernel also keeps following upstream. This means you need to understand kernel update policy — including initramfs regeneration — so the system always boots correctly.
Let's start with the kernel choices.
Void provides three main kernel variants:
linux : latest upstream kernel, full features
linux-lts : long-term support kernel, most stable for production
linux-zen : kernel tuned for interactive and desktop performancelinux-lts receives longer upstream support, while linux is always on the latest version. linux-zen suits gaming and workstations that need low latency.
Check which kernel is installed and running:
xbps-query -l | grep '^ii linux-'
uname -rThe output of xbps-query -l | grep '^ii linux-' shows the installed kernel packages. Compare it with the running version from uname -r.
To move to linux-lts, install the package then reboot:
sudo xbps-install -S linux-lts
sudo xbps-reconfigure linux-ltsThe xbps-reconfigure linux-lts command builds the initramfs for the LTS kernel and prepares the GRUB entry. After rebooting, select the LTS kernel in the GRUB menu.
Sometimes you need a kernel with special configuration — for example only the modules you need, or additional patches. Void provides the linux-source package for this purpose:
sudo xbps-install -S linux-sourceThe kernel source is extracted to /usr/src/linux. The configuration can be adapted from the running kernel:
cd /usr/src/linux
zcat /proc/config.gz > .config
make menuconfigThe zcat /proc/config.gz > .config command takes the running kernel's configuration as a starting point. After that, make menuconfig opens the interactive configuration editor.
Once the configuration is ready, build and install:
make -j$(nproc) bzImage modules
sudo make modules_install install
sudo xbps-reconfigure linuxThe build output can take a long time depending on the hardware. After make install, don't forget to regenerate GRUB as in episode 7.
The initramfs is a temporary filesystem loaded by the kernel at boot. It contains the modules and hooks needed to load devices, decrypt LUKS, or activate LVM before the root is mounted. Void builds it with dracut.
Regenerate the initramfs manually:
sudo dracut --force /boot/initramfs-$(uname -r).img $(uname -r)The dracut --force command rebuilds the initramfs for the running kernel. Additional configuration goes in /etc/dracut.conf.d/.
Some scenarios — like LUKS encryption — need extra modules in the initramfs:
add_dracutmodules+=" crypt "After adding the configuration file, regenerate the initramfs so the changes take effect.
Firmware for various hardware — WiFi, GPU, sound — is provided in the linux-firmware package:
sudo xbps-install -S linux-firmwareSome drivers need extra firmware from separate packages. Check the relevant packages for your devices in the repository.
Microcode is a CPU patch applied at boot. Void provides the intel-ucode and amd-ucode packages:
sudo xbps-install -S intel-ucode
sudo xbps-reconfigure -f grubThe xbps-reconfigure -f grub command updates the GRUB configuration so the Intel microcode is loaded. For AMD CPUs, replace it with amd-ucode.
Make sure everything works by checking the loaded modules and microcode:
lsmod | head
dmesg | grep -i microcode | headThe output of dmesg | grep -i microcode shows the microcode version applied to the CPU. If microcode: current update appears, the patch is active.
Episode 11 equipped you with Void kernel management: choosing between linux, linux-lts, and linux-zen, switching and building custom kernels, understanding the role of the dracut initramfs, and installing linux-firmware and microcode.
Key takeaways:
linux-lts is the most stable choice for production.xbps-install then xbps-reconfigure.linux-source with make.linux-firmware completes hardware support.In the next episode, episode 12, we will build a web server and database stack — installing nginx with PHP-FPM and MariaDB or PostgreSQL, enabling them as runit services, and managing logs in /var/log/nginx.