This guide shows you how to install the latest Linux kernel on Debian using the Zabbly repository, which tracks mainline kernel releases with minimal modifications. You’ll gain access to newer hardware drivers, security patches, and performance improvements weeks or months before they reach Debian’s stable repositories. By the end, you’ll have a working mainline kernel with automatic updates through APT and the option to fall back to Debian’s stock kernel whenever needed.
The Zabbly kernel suits users running newer hardware that Debian’s stock kernel doesn’t fully support, those who need recent kernel features for container workloads with Incus or LXC, or anyone who wants upstream bug fixes without waiting for Debian’s release cycle. The kernel uses Ubuntu’s configuration as a base, enabling broad hardware support while tracking stable mainline releases rather than release candidates.
Verify System Requirements
The Zabbly kernel requires a 64-bit system and Secure Boot disabled in your BIOS/UEFI settings. The kernel lacks Microsoft’s UEFI key signatures, so systems with Secure Boot enabled will refuse to load it. Confirm your architecture before proceeding:
uname -m
x86_64
Proceed only if the output shows x86_64 (amd64) or aarch64 (arm64). Note the architecture availability by Debian version:
Debian 11 (Bullseye) supports x86_64 (amd64) only. Debian 12 (Bookworm) and Debian 13 (Trixie) support both amd64 and arm64 architectures. The repository configuration below auto-detects your architecture, but arm64 users on Debian 11 should use Debian’s stock kernel or upgrade to Debian 12.
Choose Your Debian Kernel Option
Debian offers several kernel options beyond the default stable kernel, each targeting different use cases. Understanding the differences helps you select the kernel that matches your hardware requirements, performance goals, and stability needs.
| Kernel Option | Primary Focus | Best For | Trade-offs |
|---|---|---|---|
| Debian Stock Kernel | Stability and broad hardware support | Servers, production systems, conservative users who prioritize reliability over features | Older kernel versions, slower to receive new hardware support, conservative defaults |
| Mainline Kernel (Zabbly) | Latest upstream features and drivers | Newer hardware support, container workloads (Incus/LXC), users wanting upstream features before Debian integration | Faster update cycle than Debian stable, Secure Boot unsupported |
| Liquorix kernel on Debian | Desktop responsiveness and low latency | Audio production, real-time applications, desktop users prioritizing responsiveness | Optimized for desktop workloads only, Secure Boot unsupported, limited to x86_64 |
| XanMod kernel on Debian | Performance optimization and gaming | Gaming rigs, multimedia workstations, Wine/Proton users, BBRv3 networking | Custom patches may conflict with some hardware, Secure Boot unsupported |
For most desktop and workstation users, the Zabbly mainline kernel is recommended because it provides the latest hardware support and upstream features while remaining close to vanilla Linux. Production servers should stick with Debian’s stock kernel for tested stability. Choose Liquorix or XanMod only if you specifically need their performance optimizations for audio production or gaming workloads.
Update Debian Before Kernel Installation
Kernel installations depend on having current package metadata and libraries. Running a full system update first prevents dependency conflicts that can occur when older packages expect different kernel headers or build tools:
sudo apt update && sudo apt upgrade
Check your current kernel version before proceeding. This helps you confirm the upgrade worked and provides a reference if you need to troubleshoot:
uname -r
6.1.0-28-amd64
While kernel changes are generally safe, having a recovery option provides peace of mind. Creating a system snapshot with the Timeshift system restore tool on Debian before proceeding lets you restore your system to its current state if you encounter boot issues or hardware incompatibilities. This is especially valuable if you use NVIDIA drivers on Debian or other third-party kernel modules that might not immediately support the new kernel.
Install Repository Prerequisites
Adding third-party repositories requires several tools that may not be present on minimal Debian installations. The following command installs everything needed to securely download and verify the Zabbly repository:
sudo apt install ca-certificates curl gnupg -y
Here’s what each package provides: curl downloads files from the web, gnupg handles cryptographic signature verification, and ca-certificates contains the root certificates needed for HTTPS connections. Most desktop installations already have these, but including them ensures the commands work on any Debian system.
Import the Zabbly GPG Key and Repository
APT uses GPG signatures to verify that packages actually come from their claimed source and haven’t been tampered with. Before adding the Zabbly repository, you need to import their signing key so APT can validate the packages. This guide uses the modern DEB822 format for repository configuration, which provides cleaner syntax and better maintainability than legacy .list files.
Import the Zabbly GPG Key
Download the Zabbly signing key and store it in the standard keyring location. First, ensure the keyrings directory exists:
sudo install -m 0755 -d /etc/apt/keyrings
Now download the key:
sudo curl -fsSL https://pkgs.zabbly.com/key.asc -o /etc/apt/keyrings/zabbly.asc
Verify the key file exists and has correct permissions:
ls -la /etc/apt/keyrings/zabbly.asc
-rw-r--r-- 1 root root 1734 Dec 2 12:00 /etc/apt/keyrings/zabbly.asc
Add the Zabbly Repository
Create the repository configuration file using the DEB822 format. The command auto-detects your Debian version and system architecture:
cat <<EOF | sudo tee /etc/apt/sources.list.d/zabbly-kernel-stable.sources
Enabled: yes
Types: deb
URIs: https://pkgs.zabbly.com/kernel/stable
Suites: $(. /etc/os-release && echo ${VERSION_CODENAME})
Components: main
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/zabbly.asc
EOF
The $(. /etc/os-release && echo ${VERSION_CODENAME}) command inserts your Debian codename (bullseye, bookworm, or trixie) automatically, while $(dpkg --print-architecture) detects whether you’re running amd64 or arm64. This means the same command works across all supported Debian versions without modification.
Verify the Repository Configuration
Confirm the repository file was created correctly:
cat /etc/apt/sources.list.d/zabbly-kernel-stable.sources
On Debian 13 (Trixie), the output looks like this. Debian 12 shows “bookworm” and Debian 11 shows “bullseye” in the Suites line:
Enabled: yes Types: deb URIs: https://pkgs.zabbly.com/kernel/stable Suites: trixie Components: main Architectures: amd64 Signed-By: /etc/apt/keyrings/zabbly.asc
Refresh APT Package Cache
Refresh APT’s package database to include Zabbly’s packages:
sudo apt update
Watch the output for lines mentioning pkgs.zabbly.com. Seeing these lines confirms APT successfully contacted the Zabbly repository:
Get:1 https://pkgs.zabbly.com/kernel/stable trixie InRelease [15.4 kB] Get:2 https://pkgs.zabbly.com/kernel/stable trixie/main amd64 Packages [4911 B]
To confirm APT recognizes the kernel package, query it directly:
apt-cache policy linux-zabbly
linux-zabbly:
Installed: (none)
Candidate: 202512020250~amd64~debian13
Version table:
202512020250~amd64~debian13 500
500 https://pkgs.zabbly.com/kernel/stable trixie/main amd64 Packages
Install the Mainline Linux Kernel
With the repository configured, install the Zabbly kernel package. This meta-package pulls in the latest kernel image and headers:
sudo apt install linux-zabbly
APT downloads and installs the kernel, then automatically configures GRUB to boot the new kernel by default. Your existing Debian kernel remains installed as a fallback option.
The Zabbly kernel requires Secure Boot disabled. If your system has Secure Boot enabled, the new kernel will fail to load after reboot. Access your BIOS/UEFI settings during startup (usually by pressing F2, F12, Del, or Esc) and disable Secure Boot before continuing.
Reboot to Activate the Kernel
The new kernel won’t take effect until you reboot:
sudo reboot
Verify Mainline Kernel Installation
After your system boots, verify that the mainline kernel is running by checking the kernel version:
uname -r
6.x.x-zabbly+
The version string includes “zabbly” to identify the kernel source. The actual version number (such as 6.12.4) reflects the current mainline release, which updates weekly as new stable releases come out.
For detailed kernel information including the build date and compiler used:
cat /proc/version
Linux version 6.x.x-zabbly+ (root@dcmicro) (gcc ...) #1 SMP PREEMPT_DYNAMIC
Manage Kernel Updates and Removal
After installation, the Zabbly kernel integrates with Debian’s package management system. Updates, removal, and maintenance all work through APT.
Update the Kernel
New kernel releases arrive through APT alongside your regular system updates. Running the standard upgrade command checks for new kernel versions:
sudo apt update && sudo apt upgrade
After upgrading, reboot to load the new kernel. The previous version remains installed as a fallback option in GRUB.
Remove the Mainline Kernel
If the mainline kernel causes problems or you want to return to Debian’s stock kernel, removal is straightforward. You cannot remove the kernel you’re currently running, so boot into the stock Debian kernel first.
Boot into the Stock Kernel
Restart your system and access the GRUB boot menu. On most systems, hold the Shift key during startup to force GRUB to appear. Select “Advanced options for Debian” and choose a kernel entry without “zabbly” in the name.
Remove the Kernel Packages
Once booted into the stock kernel, remove all Zabbly packages:
sudo apt remove --purge linux-zabbly linux-image-*-zabbly* linux-headers-*-zabbly*
Remove the Repository and GPG Key
Clean up the repository configuration and signing key:
The following commands permanently delete the Zabbly repository configuration and GPG key. This prevents future kernel updates from Zabbly but does not affect your current system or the stock Debian kernel.
sudo rm /etc/apt/sources.list.d/zabbly-kernel-stable.sources
sudo rm /etc/apt/keyrings/zabbly.asc
Update GRUB and Verify
Refresh APT and regenerate the GRUB configuration:
sudo apt update
sudo update-grub
sudo reboot
After rebooting, confirm you’re running the stock Debian kernel:
uname -r
6.1.0-28-amd64
Confirm the Zabbly packages are fully removed:
apt-cache policy linux-zabbly
linux-zabbly: Installed: (none) Candidate: (none) Version table:
The empty version table confirms the repository has been removed and no Zabbly packages are available.
Troubleshoot Mainline Kernel Issues
While the Zabbly kernel works well on most systems, some hardware combinations or software dependencies can cause problems. Below are solutions to the most common issues.
System Fails to Boot
If your system hangs during boot, shows a black screen, or kernel panics after installing the mainline kernel, boot the stock Debian kernel from GRUB:
- Restart your computer and hold Shift during the POST screen to force the GRUB menu
- Select “Advanced options for Debian”
- Choose a kernel entry without “zabbly” in the version string
- Once booted, either remove the mainline kernel or wait for an updated version
Secure Boot Errors
If you see an error like this during boot, Secure Boot is still enabled:
Secure Boot Violation Invalid signature detected. Check Secure Boot Policy in Setup
Access your BIOS/UEFI settings (usually F2, F12, Del, or Esc during startup) and disable Secure Boot. The exact menu location varies by motherboard manufacturer—look under Security, Boot, or Authentication menus.
NVIDIA Driver Issues
NVIDIA proprietary drivers compile against kernel headers using DKMS. When a new kernel arrives, DKMS automatically rebuilds the driver. If this fails, you may boot to a system without graphics acceleration. Check DKMS status:
dkms status
A healthy system shows modules as “installed” for your current kernel:
nvidia/550.90.07, 6.x.x-zabbly+, x86_64: installed
If the NVIDIA module shows as “built” but not “installed” for the current kernel, manually trigger installation:
sudo dkms autoinstall
For persistent NVIDIA issues with mainline kernels, consider using the stock Debian kernel or waiting for driver updates. See our guide on installing NVIDIA drivers on Debian for detailed troubleshooting.
GRUB Doesn’t Show the New Kernel
If the mainline kernel doesn’t appear in GRUB after installation, regenerate the GRUB configuration:
sudo update-grub
The output should list the Zabbly kernel among the found images:
Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.x.x-zabbly+ Found initrd image: /boot/initrd.img-6.x.x-zabbly+ Found linux image: /boot/vmlinuz-6.1.0-28-amd64 Found initrd image: /boot/initrd.img-6.1.0-28-amd64 done
Then reboot and check the GRUB menu again.
Check Kernel Logs for Errors
If something isn’t working correctly, kernel logs often reveal the cause. View kernel messages from the current boot:
journalctl -k -b | grep -iE "error|failed|warning" | head -20
This filters the output to show only potential problems. Common error patterns include:
kernel: ACPI Error: AE_NOT_FOUND, Evaluating _DSM kernel: nvidia: module verification failed: signature kernel: usb 1-2: device descriptor read/64, error -71
ACPI errors are often harmless firmware quirks. Module verification failures indicate Secure Boot issues. USB errors suggest hardware detection problems that may require the stock kernel.
Conclusion
You’ve successfully installed the latest Linux kernel on Debian using the Zabbly repository. The kernel delivers upstream features, newer hardware drivers, and security patches weeks ahead of Debian’s stable release cycle. Your stock Debian kernel remains available in GRUB as a fallback option, and you can fully remove the mainline kernel using the removal steps above if you encounter compatibility problems. For upstream release tracking, bug reports, and kernel-specific issues, refer to the Zabbly Linux GitHub repository.
Be aware the next command doen’t work on derivated distro like Linux Mint LMDE 6 (which codename is “faye”).
codename=$(lsb_release -sc) && echo deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/linux-zabbly.gpg] https://pkgs.zabbly.com/kernel/stable $codename main | sudo tee /etc/apt/sources.list.d/linux-zabbly.list
Instead, replace codename by the debian name (not Linux Mint) expected by zabbly, like “bookworm”.
codename=’bookworm’ && echo deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/linux-zabbly.gpg] https://pkgs.zabbly.com/kernel/stable $codename main | sudo tee /etc/apt/sources.list.d/linux-zabbly.list
Thanks for flagging this, Bobinours. You were absolutely right. The original command used
lsb_release -scwhich returns “faye” on LMDE 6 instead of the underlying Debian codename. The article has since been rewritten with the modern DEB822 repository format, but LMDE users still need to hardcode the Debian codename sinceVERSION_CODENAMEalso returns the Mint release name.For LMDE 7 (Gigi), which is based on Debian 13, use this command instead of the auto-detection version in the guide:
For LMDE 6 (Faye), based on Debian 12:
For LMDE 5 (Elsie), based on Debian 11:
The rest of the guide (GPG key import, package installation, verification) works identically on LMDE. Thanks for documenting this workaround for other LMDE users.