第1章 产品体系结构 1
1.1用户界面和守护进程 2
1.1.1守护进程 2
1.1.2用户界面 3
1.1.3进程间通信 4
1.2Laddie产品的体系结构 4
小结 5
第2章 管理守护进程 6
2.1管理守护进程的通用方法 7
2.1.1基于文件的管理 7
2.1.2基于守护进程的Web界面 8
2.1.3全能方法 8
2.2控制和状态协议 9
2.2.1控制和状态协议的要求 11
2.2.2通用控制和状态协议 11
小结 15
第3章 使用实时访问 17
3.1RTA产品体系结构 17
3.2RTA守护进程体系结构 18
3.3将列和表告知RTA 19
3.3.1列 19
3.3.2表 22
3.4创建第一个RTA程序 23
3.4.1问题描述 23
3.4.2回顾代码 23
3.4.3安装RTA 28
3.4.4编译和连接 29
3.4.5测试 29
3.5一些SQL命令 31
3.5.1SELECT 31
3.5.2UPDATE 32
3.5.3WHERE 32
3.5.4LIMIT 32
3.6RTA内置表介绍 33
3.6.1rtadbg 33
3.6.2rtastat 34
3.6.3rtatables 34
3.6.4rtacolumns 34
3.7RTA表编辑器 35
小结 37
第4章 创建守护进程和保证守护进程安全 39
4.1如何创建守护进程 39
4.1.1加载守护进程配置数据 40
4.1.2进入后台 40
4.1.3成为进程和会话头(sessionleader) 41
4.1.4设置工作目录 43
4.1.5重定向stdin、stdout和stderr 43
4.1.6创建日志 44
4.1.7设置组ID和用户ID 44
4.1.8检查pidfile 45
4.1.9设置umask 48
4.1.10创建信号处理器 48
4.2如何保证守护进程安全 49
4.2.1设计安全的守护进程 49
4.2.2编写安全的守护进程 50
4.2.3降低攻击的破坏程度 52
4.3原型守护进程 54
小结 54
更多参考书目 55
第5章 范例产品:LADDIE报警系统 56
5.1报警系统简介 57
传感器 57
5.2Laddie功能特征 59
5.2.1ladd的配置和状态 59
5.2.2ladd的警报处理 61
5.3Laddie硬件设计 62
5.4Laddie软件设计 64
5.4.1applnit()回调子程序 64
5.4.2polltimeout()回调子程序 65
5.4.3user_update()回调子程序 67
5.5创建和测试ladd 68
小结 69
第6章 日志 71
6.1是否需要日志 71
6.2日志系统的体系结构 72
6.2.1信息源 73
6.2.2信息路由 73
6.2.3信息目的地 74
6.3syslog 76
6.3.1syslog体系结构 76
6.3.2使用syslog 76
6.3.3syslog协议 78
6.3.4使用syslogd守护进程 79
6.3.5局限、优点和syslogd的替代程序 80
6.4按需定制的日志 81
小结 82
第7章 Laddie事件处理 84
7.1新事件处理系统的基本原理 85
7.2logmuxd的特性和功能 86
7.3配置logmuxd 87
7.3.1logmuxd源 87
7.3.2logmuxd过滤器和重写 88
7.3.3logmuxd目的地 90
7.4使用logmuxd的范例 90
7.4.1范例1:logmuxd示范 90
7.4.2范例2:logmuxd和已接受TCP连接 91
7.4.3范例3:logmuxd和SNMP陷阱 94
小结 96
第8章 设计Web界面 97
8.1Web基础知识 98
8.1.1DNS和TCP 98
8.1.2webserver 99
8.1.3CGI 99
8.1.4JavaScript 99
8.1.5发展中的技术 99
8.2确定产品Web界面的需求 99
8.3选择webserver 100
8.3.1选择 100
8.3.2使用PHP 100
8.3.3个案研究:LinksysWRT54G无线路由器 101
8.3.4个案研究:TUXwebserver 101
8.3.5webserver比较 101
8.4UI设计 105
8.4.1菜单系统 105
8.4.2对话框 106
8.4.3错误信息 107
8.4.4使用Ajax提高响应速度 109
8.5实现 109
8.5.1与守护进程交互 110
8.5.2报警状态网页 112
8.5.3报警设置网页 113
8.5.4网页版面设计和菜单系统 114
8.5.5webserver无关性 115
8.5.6使用Ajax进行异步更新 116
8.6改进我们的设计 121
8.7资源 122
小结 122
第9章 设计命令行界面 124
9.1为什么需要CLI 124
9.1.1安全性 125
9.1.2实用性 125
9.1.3带宽 125
9.1.4脚本化能力 125
9.1.5配置备份和恢复 126
9.2CLI的类型 126
9.2.1句子 127
9.2.2向导 127
9.2.3菜单 128
9.2.4有状态的 128
9.2.5字符界面与线界面的比较 129
9.3让用户可以访问CLI 129
9.4LaddieCLI 129
9.4.1Laddie命令汇总 130
9.4.2setlogson 130
9.4.3dump 131
9.4.4help 131
9.5测试命令的代码研究 132
9.5.1CLI词汇表:token.1 132
9.5.2CLI语法:syntax.y 133
9.5.3C代码 133
9.5.4代码研究注解 134
小结 134
第10章 创建前端面板界面 135
10.1按钮、LED和LCD 135
10.1.1按钮 136
10.1.2LED 138
10.1.3LCD 138
10.2设计前端面板UI 139
10.2.1简单化 140
10.2.2尝试、失败、再次尝试 140
10.2.3使用LCD菜单和模式 141
10.2.4快速响应 142
10.3Laddie前端面板 144
10.3.1Laddie的LCD菜单系统 145
10.3.2Laddie前端面板硬件 146
10.3.3Laddie前端面板UI 149
10.4改进我们的设计 152
小结 152
第11章 设计帧缓存界面 154
11.1视频内存的工作原理 155
11.1.1视频内存中的字节是如何被解释的 155
11.1.2视频内存是如何被映射到显示屏上的 157
11.2Linux帧缓存设备驱动程序 158
11.2.1使用open、read、write和close操作帧缓存 158
11.2.2使用ioctl命令配置帧缓存 159
11.2.3一个简单帧缓存图形程序 161
11.3图形库 165
11.4使用SDL创建“Hello,world!”范例 166
11.4.1初始化库 167
11.4.2初始化帧缓存 167
11.4.3创建一个surface 168
11.4.4显示surface 168
11.4.5处理事件 168
11.5图形工具包 169
11.5.1使用STBmenu创建简单UI 170
11.5.2使用STBmenu创建“Hello,world!”范例 173
11.6Laddie帧缓存UI 176
小结 178
第12章 红外遥控器 180
12.1使用红外线进行通信 180
12.1.1编码遥控命令的协议 181
12.1.2通过调制减少对红外线信号的干扰 182
12.1.3使用红外线控制产品 183
12.2遥控接收器的硬件 183
12.2.1探测和解调红外线信号 183
12.2.2解码遥控波形 184
12.2.3Laddie产品的红外线遥控硬件 186
12.3为Laddie产品安装和配置LIRC 189
12.3.1安装LIRC软件 190
12.3.2配置lircserial内核设备驱动程序 191
12.3.3测试lircserial驱动程序 193
12.3.4配置lircd守护进程 195
12.3.5测试lircd守护进程 197
12.3.6配置应用程序的LIRC工具 198
12.3.7控制Laddic产品 199
小结 200
第13章 SNMP实践概述 202
13.1快速浏览术语 203
13.2软件 204
13.3安装SNMP 204
13.3.1下载和安装 204
13.3.2检查安装 205
13.3.3配置代理 205
13.3.4启动代理 206
13.4探索SNMP 206
13.4.1可读性强的MIB文件名 208
13.4.2联网打印机 209
13.4.3snmptable命令 209
13.4.4MIB-2:TCP连接表 210
13.4.5MIB-2:UDP表 211
13.4.6MIB-2内容 212
13.5使用SNMP写入值 213
13.5.1设置sysContact 13
13.5.2设置sysName 215
13.6SNMP陷阱 216
13.6.1使用snmptrapd接收陷阱 216
13.6.2携带数据的陷阱:linkUp和linkDown 218
小结 220
第14章 设计SNMPMIB 221
14.1我们的目标 221
14.2企业编号 222
14.3MIB文件 223
14.4LADDIE-GROUP-SMI 224
14.5创建LAD-MIB 227
14.5.1模块定义 228
14.5.2版本号和防区数 230
14.5.3警报表 232
14.5.4陷阱 234
14.6验证M1B 235
小结 236
第15章 实现你的SNMPMIB 237
15.1Net-SNMP代理 238
15.2MIB框架——mib2c 241
15.3头文件——ladProject.h 242
15.4代码文件——ladProject.c 243
15.4.1包含 243
15.4.2基准OID 244
15.4.3MIB对象定义 244
15.4.4RTA访问函数 247
15.4.5初始化函数 249
15.4.6标量 250
15.4.7读警报表 252
15.4.8写警报表 255
15.5重访Makefile 258
15.6调试 259
15.7陷阱 260
小结 260
附录A RTA参考资料 262
A.1RTA概述 263
A.2RTA常量 264
A.3数据结构 264
A.4API子程序 268
A.4.1dbcommand()子程序 268
A.4.2rta-add_tableQ子程序 269
A.4.3SQLstring()子程序 270
A.4.4rta_config_dir()子程序 270
A.4.5rta_save()子程序 271
A.4.6rtaload()子程序 271
A.5SELECT和UPDATE语法 272
A.5.1SELECT命令 272
A.5.2UPDATE命令 273
A.6内部RTA表 274
A.6.1rtatables表 274
A.6.2rtacolumns表 275
A.7调试配置 275
A.8错误信息 276
A.8.1SQL请求信息 276
A.8.2内部调试信息 277
A.9回调函数 278
A.9.1读回调函数 278
A.9.2写回调函数 279
附录B SNMP综述 280
B.1为什么使用SNMP 280
B.2代理和管理器 281
B.3名字空间、语法和协议 281
B.4MIB 281
B.5OID 282
B.6MIB-2 283
B.7SMI 285
B.8SNMP协议 286
B.8.1基本命令:GET、SET和GETNEXT 286
B.8.2使用GETNEXT遍历MIB 286
B.8.3陷阱和通告 287
B.8.4命令行工具:范例 287
B.9SNMPvl、SNMPv2和SNMPv3 288
B.10SNMP数据类型 289
B.11SNMP表 290
B.12定义新类型 291
B.13MIB文件的结构 292
小结 294
附录C 安装帧缓存设备驱动程序 295
C.1为你的视频卡寻找帧缓存设备驱动程序 295
C.1.1vesafb驱动程序 296
C.1.2硬件相关驱动程序 296
C.1.3没有包含在Laddie光盘中的驱动程序 297
C.2配置帧缓存设备驱动程序 297
C.2.1vesafb驱动程序 298
C.2.2硬件相关驱动程序 299
附录D DB-To-File工具 301
D.1概述 301
D.2表定义 302
D.2.1tbl2file表 302
D.2.2tbl2field表 303
D.3tbl2filed范例 304
D.4安全注意事项 305
附录E Laddie产品可启动光盘 306
E.1运行Laddie产品 306
E.1.1启动光盘 307
E.1.2操作帧缓存用户界面 307
E.1.3访问Web界面 307
E.1.4体验Linuxshell和其他用户界面 308
E.1.5关闭Laddie产品 308
E.2了解光盘内容 308
E.2.1Laddie产品源代码 309
E.2.2Laddie产品库 310
E.2.3启动脚本 310
E.2.4LinuxFrom-Scratch发行版及附加软件包 310
E.3重新编译Laddie产品 311