OpenWrt智能路由系统开发
OpenWrt社区对中国开发者寄语
1 路由器概述
1.1 传统路由器
1.2 智能路由器
1.3 传统路由器与智能路由器的区别
2 OpenWrt介绍
2.1 什么是OpenWrt
2.2 哪些产品用了OpenWrt
2.3 OpenWrt是如何支持路由器CPU的
3 智能路由器硬件
3.1 MIPS架构
3.2 国内常见路由器的配置
3.3 常见路由器芯片厂商
3.4 本书智能路由硬件
3.4.1 本书硬件的由来
3.4.2 MT7620芯片
3.4.3 MR808开发板简述
3.4.4 AxWRT系统
4 智能路由开发环境搭建
4.1 小企鹅的力量
4.2 准备学习工具
4.3 安装VirtualBox虚拟机
4.4 在虚拟机中安装Centos
4.4.1 创建新虚拟主机
4.4.2 配置新虚拟机
4.4.3 安装Centos系统
4.5 SSH远程登录
4.5.1 SSH的作用
4.5.2 启动网卡
4.5.3 查看当前IP
4.5.4 SSH连接
4.6 WinSCP文件传输
4.6.1 SCP协议
4.6.2 安装WinSCP客户端
4.6.3 创建到Linux的连接
4.6.4 文件传输
5 基本知识
5.1 向系统下达命令
5.2 时间命令
5.2.1 查看当前日期
5.2.2 查看当前日历
5.3 关机和重启
5.3.1 立即安全关闭系统
5.3.2 重新启动系统
5.3.3 强制将缓存写入存储器
5.4 权限机制
5.4.1 文件权限
5.4.2 所有者
5.4.3 文件容量
5.4.4 文件日期
5.4.5 可执行文件
5.4.6 隐含文件
5.4.7 修改所有人
5.4.8 修改所有组
5.4.9 修改文件权限
5.5 文件与目录管理
5.5.1 路径概念
5.5.2 特殊目录
5.5.3 变换目录
5.5.4 查看当前所在目录是哪个
5.5.5 创建目录
5.5.6 删除目录
5.5.7 列表文件和目录
5.5.8 复制文件或目录
5.5.9 删除文件或整个目录
5.5.10 移动或更名
5.6 文件分析
5.6.1 查看文件内容
5.6.2 分行查看
5.6.3 查看文件最后几行
5.6.4 查看启动信息
5.7 更多指令
5.8 Vi编辑器
5.8.1 Vi介绍
5.8.2 Vi的命令
5.8.3 Vi的3个状态
5.8.4 Vi编辑操作
5.9 基础Shell编程
5.9.1 何为Shell编程
5.9.2 Shell的运行方式
5.9.3 Hello World!
5.9.4 变量
5.9.5 运算符
5.9.6 注释语法
5.9.7 字符串
5.9.8 条件判断
5.9.9 循环表达
5.9.10 输入/输出重定向
5.9.11 使用黑洞,一劳永逸
6 OpenWrt刷机
6.1 通过串口进入系统
6.1.1 操作板子注意事项
6.1.2 连接串口步骤
6.2 认识U-Boot
6.3 U-Boot的TFTP刷机
6.3.1 TFTP的准备
6.3.2 TFTP刷机流程
6.3.3 可能遇到的问题
6.4 U-Boot的Web刷机
6.4.1 触发按钮准备
6.4.2 可能遇到的问题
7 分区、外网与OPKG
7.1 了解分区
7.1.1 查看系统MTD分配
7.1.2 查看系统MTD的分区
7.1.3 将非文件系统分区读出来
7.2 文件系统
7.2.1 透明挂载/根目录
7.2.2 基本系统演示
7.2.3 第一次接入网络
7.3 软件包管理OPKG
7.3.1 OPKG语法格式
7.3.2 软件包的内核依赖问题
7.3.3 OPKG的配置
7.3.4 关于OPKG软件包
8 UCI命令系统
8.1 UCI命令
8.2 UCI的文件和流程
8.3 UCI的文件语法
8.3.1 config节点语法格式
8.3.2 option选项语法格式
8.3.3 list列表选项语法格式
8.3.4 UCI的语法容错
8.3.5 UCI无法容忍的语法
8.4 UCI命令读写配置
8.4.1 读取类语法
8.4.2 写入类语法
8.5 综合实例
8.5.1 语法测试
8.5.2 举例开启Wi-Fi
9 智能路由配置
9.1 网络配置文件
9.1.1 查看网络配置
9.1.2 查看当前网络
9.1.3 查看br-lan桥状态
9.1.4 查看内核日志
9.1.5 网口VLAN
9.2 配置WAN口外网
9.2.1 动态获取IP选项
9.2.2 指定静态IP语法
9.2.3 PPPOE拨号上网语法
9.2.4 WAN口设置
9.2.5 WAN口设置
9.3 配置LAN口服务
9.4 配置无线网络
9.4.1 无线查看命令
9.4.2 实现无线中继
9.5 DHCP服务
9.6 如何连接外网
10 防火墙与UPnP
10.1 防火墙命令
10.2 防火墙配置
10.2.1 defaults默认配置
10.2.2 zone域配置
10.2.3 forwarding转发配置
10.2.4 rule规则
10.2.5 direction端口转发
10.3 实现UPnP
10.3.1 安装UPnP
10.3.2 配置UPnP
10.3.3 UPnP命令
11时区、服务、SSH与SCP
11.1 信息和时区
11.2 服务管理
11.3 SSH远程登录
11.3.1 SSH配置
11.3.2 SSH登录
11.4 SCP文件复制
11.4.1 安装SCP客户端
11.4.2 SCP操作
12 存储器扩展
12.1 实现原理
12.2 存储器选型
12.3 初始化存储器
12.3.1 存储器软件包
12.3.2 识别存储器
12.3.3 存储器分区
12.3.4 存储器格式化
12.4 存储器扩容设置
12.4.1 rootfs_data数据迁移
12.4.2 获得存储器UUID
12.4.3 自动挂载配置
12.4.4 存储区自动挂载
12.4.5 swap交换区自动挂载
12.4.6 关于挂载的注意事项
13 网络存储与文件共享
13.1 Windows文件共享实现
13.1.1 创建文件夹/pub
13.1.2 安装Samba
13.1.3 Samba配置说明
13.1.4 配置共享目录
13.1.5 Windows连接方法
13.2 FTP文件共享实现
13.2.1 安装Pure-FTPD
13.2.2 Pure-FTPD配置说明
13.2.3 配置Pure-FTPD
13.2.4 创建FTP账户
13.2.5 FTP穿越防火墙
13.2.6 WinSCP做FTP客户端
13.2.7 浏览器作FTP客户端
14 智能路由器媒体中心
14.1 USB声卡驱动支持
14.1.1 媒体播放必备条件
14.1.2 选择合适的USB声卡
14.1.3 安装声卡驱动
14.1.4 设置默认音量
14.1.5 用命令行播放MP3
14.2 安卓手机远程播放音乐
14.2.1 MP介绍
14.2.2 安装MPD服务
14.2.3 安卓系统安装客户端
14.2.4 关于安卓手机播放音乐
14.3 DLNA数字媒体服务器
14.3.1 DLNA介绍
14.3.2 安装配置MiniDLNA
14.3.3 Inotify与overlay的冲突
14.3.4 启动服务
14.3.5 DLNA客户端
14.3.6 DLNA其他功能
14.4 苹果AirPlay播放音乐
14.4.1 AirPlay介绍
14.4.2 安装与配置Shairport
14.4.3 辅助配置和检查
14.4.4 使用终端播放
15 智能路由器编程工具
15.1 Web+PHP建站系统
15.1.1 PHP语言
15.1.2 Web服务
15.1.3 PHP测试代码
15.2 SQLite3与MySQL数据库应用
15.2.1 SQLite3数据库
15.2.2 MySQL数据库
15.3 Python、Lua与Ruby编程工具
15.3.1 Python
15.3.2 Lua
15.3.3 Ruby
16 智能路由器服务软件
16.1 VPN(PPTP)服务器与客户端
16.1.1 PPTP协议VPN服务器
16.1.2 PPTP协议VPN客户端
16.2 USB摄像头
16.2.1 USB摄像头准备
16.2.2 MJPG-streamer
16.2.3 浏览器访问
16.3 迅雷远程下载
16.3.1 迅雷远程下载条件
16.3.2 迅雷远程下载
16.4 WiFiDog广告路由器
16.4.1 WiFiDog功能服务
16.4.2 WiFiDog验证界面
17 编译定制OpenWrt固件
17.1 OpenWrt编译环境
17.1.1 编译与交叉编译
17.1.2 AxWRT与OpenWrt的关系
17.1.3 OpenWrt的版本关系
17.1.4 准备编译环境
17.2 OpenWrt固件生成
17.2.1 编译流程
17.2.2 获取AxWRT源代码
17.2.3 获取软件包源代码
17.2.4 OpenWrt菜单选项配置
17.2.5 编译固件
17.2.6 清理编译
17.2.7 编译完成
17.3 OpenWrt源码预设
17.3.1 Feeds源
17.3.2 OPKG自定义软件仓库
17.3.3 预设编译参数文件
17.3.4 OpenWrt文件夹的作用
17.3.5 Target/Linux下平台预设文件
17.4 OpenWrt官方版编译
17.4.1 关于编译
17.4.2 关于硬件支持
18 编译定制IPK软件包
18.1 IPK软件包与OPKG命令
18.2 IPK软件包规范
18.2.1Makefile格式与流程
18.2.2 PKG_*任务的作用
18.2.3 定义Build/*的作用
18.2.4 定义Package/*的作用
18.2.5 IPK软件包补充说明
18.3 简易软件包mytest
18.3.1 mytest软件包的制作
18.3.2 mytest调试
18.3.3 下载测试
18.4 软件包示例xware
18.5 软件包示例shairport
19 智能路由器外设应用实例
19.1 OpenWrt的硬件支持
19.1.1 DTS设备树
19.1.2 GPIO总线
19.2 OpenWrt对LED驱动的支持
19.2.1 LED电路设计
19.2.2 手动测试LED
19.2.3 将LED注册为系统标准LED
19.2.4 LED设置心跳功能
19.2.5 将LED设置为WAN口状态
19.3 OpenWrt对按钮驱动的支持
19.3.1 按钮电路设计
19.3.2 手动测试按钮
19.3.3 将按钮注册为系统按钮
19.3.4 编写脚本检测按钮时长
19.4 OpenWrt对继电器驱动的支持
19.4.1 继电器电路设计
19.4.2 手动测试继电器