UCI简介
“uci"是"Unified Configuration Interface”(统一配置界面)的缩写,用于OpenWrt整个系统的配置集中化。
“uci"是"Unified Configuration Interface”(统一配置界面)的缩写,用于OpenWrt整个系统的配置集中化。
git checkout --orphan latest_branch
git add -A
git commit -am 'initial commit'
登录后复制
The fatal: refusing to merge histories
error is a fairly common Git error. It appears when a developer tries to merge two unrelated projects into a single branch.
This error appears when the branch has its commit histories and tags incompatible with the pull request or clone.
在openwrt文件系统中,lua语言的代码不要编译,类似一种脚本语言被执行,还有一些uhttpd服务器的主目录,它们是:
/www/index.html
cgi-bin/luci
luci-static/xxx/xx.css、js、gif
/usr/lib/lua/nixio.so、uci.so
luci/http.lua、dispatcher.lua、core…
controller/xxx.lua
model/xxx.lua
view/xxx.lua
网页请求格式基本都如下所示:,说明处理都在服务器的默认网站下的/cgi-bin/luci文件进行处理。
有些同学可能想学习openwrt系统,但手头又没有嵌入式板子,是编译和运行系统,然后再增加自己的功能。下面介绍如何编译openwrt系统后再虚拟机下运行。
选择vmdk目标文件格式
- ① 启动脚本 /etc/init.d/xxx;
- ② 启动脚本通过UCI分析库从 /etc/config/xxx 获得启动参数;
- ③ 启动脚本完成正常启动。
名称 | 描述 | 继承自 | 模板 |
---|---|---|---|
NamedSection | A fixed configuration section defined by its name | NamedSection = class(AbstractSection) | cbi/nsection |
TypedSection | A (set of) configuration section(s) defined by the type | TypedSection = class(AbstractSection) | cbi/tsection |
Node | Node pseudo abstract class | Node = class() | cbi/node |
Template | A simple template element | Template = class(Node) | |
Map | A map describing a configuration file | Map = class(Node) | cbi/map |
Compound | Container | Compound = class(Node) | cbi/compound |
Delegator | Node controller | Delegator = class(Node) | cbi/delegator |
SimpleForm | A Simple non-UCI form | SimpleForm = class(Node) | cbi/simpleform |
Form | Form = class(SimpleForm) | ||
AbstractSection | AbstractSection = class(Node) | ||
SimpleSection | SimpleSection = class(AbstractSection) | cbi/nullsection | |
Table | Table = class(AbstractSection) | cbi/tblsection | |
AbstractValue | An abstract Value Type | AbstractValue = class(Node) | |
Value | A one-line value | Value = class(AbstractValue) | cbi/value |
DummyValue | This does nothing except being there | DummyValue = class(AbstractValue) | cbi/dvalue |
Flag | A flag being enabled or disabled | Flag = class(AbstractValue) | cbi/fvalue |
ListValue | A one-line value predefined in a list | ListValue = class(AbstractValue) | cbi/lvalue |
MultiValue | Multiple delimited values | MultiValue = class(AbstractValue) | cbi/mvalue |
StaticList | StaticList = class(MultiValue) | ||
DynamicList | DynamicList = class(AbstractValue) | cbi/dynlist | |
TextValue | A multi-line value | TextValue = class(AbstractValue) | cbi/tvalue |
Button | Button = class(AbstractValue) | cbi/button | |
FileUpload | FileUpload = class(AbstractValue) | cbi/upload | |
FileBrowser | FileBrowser = class(AbstractValue) | cbi/browser | |
Page | A simple node | Page = class(Node) |
参数说明:
The error “refspec matches more than one” is shown while pushing a branch to Bitbucket.
This occurs because there is more than one Git ref that matches the ref name specified in the push command.
Suppose a repo has a branch and a tag with the same name, “dev
”.
When an attempt is made to push the “dev” branch to the remote, the error “refspec matches more than one
” will be shown and the push fails.