#!/usr/bin/env bash set -euxo pipefail # Set variables name="${1:-linux}" kernel="/boot/vmlinuz-$name" initrd="/boot/initramfs-$name.img" # Test if required files are present [ -f $kernel ] [ -f $initrd ] command -v kexec &> /dev/null # Configure the next kernel to load sudo kexec -l $kernel --initrd=$initrd --reuse-cmdline # Gracefully restart on the next kernel sudo systemctl kexec