Introduction
------------
The configuration database is collection of configuration options
organized in a tree structure:
+- Code maturity level options
| +- Prompt for development and/or incomplete code/drivers
+- General setup
| +- Networking support
| +- System V IPC
| +- BSD Process Accounting
| +- Sysctl support
+- Loadable module support
| +- Enable loadable module support
| +- Set version information on all module symbols
| +- Kernel module loader
+- ...
Every entry has its own dependencies. These dependencies are used
to determine the visible of an entry. Any child entry is only
visible if its parent entry is also visible.
Menu entries
------------
Most entries define a config option, all other entries help to organize
them. A single configuration option is defined like this:
config MODVERSIONS
bool "Set version information on all module symbols"
depends MODULES
help
Usually, modules have to be recompiled whenever you switch to a new
kernel. ...
Every line starts with a key word and can be followed by multiple
arguments. "config" starts a new config entry. The following lines
define attributes for this config option. Attributes can be the type of
the config option, input prompt, dependencies, help text and default
values. A config option can be defined multiple times with the same
name, but every definition can have only a single input prompt and the
type must not conflict.
Menu attributes
---------------
A menu entry can have a number of attributes. Not all of them are
applicable everywhere (see syntax).
- type definition: "bool"/"tristate"/"string"/"hex"/"integer"
Every config option must have a type. There are only two basic types:
tristate and string, the other types base on these two. The type
definition optionally accepts an input prompt, so these two examples
are equivalent:
bool "Networking support"
and
bool
prompt "Networking support"
- input prompt: "prompt" <prompt> ["if" <expr>]
Every menu entry can have at most one prompt, which is used to display
to the user. Optionally dependencies only for this prompt can be added
with "if".
- default value: "default" <symbol> ["if" <expr>]
A config option can have any number of default values. If multiple
default values are visible, only the first defined one is active.
Default values are not limited to the menu entry, where they are
defined, this means the default can be defined somewhere else or be
overriden by an earlier definition.
The default value is only assigned to the config symbol if no other
value was set by the user (via the input prompt above). If an input
prompt is visible the default value is presented to the user and can
be overridden by him.
Optionally dependencies only for this default value can be added with
"if".
- dependencies: "depends on"/"requires" <expr>
This defines a dependency for this menu entry. If multiple
dependencies are defined they are connected with '&&'. Dependencies
are applied to all other options within this menu entry (which also
accept "if" expression), so these two examples are equivalent:
bool "foo" if BAR
default y if BAR
and
depends on BAR
bool "foo"
default y
- help text: "help"
This defines a help text. The end of the help text is determined by
the level indentation, this means it ends at the first line which has
a smaller indentation than the first line of the help text.
Menu dependencies
-----------------
Dependencies define the visibility of a menu entry and can also reduce
the input range of tristate symbols. The tristate logic used in the
expressions uses one more state than normal boolean logic to express the
module state. Dependency expressions have the following syntax:
<expr> ::= <symbol> (1)
<symbol> '=' <symbol> (2)
<symbol> '!=' <symbol> (3)
'(' <expr> ')' (4)
'!' <expr> (5)
<expr> '||' <expr> (6)
<expr> '&&' <expr> (7)
Expressions are listed in decreasing order of precedence.
(1) Convert the symbol into an expression. Boolean and tristate symbols
are simply converted into the respective expression values. All
other symbol types result in 'n'.
(2) If the values of both symbols are equal, it returns 'y',
otherwise 'n'.
(3) If the values of both symbols are equal, it returns 'n',
otherwise 'y'.
(4) Returns the value of the expression. Used to override precedence.
(5) Returns the result of (2-/expr/).
(6) Returns the result of min(/expr/, /expr/).
(7) Returns the result of max(/expr/, /expr/).
An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
respectively for calculations). A menu entry becomes visible when it's
expression evaluates to 'm' or 'y'.
There are two type of symbols: constant and nonconstant symbols.
Nonconstant symbols are the most common ones and are defined with the
'config' statement. Nonconstant symbols consist entirely of alphanumeric
characters or underscores.
Constant symbols are only part of expressions. Constant symbols are
always surrounded by single or double quotes. Within the quote any
other character is allowed and the quotes can be escaped using '\'.
Menu structure
--------------
The position of a menu entry in the tree is determined in two ways. First
it can be specified explicitely:
menu "Network device support"
depends NET
config NETDEVICES
...
endmenu
All entries within the "menu" ... "endmenu" block become a submenu of
"Network device support". All subentries inherit the dependencies from
the menu entry, e.g. this means the dependency "NET" is added to the
dependency list of the config option NETDEVICES.
The other way to generate the menu structure is done by analyzing the
dependencies. If a menu entry somehow depends on the previous entry, it
can be made a submenu of it. First the the previous (parent) symbol must
be part of the dependency list and then one of these two condititions
must be true:
- the child entry must become invisible, if the parent is set to 'n'
- the child entry must only be visible, if the parent is visible
config MODULES
bool "Enable loadable module support"
config MODVERSIONS
bool "Set version information on all module symbols"
depends MODULES
comment "module support disabled"
depends !MODULES
MODVERSIONS directly depends on MODULES, this means it's only visible if
MODULES is different from 'n'. The comment on the other hand is always
visible when MODULES it's visible (the (empty) dependency of MODULES is
also part of the comment dependencies).
Kconfig syntax
--------------
The configuration file describes a series of menu entries, where every
line starts with a keyword (except help texts). The following keywords
end a menu entry:
- config
- choice/endchoice
- comment
- menu/endmenu
- if/endif
- source
The first four also start the definition of a menu entry.
config:
"config" <symbol>
<config options>
This defines a config symbol <symbol> and accepts any of above
attributes as options.
choices:
"choice"
<choice options>
<choice block>
"endchoice"
This defines a choice group and accepts any of above attributes as
options. A choice can only be of type bool or tristate, while a boolean
choice only allows a single config entry to be selected, a tristate
choice also allows any number of config entries to be set to 'm'. This
can be used if multiple drivers for a single hardware exists and only a
single driver can be compiled/loaded into the kernel, but all drivers
can be compiled as modules.
A choice accepts another option "optional", which allows to set the
choice to 'n' and no entry needs to be selected.
comment:
"comment" <prompt>
<comment options>
This defines a comment which is displayed to the user during the
configuration process and is also echoed to the output files. The only
possible opti
没有合适的资源?快使用搜索试试~ 我知道了~
luci-luci-0.11.zip
共2374个文件
po:924个
lua:409个
htm:163个
需积分: 9 6 下载量 62 浏览量
2020-03-18
22:57:37
上传
评论
收藏 4.8MB ZIP 举报
温馨提示
git上pull的源码,因为0.10之前的版本,使用技术不够稳定,大约源于2008年,所以后面一般用的成熟的都是1.0之后的版本,和module扩展和核心lib。
资源详情
资源评论
资源推荐
收起资源包目录
luci-luci-0.11.zip (2374个子文件)
01-config-migration 1KB
23-restricted-wan 2KB
24-policyrouting 5KB
30-policyrouting 4KB
axhttpd.aip 13KB
asterisk 5KB
common.awk 526B
ssltest.c.bak 54KB
batmand 226B
.buildpath 191B
ssltest.c 55KB
tls1.c 54KB
bignum.c 41KB
bigint.c 39KB
proc.c 32KB
x509write.c 28KB
mconf.c 25KB
expr.c 25KB
axssl.c 25KB
fwd_rules.c 22KB
fwd_config.c 21KB
rsa.c 19KB
sha1.c 16KB
symbol.c 16KB
textbox.c 15KB
p12.c 15KB
luci-bwc.c 15KB
axhttpd.c 14KB
x509.c 14KB
aes.c 14KB
tls1_svr.c 14KB
fs.c 13KB
loader.c 13KB
asn1.c 13KB
address.c 13KB
menubox.c 12KB
md5.c 12KB
sockopt.c 11KB
larlib.c 11KB
tls1_clnt.c 11KB
watchdog.c 11KB
gen_cert.c 11KB
conf.c 11KB
havege.c 10KB
md5.c 10KB
crypto_misc.c 10KB
checklist.c 10KB
util.c 10KB
menu.c 10KB
process.c 10KB
confdata.c 9KB
template_utils.c 9KB
binary.c 9KB
file.c 9KB
rsa.c 8KB
openssl.c 8KB
fwd_xtables.c 8KB
sha1.c 7KB
perf_bigint.c 7KB
fastindex.c 7KB
axtls-compat.c 7KB
template_parser.c 7KB
fwd.c 7KB
bind.c 7KB
lar.c 7KB
tls-context.c 6KB
tls-socket.c 6KB
inputbox.c 6KB
nixio.c 6KB
template_lmo.c 6KB
timing.c 6KB
user.c 6KB
ucix.c 5KB
mingw-compat.c 5KB
tls-crypto.c 5KB
md2.c 5KB
io.c 5KB
po2lmo.c 5KB
poll.c 5KB
tdate_parse.c 4KB
px5g.c 4KB
os_port.c 4KB
socket.c 4KB
htpasswd.c 4KB
splice.c 4KB
bit.c 4KB
fwd_addr.c 4KB
template_lualib.c 3KB
hmac.c 3KB
yesno.c 3KB
syslog.c 3KB
rc4.c 3KB
ucix.c 2KB
msgbox.c 2KB
protoent.c 2KB
fwd_ipc.c 2KB
util.c 2KB
cli.c 2KB
fwd_utils.c 2KB
datatest.c 1KB
共 2374 条
- 1
- 2
- 3
- 4
- 5
- 6
- 24
weixin_41782780
- 粉丝: 12
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0