1. OpenWrt启动脚本完全指南
作为一名长期折腾OpenWrt的路由器玩家,我深知启动脚本在系统定制中的重要性。无论是实现单线复用、旁路由设置,还是刷机后的功能扩展,启动脚本都是最直接的解决方案。今天我就来分享OpenWrt启动脚本的完整实现方法,包含那些官方文档没写的实战细节。
OpenWrt的启动脚本位于/etc/init.d目录,采用Linux标准的init.d机制,但又有自己的特殊规范。一个合格的启动脚本需要包含start、stop、restart等标准函数,并通过/etc/rc.common提供的基础函数实现生命周期管理。不同于普通Linux发行版,OpenWrt还通过/etc/rc.d目录下的软链接来控制启动顺序,这是很多新手容易忽略的关键点。
2. 启动脚本核心原理
2.1 OpenWrt初始化系统架构
OpenWrt采用procd作为其初始化系统,这是专为嵌入式设备优化的轻量级方案。整个启动流程分为以下几个阶段:
- 内核启动后运行/sbin/init
- 执行/etc/preinit脚本进行早期初始化
- 挂载文件系统并建立设备节点
- 运行/etc/rc.local(如果存在)
- 按顺序执行/etc/rc.d/S*开头的脚本
关键点在于/etc/rc.d目录下的符号链接。这些链接指向/etc/init.d中的实际脚本,命名格式为S[两位数字][脚本名]。例如S99myscript表示该脚本在启动序列的第99位执行。
2.2 启动脚本必备结构
一个标准的OpenWrt启动脚本必须包含以下要素:
bash复制#!/bin/sh /etc/rc.common
USE_PROCD=1 # 使用procd守护进程管理
START=95 # 启动顺序编号
STOP=10 # 停止顺序编号
start_service() {
procd_open_instance
procd_set_param command /path/to/your/program
procd_close_instance
}
stop_service() {
# 停止逻辑
}
reload_service() {
# 重载逻辑
}
重要提
