reboot流程
当我们在openwrt系统的终端中敲下
reboot指令后,系统需要进行一系列动作后,才会真正的进行硬件重启。而这一系列的动作可以分为——应用程序的停止和内核的停止。在Openwrt系统中,应用程序的停止是1号进程(也就是
procd)完成的,应用程序全部停止后才会进入内核的重启流程。下面我们将分别来介绍应用程序和内核停止的流程。
首先,我们注意到reboot指令是busybox提供的,而且reboot指令支持传入不同的参数来执行不同的重启模式。
# ls /sbin/reboot -alh
lrwxrwxrwx 1 root root 14 Apr 17 13:15 /sbin/reboot -> ../bin/busybox
/# reboot --help
BusyBox v1.36.1 (2024-05-10 17:21:49 UTC) multi-call binary.
Usage: reboot [-d DELAY] [-nf]
Reboot the system
-d SEC Delay interval
-n Do not sync
-f Force (don't go through init)
下面是reboot指令的参数解释。
| 参数 | 说明 |
|---|---|
| -d SEC Delay interval | 延时几秒之后重启 |
| -n | 不执行sync |
| -f | 强制重启,跳过应用层直接走内核重启流程 |
关于reboot指令的具体实现可以参考busybox源码:halt.c
int halt_main(int argc UNUSED_PARAM, char **argv)

最低0.47元/天 解锁文章
6526

被折叠的 条评论
为什么被折叠?



