Installing a newer Debian kernel from backports lets a stable host pick up newer hardware support or kernel fixes without moving the whole system to testing. The change selects only the matching kernel packages from stable-backports while normal package selection continues to prefer stable packages.
On Debian 13 stable, the matching backports suite is trixie-backports. Kernel metapackages are architecture-specific, so a 64-bit ARM host uses linux-image-arm64 and linux-headers-arm64, while a common 64-bit PC uses linux-image-amd64 and linux-headers-amd64.
Kernel package installation changes the next boot, not the kernel currently running. Keep the previous kernel available, confirm that the bootloader sees the new image, and verify the running release with uname -r only after the reboot.
Related: How to enable Debian backports
Related: How to install a package from Debian backports
Related: How to update GRUB on Debian
Related: Show the kernel version in Linux
$ cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 13 (trixie)" NAME="Debian GNU/Linux" VERSION_ID="13" VERSION="13 (trixie)" VERSION_CODENAME=trixie ##### snipped #####
The backports suite must match the installed release codename. Use trixie-backports on Debian 13 stable.
$ dpkg --print-architecture arm64
Use the matching kernel metapackages for this value. The examples use arm64; use linux-image-amd64 and linux-headers-amd64 on common 64-bit PC systems.
$ uname -r 6.12.0-13-arm64
This value is the kernel that booted now. It does not show every kernel package installed under /boot.
$ sudo apt update Get:1 http://deb.debian.org/debian trixie-backports InRelease [54.0 kB] Hit:2 http://deb.debian.org/debian trixie InRelease Hit:3 http://deb.debian.org/debian trixie-updates InRelease Hit:4 http://deb.debian.org/debian-security trixie-security InRelease Get:5 http://deb.debian.org/debian trixie-backports/main arm64 Packages [292 kB] Reading package lists... Building dependency tree... Reading state information... All packages are up to date.
A successful refresh should contact the matching backports suite. Enable it first if trixie-backports does not appear.
Related: How to enable Debian backports
$ apt-cache policy linux-image-arm64 linux-headers-arm64
linux-image-arm64:
Installed: (none)
Candidate: 6.12.90-2
Version table:
7.0.10-1~bpo13+1 100
100 http://deb.debian.org/debian trixie-backports/main arm64 Packages
6.12.90-2 500
500 http://deb.debian.org/debian-security trixie-security/main arm64 Packages
6.12.86-1 500
500 http://deb.debian.org/debian trixie/main arm64 Packages
linux-headers-arm64:
Installed: (none)
Candidate: 6.12.90-2
Version table:
7.0.10-1~bpo13+1 100
100 http://deb.debian.org/debian trixie-backports/main arm64 Packages
6.12.90-2 500
500 http://deb.debian.org/debian-security trixie-security/main arm64 Packages
6.12.86-1 500
500 http://deb.debian.org/debian trixie/main arm64 Packages
Priority 100 is normal for backports. The stable candidate remains preferred until the backports suite is selected explicitly.
$ sudo apt --simulate install -t trixie-backports linux-image-arm64 linux-headers-arm64 Reading package lists... Building dependency tree... Reading state information... Installing: linux-headers-arm64 linux-image-arm64 Installing dependencies: apparmor binutils dracut linux-image-7.0.10+deb13-arm64 linux-modules-7.0.10+deb13-arm64 linux-headers-7.0.10+deb13-arm64 ##### snipped ##### Summary: Upgrading: 0, Installing: 102, Removing: 0, Not Upgrading: 0 Inst linux-image-arm64 (7.0.10-1~bpo13+1 Debian Backports:stable-backports [arm64]) Inst linux-headers-arm64 (7.0.10-1~bpo13+1 Debian Backports:stable-backports [arm64])
Stop if APT proposes removing storage, network, bootloader, driver, or virtualization packages outside the intended kernel change.
$ sudo apt install -t trixie-backports linux-image-arm64 linux-headers-arm64 Reading package lists... Building dependency tree... Reading state information... Installing: linux-headers-arm64 linux-image-arm64 Installing dependencies: linux-image-7.0.10+deb13-arm64 linux-modules-7.0.10+deb13-arm64 ##### snipped ##### Setting up linux-image-7.0.10+deb13-arm64 (7.0.10-1~bpo13+1) ... Setting up linux-image-arm64 (7.0.10-1~bpo13+1) ... Setting up linux-headers-arm64 (7.0.10-1~bpo13+1) ...
$ dpkg-query -W linux-image-arm64 linux-headers-arm64 linux-headers-arm64 7.0.10-1~bpo13+1 linux-image-arm64 7.0.10-1~bpo13+1
$ sudo update-grub Sourcing file `/etc/default/grub' Generating grub configuration file ... Found linux image: /boot/vmlinuz-7.0.10+deb13-arm64 Found initrd image: /boot/initrd.img-7.0.10+deb13-arm64 Found linux image: /boot/vmlinuz-6.12.0-13-arm64 Found initrd image: /boot/initrd.img-6.12.0-13-arm64 done
The older kernel entry should remain visible as a rollback choice. Hosts using another bootloader need the equivalent boot-entry refresh.
Related: How to update GRUB on Debian
$ sudo reboot
Do not reboot a remote host unless console, hypervisor, serial, rescue, or another out-of-band access path is available.
$ uname -r 7.0.10+deb13-arm64
The release should match the backports kernel package selected earlier. If the old release appears, choose the new kernel from the boot menu or inspect the bootloader configuration.
Related: Show the kernel version in Linux
$ apt-cache policy linux-image-arm64
linux-image-arm64:
Installed: 7.0.10-1~bpo13+1
Candidate: 7.0.10-1~bpo13+1
Version table:
*** 7.0.10-1~bpo13+1 100
100 http://deb.debian.org/debian trixie-backports/main arm64 Packages
100 /var/lib/dpkg/status
6.12.90-2 500
500 http://deb.debian.org/debian-security trixie-security/main arm64 Packages
6.12.86-1 500
500 http://deb.debian.org/debian trixie/main arm64 Packages
Keep at least one known-good previous kernel installed until the new boot has passed normal service checks.