OpenWrt智能路由系统开发 跟hoowa学智能路由
书籍作者:王伟 |
ISBN:9787115477118 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:4991 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书汇集了各类基于OpenWrt系统的路由器、物联网、智能家居方向的技能和行业内知名企业的技术经验。本书区别于传统嵌入式系统书籍,并没有一上来介绍那些晦涩的软硬件知识,本书所介绍的内容门槛更低,更适合读者循序渐进地完成学习。书中使用更轻松的表达方式,让读者开开心心便可以完成智能路由器的开发。
由于路由器大量采用了开源操作系统,哥伦比亚大学法学院教授Eben Moglen向路由器厂商提出了开源路由器系统部分的要求,这样,2004年OpenWrt诞生了White Russian版,之后每一两年便发布一个新的版本。现今,OpenWrt系统在智能路由器行业已是事实性标准,大量的芯片厂商及路由器厂商(包括小米、极路由、极企科技等知名互联网科技企业)均采用该系统作为路由器或智能家居控制中心,即使宣称没有使用OpenWrt的厂商,也多是在该系统基础之上进行了业务定制。
OpenWrt作为开源组织采取松散管理,很难找到一份比较系统的专业技术文档用于爱好者学习。因此2012年由hoowa发起、众多技术“大神”参与的“跟hoowa学智能路由”在线培训开始启航,本书所有内容均原滋原味来源于此。本书遵循“学中做,做中学”的理念,将内容分为19章,读者可以跟着本书内容,边学边做,终完成一个智能路由器的开发。
本书主要从OpenWrt这个系统的角度来介绍,但书中内容不局限于路由器本身,通过阅读本书,读者可以掌握智能家居、智能玩具、工业控制等各类不同设备的玩法。本书适合计算机或电子类相关学生、从事IT行业的人员、智能设备或OpenWrt系统的发烧友、各智能设备厂商员工阅读。
作者简介
孙冰
1982年出生于辽宁省营口市。从小学4年级开始接触互联网,作为首批中国互联网弄潮儿,2001年只身到中关村从事Unix/Linux系统开发。2003年成立Perl语言中国协会,致力于Perl语言推广工作,在CSDN开设开源专家博客。2008年创建中国开源语音通信项目Freeiris。极企科技联合创始人、GLG集团专家顾问、雷锋网专栏撰稿人。
王伟
副教授。自2009年起,主要从事嵌入式系统软硬件开发相关教学与科研工作,近年来发表中外文学术论文十余篇,出版嵌入式系统开发相关书籍一部,翻译著作一部。多次指导学生参加省级及国jia级专业竞赛,取得优异成绩。从事嵌入式Linux、单片机相关教学工作多年,有较丰富的嵌入式开发经验。
刘龙
副教授。东北师范大学毕业,自2005年起从事嵌入式Linux系统研究以来,发表中文核心级别以上论文十余篇,参与或主持横纵向项目5项,带领学生取得国jia级比赛奖项若干。从事嵌入式Linux方面教学工作多年,曾设计过多款嵌入式产品,具有较丰富的系统开发经验。
编辑推荐
极企科技联合创始人力作
OpenWrt社区经理Gregers Petersen亲自推荐
本书主要从OpenWrt这个系统的角度来介绍,但书中内容不局限于路由器本身,通过阅读本书,读者可以掌握智能家居、智能玩具、工业控制等各类不同设备的玩法。
目录
第 1章 路由器概述 1
1.1 传统路由器 1
1.2 智能路由器 1
1.3 传统路由器与智能路由器的区别 2
第 2章 OpenWrt介绍 3
2.1 什么是OpenWrt 3
2.2 哪些产品用了OpenWrt 3
2.3 OpenWrt是如何支持路由器CPU的 4
第3章 智能路由器硬件 5
3.1 MIPS架构 5
3.2 国内常见路由器的配置 5
3.3 常见路由器芯片厂商 6
3.4 本书智能路由硬件 7
3.4.1 本书硬件的由来 7
3.4.2 MT7620芯片 7
3.4.3 MR808开发板简述 8
3.4.4 AXWRT系统 11
第4章 智能路由开发环境搭建 12
4.1 小企鹅的力量 12
4.2 准备学习工具 13
4.3 安装VirtualBox虚拟机 13
4.4 在虚拟机中安装Centos 17
4.4.1 创建新虚拟主机 17
4.4.2 配置新虚拟机 18
4.4.3 安装Centos系统 20
4.5 SSH远程登录 23
4.5.1 SSH的作用 23
4.5.2 启动网卡 23
4.5.3 查看当前IP 24
4.5.4 SSH连接 24
4.6 WinSCP文件传输 25
4.6.1 SCP协议 25
4.6.2 安装WinSCP客户端 26
4.6.3 创建到Linux的连接 28
4.6.4 文件传输 29
第5章 基本知识 30
5.1 向系统下达命令 30
5.2 时间命令 30
5.2.1 查看当前日期 30
5.2.2 查看当前日历 31
5.3 关机和重启 31
5.3.1 立即安全关闭系统 31
5.3.2 重新启动系统 31
5.3.3 强制将缓存写入存储器 31
5.4 权限机制 31
5.4.1 文件权限 32
5.4.2 所有者 32
5.4.3 文件容量 32
5.4.4 文件日期 32
5.4.5 可执行文件 32
5.4.6 隐含文件 33
5.4.7 修改所有人 33
5.4.8 修改所有组 33
5.4.9 修改文件权限 34
5.5 文件与目录管理 34
5.5.1 路径概念 34
5.5.2 特殊目录 35
5.5.3 变换目录 35
5.5.4 查看当前所在目录是哪个 35
5.5.5 创建目录 36
5.5.6 删除目录 36
5.5.7 列表文件和目录 36
5.5.8 复制文件或目录 37
5.5.9 删除文件或整个目录 38
5.5.10 移动或更名 38
5.6 文件分析 39
5.6.1 查看文件内容 39
5.6.2 分行查看 39
5.6.3 查看文件后几行 39
5.6.4 查看启动信息 40
5.7 更多指令 40
5.8 Vi编辑器 40
5.8.1 Vi介绍 40
5.8.2 Vi的命令 40
5.8.3 Vi的3个状态 41
5.8.4 Vi编辑操作 41
5.9 基础Shell编程 43
5.9.1 何为Shell编程 43
5.9.2 Shell的运行方式 44
5.9.3 Hello World! 44
5.9.4 变量 44
5.9.5 运算符 47
5.9.6 注释语法 53
5.9.7 字符串 54
5.9.8 条件判断 54
5.9.9 循环表达 56
5.9.10 输入/输出重定向 58
5.9.11 使用黑洞,一劳永逸 59
第6章 OpenWrt刷机 61
6.1 通过串口进入系统 61
6.1.1 操作板子注意事项 61
6.1.2 连接串口步骤 61
6.2 认识U-Boot 63
6.3 U-Boot的TFTP刷机 64
6.3.1 TFTP的准备 64
6.3.2 TFTP刷机流程 65
6.3.3 可能遇到的问题 67
6.4 U-Boot的Web刷机 67
6.4.1 触发按钮准备 67
6.4.2 可能遇到的问题 69
第7章 分区、外网与OPKG 70
7.1 了解分区 70
7.1.1 查看系统MTD分配 72
7.1.2 查看系统MTD的分区 72
7.1.3 将非文件系统分区读出来 72
7.2 文件系统 73
7.2.1 透明挂载/根目录 73
7.2.2 基本系统演示 74
7.2.3 第 一次接入网络 75
7.3 软件包管理OPKG 77
7.3.1 OPKG语法格式 77
7.3.2 软件包的内核依赖问题 78
7.3.3 OPKG的配置 78
7.3.4 关于OPKG软件包 79
第8章 UCI命令系统 80
8.1 UCI命令 80
8.2 UCI的文件和流程 80
8.3 UCI的文件语法 81
8.3.1 config节点语法格式 81
8.3.2 option选项语法格式 82
8.3.3 list列表选项语法格式 82
8.3.4 UCI的语法容错 82
8.3.5 UCI无法容忍的语法 82
8.4 UCI命令读写配置 82
8.4.1 读取类语法 83
8.4.2 写入类语法 83
8.5 综合实例 84
8.5.1 语法测试 85
8.5.2 举例开启Wi-Fi 86
第9章 智能路由配置 88
9.1 网络配置文件 88
9.1.1 查看网络配置 88
9.1.2 查看当前网络 89
9.1.3 查看br-lan桥状态 90
9.1.4 查看内核日志 91
9.1.5 网口VLAN 91
9.2 配置WAN口外网 91
9.2.1 动态获取IP选项 92
9.2.2 静态IP语法 92
9.2.3 PPPOE拨号上网语法 93
9.2.4 WAN口设置 94
9.2.5 WAN口设置 94
9.3 配置LAN口服务 95
9.4 配置无线网络 97
9.4.1 无线查看命令 99
9.4.2 实现无线中继 99
9.5 DHCP服务 102
9.6 如何连接外网 105
第 10章 防火墙与UPnP 106
10.1 防火墙命令 106
10.2 防火墙配置 106
10.2.1 defaults默认配置 107
10.2.2 zone域配置 107
10.2.3 forwarding转发配置 108
10.2.4 rule规则 109
10.2.5 direction端口转发 110
10.3 实现UPnP 111
10.3.1 安装UPnP 111
10.3.2 配置UPnP 112
10.3.3 UPnP命令 114
第 11章 时区、服务、SSH与SCP 115
11.1 信息和时区 115
11.2 服务管理 118
11.3 SSH远程登录 118
11.3.1 SSH配置 118
11.3.2 SSH登录 119
11.4 SCP文件复制 121
11.4.1 安装SCP客户端 121
11.4.2 SCP操作 123
第 12章 存储器扩展 124
12.1 实现原理 124
12.2 存储器选型 124
12.3 初始化存储器 125
12.3.1 存储器软件包 125
12.3.2 识别存储器 126
12.3.3 存储器分区 126
12.3.4 存储器格式化 128
12.4 存储器扩容设置 129
12.4.1 rootfs_data数据迁移 129
12.4.2 获得存储器UUID 130
12.4.3 自动挂载配置 130
12.4.4 存储区自动挂载 132
12.4.5 swap交换区自动挂载 133
12.4.6 关于挂载的注意事项 134
第 13章 网络存储与文件共享 135
13.1 Windows文件共享实现 135
13.1.1 创建文件夹/pub 135
13.1.2 安装Samba 135
13.1.3 Samba配置说明 135
13.1.4 配置共享目录 137
13.1.5 Windows连接方法 137
13.2 FTP文件共享实现 139
13.2.1 安装Pure-FTPD 139
13.2.2 Pure-FTPD配置说明 139
13.2.3 配置Pure-FTPD 140
13.2.4 创建FTP账户 141
13.2.5 FTP穿越防火墙 142
13.2.6 WinSCP做FTP客户端 143
13.2.7 浏览器作FTP客户端 144
第 14章 智能路由器媒体中心 145
14.1 USB声卡驱动支持 145
14.1.1 媒体播放条件 145
14.1.2 选择合适的USB声卡 145
14.1.3 安装声卡驱动 145
14.1.4 设置默认音量 146
14.1.5 用命令行播放MP3 147
14.2 安卓手机远程播放音乐 147
14.2.1 MP介绍 147
14.2.2 安装MPD服务 148
14.2.3 安卓系统安装客户端 151
14.2.4 关于安卓手机播放音乐 153
14.3 DLNA数字媒体服务器 153
14.3.1 DLNA介绍 154
14.3.2 安装配置MiniDLNA 154
14.3.3 Inotify与overlay的冲突 156
14.3.4 启动服务 157
14.3.5 DLNA客户端 157
14.3.6 DLNA其他功能 159
14.4 苹果AirPlay播放音乐 159
14.4.1 AirPlay介绍 159
14.4.2 安装与配置Shairport 159
14.4.3 辅助配置和检查 161
14.4.4 使用终端播放 162
第 15章 智能路由器编程工具 163
15.1 Web+PHP建站系统 163
15.1.1 PHP语言 163
15.1.2 Web服务 164
15.1.3 PHP测试代码 167
15.2 SQLite3与MySQL数据库应用 169
15.2.1 SQLite3数据库 169
15.2.2 MySQL数据库 173
15.3 Python、Lua与Ruby编程工具 174
15.3.1 Python 174
15.3.2 Lua 175
15.3.3 Ruby 175
第 16章 智能路由器服务软件 177
16.1 VPN(PPTP)服务器与
客户端 177
16.1.1 PPTP协议VPN服务器 177
16.1.2 PPTP协议VPN客户端 181
16.2 USB摄像头 183
16.2.1 USB摄像头准备 183
16.2.2 MJPG-streamer 184
16.2.3 浏览器访问 186
16.3 迅雷远程下载 187
16.3.1 迅雷远程下载条件 187
16.3.2 迅雷远程下载 190
16.4 WiFiDog广告路由器 192
16.4.1 WiFiDog功能服务 192
16.4.2 WiFiDog验证界面 195
第 17章 编译定制OpenWrt固件 197
17.1 OpenWrt编译环境 197
17.1.1 编译与交叉编译 197
17.1.2 AxWRT与OpenWrt的
关系 198
17.1.3 OpenWrt的版本关系 199
17.1.4 准备编译环境 199
17.2 OpenWrt固件生成 200
17.2.1 编译流程 200
17.2.2 获取AxWRT源代码 200
17.2.3 获取软件包源代码 201
17.2.4 OpenWrt菜单选项配置 201
17.2.5 编译固件 203
17.2.6 清理编译 204
17.2.7 编译完成 204
17.3 OpenWrt源码预设 205
17.3.1 Feeds源 205
17.3.2 OPKG自定义软件仓库 206
17.3.3 预设编译参数文件 206
17.3.4 OpenWrt文件夹的作用 206
17.3.5 Target/Linux下平台预设文件 207
17.4 OpenWrt官方版编译 208
17.4.1 关于编译 208
17.4.2 关于硬件支持 209
第 18章 编译定制IPK软件包 210
18.1 IPK软件包与OPKG命令 210
18.2 IPK软件包规范 210
18.2.1 Makefile格式与流程 211
18.2.2 PKG_*任务的作用 212
18.2.3 定义Build/*的作用 213
18.2.4 定义Package/*的作用 213
18.2.5 IPK软件包补充说明 214
18.3 简易软件包mytest 215
18.3.1 mytest软件包的制作 215
18.3.2 mytest调试 216
18.3.3 下载测试 217
18.4 软件包示例xware 218
18.5 软件包示例shairport 219
第 19章 智能路由器外设应用实例 221
19.1 OpenWrt的硬件支持 221
19.1.1 DTS设备树 221
19.1.2 GPIO总线 223
19.2 OpenWrt对LED驱动的支持 224
19.2.1 LED电路设计 224
19.2.2 手动测试LED 224
19.2.3 将LED注册为系统标准LED 225
19.2.4 LED设置心跳功能 226
19.2.5 将LED设置为WAN口状态 226
19.3 OpenWrt对按钮驱动的支持 226
19.3.1 按钮电路设计 226
19.3.2 手动测试按钮 227
19.3.3 将按钮注册为系统按钮 228
19.3.4 编写脚本检测按钮时长 228
19.4 OpenWrt对继电器驱动的支持 229
19.4.1 继电器电路设计 229
19.4.2 手动测试继电器 230