Kexec 内核切换工具介绍

发布时间: 更新时间: 总字数:336 阅读时间:1m 作者: IP上海 分享 网址

kexec是一种可以让Linux从当前运行的内核引导进入另一内核的工具,支持在不执行任何硬件初始化的情况下加快系统重引导速度,本文介绍如何使用

使用场景

工具的特点

  • 加快系统重引导速度
  • 避免不可靠的固件和硬件
  • 保存崩溃内核的转储
  • 无需 GRUB 2 配置即可引导

安装

  • 命令行工具
# ubuntu
apt install kexec-tools

# fedora
dnf install kexec- tools
  • 内核配置时,必须启用 kexec 支持,如下
[*] kexec system call

检查命令如下:

$ uname -r
5.15.0-46-generic
$ grep CONFIG_KEXEC /boot/config-5.15.0-46-generic
CONFIG_KEXEC=y  # 内核启动 kexec 的标志
CONFIG_KEXEC_FILE=y
CONFIG_KEXEC_SIG=y
# CONFIG_KEXEC_SIG_FORCE is not set
CONFIG_KEXEC_BZIMAGE_VERIFY_SIG=y
CONFIG_KEXEC_JUMP=y
CONFIG_KEXEC_CORE=y
  • 启动 kexec 服务
sudo systemctl enable kexec-load.service
systemctl status kexec-load.service
  • 检查 kexec 是否正常
systemctl kexec

示例

  • 先执行 apt upgrade 尝试获取新的内核

  • 动态加载内核,包括两个步骤

$ ls /boot/ | grep config
config-5.13.0-25-generic
config-5.15.0-46-generic
config-5.15.0-56-generic
config-5.15.0-57-generic

$ ls /boot/ | grep vmlinuz
vmlinuz
vmlinuz-5.13.0-25-generic
vmlinuz-5.15.0-46-generic
vmlinuz-5.15.0-56-generic  # 当前加载的
vmlinuz-5.15.0-57-generic  # 期望切换的
  • 步骤一:设置内核版本
kexec -l /boot/vmlinuz-5.15.0-57-generic --append="`cat /proc/cmdline` ro quiet splash" --initrd=/boot/initrd.img-5.15.0-57-generic
# kexec --append="ro quiet splash" --initrd=xxx
  • 步骤二:切换,切换时屏幕可以看到相关信息
kexec -e
  • 切换后
$ uname -a
kexec -l /boot/vmlinuz-5.15.0-57-generic --append="`cat /proc/cmdline` ro quiet splash" --initrd=/boot/initrd.img-5.15.0-57-generic
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数