背景:
在嵌入式 Linux 系统中,向 /sys/class/mstar/msys/booting_time
写入数值(如 echo 32
)的操作本质是通过 sysfs 接口触发内核模块记录启动时间。
1. 命令作用与底层机制
- 功能:该命令通过用户空间向内核传递参数,通知 MStar 平台的内核驱动记录系统启动时间。
- 实现原理:
- sysfs 接口:
/sys/class/mstar/msys/booting_time
是 MStar 驱动注册的 sysfs 属性文件,其写入操作会调用内核模块的store()
函数1。 - 数值含义:写入的数值(如
32
)可能是以下两种作用之一:- 触发信号:无论写入何值(数值本身无意义),均触发驱动记录当前时间戳,并计算从 Bootloader 到此刻的耗时。
- 阶段标识:数值代表启动阶段编号(如
32
表示用户空间初始化完成),驱动根据预设逻辑统计对应阶段的耗时2。
- sysfs 接口:
2. 典型应用场景
- 启动阶段标记:
- 在启动脚本(如
/etc/init.d/rcS
)中,通过echo
分阶段写入数值:echo 1 > /sys/class/mstar/msys/booting_time # 内核初始化完成 echo 2 > /sys/class/mstar/msys/booting_time # 文件系统挂载完成 echo 3 > /sys/class/mstar/msys/booting_time # 用户空间服务启动完成
- 驱动根据数值区分阶段,记录各阶段耗时(需驱动代码支持)。
- 在启动脚本(如
- 启动完成通知:
- 在启动流程末尾写入任意值(如
32
),驱动计算总启动时间并记录到日志或文件
- 在启动流程末尾写入任意值(如
3. 与其他系统的对比
平台/接口 | 启动时间记录方式 | 特点 |
---|---|---|
MStar 平台 | 写入 /sys/class/mstar/msys/booting_time 触发驱动计时 | 厂商定制,需内核支持 |
通用 Linux 系统 | 通过 dmesg 查看内核日志时间戳,或使用 systemd-analyze | 标准化,无需驱动修改 |
U-Boot 打点 | 在 Bootloader 中记录时间戳,通过内核驱动读取并计算 | 跨阶段统计(Bootloader + Kernel) |
总结
echo 32 > /sys/class/mstar/msys/booting_time
的本质是通过 用户空间与内核驱动的交互,触发启动时间记录。其核心依赖 MStar 平台的内核实现,写入的数值可能是触发信号或阶段标识