news 2026/4/11 0:15:20

Linux命令-kexec(从当前正在运行的内核引导到一个新内核)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux命令-kexec(从当前正在运行的内核引导到一个新内核)

kexec是 Linux 系统中一项强大的功能,从当前正在运行的内核直接引导到一个新内核,而无需经过耗时的 BIOS/UEFI 硬件初始化过程。这在需要频繁重启(如内核开发、系统测试)或构建高可用性系统时特别有用。

⚙️ 使用前提

在开始使用kexec前,请确保系统满足以下两个基本条件:

  1. 内核支持:当前运行的内核必须编译时启用了CONFIG_KEXEC选项。可以通过以下命令检查:

    grep-F CONFIG_KEXEC /boot/config-`uname-r`

    如果返回CONFIG_KEXEC=y,则表示支持。如果结果是CONFIG_KEXEC=n,则需要重新编译内核并启用该选项。

  2. 安装工具:系统需要安装kexec-tools软件包,它提供了用户空间的kexec命令。

    • 在基于 Debian/Ubuntu 的系统上:
      sudoapt-getinstallkexec-tools
    • 在基于 RHEL/CentOS 的系统上:
      sudoyuminstallkexec-tools

📝 基本使用方法

kexec的典型使用流程分为两步:加载新内核和切换到新内核。

1. 加载新内核

使用kexec -l(或--load)命令将新内核及其初始RAM磁盘(initrd)和命令行参数加载到当前内核中。

基本语法

sudokexec -l<新内核的路径>--initrd=<新initrd的路径>--append="<内核命令行参数>"

参数详解

  • -l:指定要加载的新内核映像文件路径,例如/boot/vmlinuz-x.x.x-xx-generic
  • --initrd:指定新内核对应的初始内存文件系统(initramfs)映像文件路径。
  • --append:传递给新内核的启动参数。一个稳妥的做法是直接使用当前内核的参数,即--append="$(cat /proc/cmdline)"。也可以在此基础上修改或使用全新的参数。

示例
假设想加载/boot/vmlinuz-5.15.0-60-generic这个内核,并保持启动参数与当前内核一致:

sudokexec -l /boot/vmlinuz-5.15.0-60-generic --initrd=/boot/initrd.img-5.15.0-60-generic --append="$(cat/proc/cmdline)"
2. 切换到新内核

加载完成后,使用以下命令立即切换到已加载的新内核:

sudokexec -e

执行此命令后,系统会立即重新启动到新内核,不会正常关闭现有应用程序和服务。因此,在执行前请务必保存好所有工作。

🛠️ 其他常用参数

参数功能说明
-l/--load加载一个新内核。
-e/--exec执行(切换)到已加载的内核。
-p/--load-panic专用于kdump场景,加载一个在系统崩溃(panic)时自动启动的捕获内核。
-u/--unload卸载当前已加载的 kexec 内核。
-f/--force强制立即调用 kexec,而不正常关闭系统(慎用)。
-t指定新内核的类型(如elfbzImage等)。

💡 重要注意事项

  • 快速但非安全关闭kexec -e触发的重启不会正常停止系统服务或卸载文件系统。它旨在追求速度,因此请在切换前手动终止应用程序并同步文件系统,以避免数据损坏。
  • 内核兼容性:新加载的内核本身最好也支持kexec系统调用。如果新内核不支持,那么切换后将无法再次使用kexec进行快速重启。
  • 与 kdump 的关系kdump是一种官方的内核崩溃转储机制,它的核心正是依赖于kexeckdump会在系统启动时,预先使用kexec -p加载一个轻量级的“捕获内核”。当生产内核崩溃时,会自动切换到捕获内核来收集崩溃信息(vmcore),以供后续分析。

💎 总结

kexec命令是 Linux 系统管理员和开发者工具箱中一个用于实现快速重启和内核崩溃转储的强大工具。核心用法就是kexec -l加载后,再kexec -e切换。请务必在测试环境中熟练操作后再应用于生产环境,并始终牢记其“非安全关闭”的特性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 12:27:48

jetson orin(jetpack6.2)安装gazebo和gazebo_ros_pkgs

目前 Debian/Ubuntu 官方仅提供了基于 Amd64 架构的 Gazebo 软件包&#xff0c;尚未发布 Arm64 版本。因此&#xff0c;在 Ubuntu 22.04 系统中无法通过官方源直接获取适用于 Arm64 架构的 Gazebo 安装包。 解决办法&#xff1a; 1.安装gazebo &#xff08;1&#xff09;换源安…

作者头像 李华
网站建设 2026/4/5 10:02:41

Scrapy 自定义命令与扩展:打造专属爬虫工具

Scrapy 作为 Python 生态中最强大的爬虫框架之一&#xff0c;其核心优势不仅在于内置的高效爬取能力&#xff0c;更在于高度的可扩展性。通过自定义命令和扩展&#xff08;Extensions&#xff09;&#xff0c;你可以摆脱框架默认功能的限制&#xff0c;打造贴合自身业务需求的专…

作者头像 李华
网站建设 2026/4/10 2:09:30

【图像加密】基于差分扩展的缩略图保持加密技术附matlab代码

✅作者简介&#xff1a;热爱数据处理、建模、算法设计的Matlab仿真开发者。&#x1f34e;更多Matlab代码及仿真咨询内容点击 &#x1f517;&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知。&#x1f525; 内容介绍在数字化浪潮的席卷下&#xff0c;数…

作者头像 李华