synchronization
Some checks failed
continuous-integration/drone Build is failing

This commit is contained in:
2025-08-25 15:57:40 +08:00
commit cee91802b3
106 changed files with 9124 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
> 本文作者:丁辉
# 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可能需要核实你的系统环境和内核配置。