一、在 Buildroot 系统中,使用reboot loader 并未进入烧录模式,而是直接重启动,为啥呢?解释:reboot
命令通常来自 BusyBox,而 BusyBox 的 reboot
命令本身不支持直接传递参数来触发特定的重启行为。
二、kernel/kernel/reboot.c是处理系统重启、关机和其他相关操作的核心文件。包含了系统调用 reboot 和 poweroff 的实现。SYSCALL_DEFINE4
定义的系统调用函数在用户空间程序调用对应的系统调用时被触发。例如,当用户空间程序调用 reboot
系统调用时,最终会执行内核中由 SYSCALL_DEFINE4
宏定义的 sys_reboot
函数。
三、实现流程:重启前在文件系统中创建一个文件来存储参数,然后内核重启时读取这个文件并做相应处理。具体实现步骤:
3.1 编写一个my_reboot.c 系统应用
#include <stdio.h>
#include <unistd.h>
#include <sys/reboot.h>
#include <string.h>
#include <linux/reboot.h>
#incl