使用kexec重新引导内核
kexec是Linux内核的一种机制,它允许从当前运行的内核启动新内核。kexec会跳过由系统固件执行的引导加载程序阶段和硬件初始化阶段,直接将新内核加载到主内存并立即开始执行。这避免了与完全重新启动相关的漫长时间,并且可以通过最小化停机时间来帮助系统满足高可用性要求。
Debian默认支持kexec,所以在Debian下我们只要安装kexec-tools就行了。
apt install kexec-tools
检查当前的内核banb
root@jp:~# uname -r
5.10.0-17-amd64
查找目前可用的内核版本
root@jp:~# ls /boot/vmlinuz-*
/boot/vmlinuz-5.10.0-16-amd64 /boot/vmlinuz-5.10.0-17-amd64 /boot/vmlinuz-5.10.0-18-amd64
这里最新的是 /boot/vmlinuz-5.10.0-18-amd64
先查看当前内核5.10.0-17-amd64的引导参数
root@jp:~# cat /boot/grub/grub.cfg | grep 5.10.0-17-amd64
echo 'Loading Linux 5.10.0-17-amd64 ...'
linux /boot/vmlinuz-5.10.0-17-amd64 root=UUID=f4d01b88-6693-437c-b63a-60631182ae60 ro quiet
initrd /boot/initrd.img-5.10.0-17-amd64
用kexec加载最新内核5.10.0-18-amd64
kexec -l /boot/vmlinuz-5.10.0-18-amd64 --initrd=/boot/initrd.img-5.10.0-18-amd64 --append="root=UUID=f4d01b88-6693-437c-b63a-60631182ae60 ro"
执行当前加载的最新内核。
kexec -e
完成执行后重新登录SSH控制台并检查内核版本。
root@debian:~# uname -r
5.10.0-18-amd64