LuCI 工作架构介绍

1. LuCI 是什么

LuCI 是 OpenWrt 的 Web UI 框架,核心特点:

  • 基于 Lua + uhttpd + ubus/uci

  • 配置驱动(不直接改文件,而是改 UCI

  • 轻耦合,可插插件(package)

2. 整体架构图

3. 核心组成

层级 角色 常见内容
uhttpd HTTP入口 /etc/config/uhttpd
Lua/dispatcher URL Router → Controller /usr/lib/lua/luci/dispatcher.lua
Controller 处理请求 & 调 UCI/ubus /usr/lib/lua/luci/controller/...
Model 读取/写 UCI / RPCD /usr/lib/lua/luci/model/...
View 渲染 HTML /usr/lib/lua/luci/view/...
UCI 持久配置数据 /etc/config/...
ubus/rpcd API层与系统交互 wifi, firewall, system

4. 请求处理流程(以"保存 Wi-Fi 配置"为例)

(1) 浏览器点击 "保存" → POST

(2) uhttpd 转发给 LuCI dispatcher

(3) Dispatcher 找到对应 Controller

(4) Controller 调用 Model 写 UCI: wifi.ssid="MyAP"

(5) 提交 UCI → uci commit wireless

(6) Controller 触发系统动作 (ubus call hostapd reload)

(7) 返回 JSON / HTML 页面

特点:所有配置不直接改文件,而走 UCI + commit

5. 配置持久化机制

  • Edit = uci set

  • Save & Apply = uci commit + reload/restart

  • 改写的是 /etc/config/* 文件(统一入口,便于 scripts/CLI/GUI 同源)

6. 插件扩展机制(如何增加一个页面)

添加新功能一般需要三件:

/usr/lib/lua/luci/controller/myapp.lua ← 路由 + 控制逻辑

/usr/lib/lua/luci/model/cbi/myapp/*.lua ← 调UCI的模型文件

/usr/lib/lua/luci/view/myapp/*.htm ← 页面模板

注册路由后重启 uhttpd/LuCI 即可显示 UI 模块。

7. 为什么 LuCI 适合路由器/嵌入式

  • 运行在低 RAM/Flash 上(Lua轻量)

  • 统一系统配置模型 (UCI)

  • 面向 RPC(可与 CLI/scripts/daemon 无缝协同)

  • 插件化结构适配 ODM/OEM 场景

相关推荐
阿图灵9 小时前
Agentic AI 架构入门(九):Agent 通信协议全景——ACP/A2A/AG-UI/MCP
人工智能·ui·架构·ai agent·智能体·mcp·agentic ai
这个DBA有点耶10 小时前
3000万个应用共享一套数据库:多租户“逻辑表”架构是如何做到的?
数据库·架构·dba
消失的旧时光-194311 小时前
第一篇:Ktor Client 到底是什么?从 Retrofit 迁移理解 Ktor 网络请求架构
网络·架构·retrofit·ktor·dsl
zlinear数据采集卡11 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
香菜TTT11 小时前
主从架构锁丢失问题-----RedLock
架构
Rain的Java大神之路11 小时前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq
这个DBA有点耶12 小时前
DBA进阶之路:从“修数据库”到“管架构债”
数据库·架构·dba
珠***格13 小时前
通信链路全打通:西格电力四可装置的 4G/5G + 加密认证技术详解
大数据·数据库·分布式·5g·架构·能源
艾德克斯13 小时前
从OCP APAC Summit 2026看AI数据中心供电架构演进与测试挑战
人工智能·ai·架构·数据中心·开闭原则·供电测试
AI产品测评官13 小时前
从技术选型视角:AI招聘寻源类Agent的技术架构与落地实测分析
人工智能·架构·求职招聘