> 本文作者:丁辉 # Linux触发软重启 ## 使用 SysRq 触发软重启 > 这个操作会立刻让系统重新启动,跳过正常的关机流程,包括运行关机脚本和同步磁盘等,所以在使用前确保所有重要数据已经保存。 1. 启用 SysRq 功能 > 默认情况下,出于安全考虑,SysRq 功能可能被部分或完全禁用。可以通过以下命令启用所有 SysRq 功能 ```bash echo 1 > /proc/sys/kernel/sysrq ``` 2. 触发重启 > 通过向 `/proc/sysrq-trigger` 写入 `b` 来触发立即重启 ```bash echo b > /proc/sysrq-trigger ``` ### 注意事项: - **数据丢失**:使用 SysRq 功能触发的软重启相当于突然断电,可能导致未保存的数据丢失和文件系统损坏。 - **安全风险**:开启 SysRq 功能可能会带来安全风险,因为任何拥有物理访问权限的人都可能使用这个功能。 ## 使用 kexec 重启内核的步骤如下: 1. 安装 kexec 工具 ```bash apt-get install kexec-tools ``` 2. 加载新内核 > 使用 kexec 命令加载你想要启动的新内核。你需要指定内核文件和对应的初始化内存盘(initrd)和内核参数。 > 这里的 `/path/to/vmlinuz` 和 `/path/to/initrd.img` 需要替换为实际的文件路径。`root=/dev/sda1 ro quiet` 是内核启动参数,需要根据实际情况进行调整。 ```bash kexec -l /path/to/vmlinuz --initrd=/path/to/initrd.img --append="root=/dev/sda1 ro quiet" ``` 3. 触发快速重启 > 这将跳过 BIOS/UEFI 初始化和硬件检测,直接启动新的内核。 ```bash kexec -e ``` ### 注意事项: - **数据丢失风险**:使用 kexec 重启内核,类似于正常重启,所有未保存的数据都可能丢失。确保在执行此操作前保存所有重要数据。 - **环境影响**:这种重启方式不会重新初始化硬件设备,某些由硬件状态异常引起的问题可能不会被解决。 - **兼容性和支持**:并非所有的 Linux 发行版都默认支持 kexec,可能需要核实你的系统环境和内核配置。