Files
Linux/Docs/Linux触发软重启.md
offends cee91802b3
Some checks failed
continuous-integration/drone Build is failing
synchronization
2025-08-25 15:57:40 +08:00

2.1 KiB
Raw Permalink Blame History

本文作者:丁辉

Linux触发软重启

使用 SysRq 触发软重启

这个操作会立刻让系统重新启动,跳过正常的关机流程,包括运行关机脚本和同步磁盘等,所以在使用前确保所有重要数据已经保存。

  1. 启用 SysRq 功能

    默认情况下出于安全考虑SysRq 功能可能被部分或完全禁用。可以通过以下命令启用所有 SysRq 功能

    echo 1 > /proc/sys/kernel/sysrq
    
  2. 触发重启

    通过向 /proc/sysrq-trigger 写入 b 来触发立即重启

    echo b > /proc/sysrq-trigger
    

注意事项:

  • 数据丢失:使用 SysRq 功能触发的软重启相当于突然断电,可能导致未保存的数据丢失和文件系统损坏。
  • 安全风险:开启 SysRq 功能可能会带来安全风险,因为任何拥有物理访问权限的人都可能使用这个功能。

使用 kexec 重启内核的步骤如下:

  1. 安装 kexec 工具

    apt-get install kexec-tools
    
  2. 加载新内核

    使用 kexec 命令加载你想要启动的新内核。你需要指定内核文件和对应的初始化内存盘initrd和内核参数。 这里的 /path/to/vmlinuz/path/to/initrd.img 需要替换为实际的文件路径。root=/dev/sda1 ro quiet 是内核启动参数,需要根据实际情况进行调整。

    kexec -l /path/to/vmlinuz --initrd=/path/to/initrd.img --append="root=/dev/sda1 ro quiet"
    
  3. 触发快速重启

    这将跳过 BIOS/UEFI 初始化和硬件检测,直接启动新的内核。

    kexec -e
    

注意事项:

  • 数据丢失风险:使用 kexec 重启内核,类似于正常重启,所有未保存的数据都可能丢失。确保在执行此操作前保存所有重要数据。
  • 环境影响:这种重启方式不会重新初始化硬件设备,某些由硬件状态异常引起的问题可能不会被解决。
  • 兼容性和支持:并非所有的 Linux 发行版都默认支持 kexec可能需要核实你的系统环境和内核配置。