QMP(Quick Mesh Project)是一个可以方便部署MESH网络的开源系统。它提供基于Openwrt的固件,可以方便的应用与多种嵌入式设备。使用这个系统可以方便的 搭建MESH网络。它提出了一种无线社区模式,能快速的创建一个无线覆盖的区域,并提供高质量的网络服务。
下面是一个MESH Comunity Mode 的原理图:
QMP Community Mode
更难能可贵的是,QMP是一个开源软件,玩家可以做二次开发,并编译适合自己设备的固件。当然它也对市面上一些主流路由器提供了稳定的固件版本。 详细信息可以访问QMP的官方网站。
固件编译
1. 设置环境变量 在我们编译openwrt的时候,您的系统应该已经安装了编译所需的软件包,但是为了保险起见,可以把下面的软件包在安装一下。 基于Debian的系统,如ubuntu,需要安装下面的软件包:
sudo aptitude install git subversion zlib1g-dev gawk flex unzip bzip2 gettext build-essential \ libncurses5-dev libncursesw5-dev binutils cpp psmisc docbook-to-man
如果您的机器是x86_64系统,还需要下面的软件包:
Debin/Ubuntu:
sudo aptitude install gcc-multilib
CentOS/Fedora/RHEL:
gcc.i686, libgcc.i686, and glibc-devel.i686
2. 下载源码并编译 通过下面的命令下载源码
git clone git://qmp.cat/qmpfw.git qmpfw
进入到源码目录:
cd qmpfw
check out 特定的分支:
make .checkout_qmp QMP_GIT_BRANCH=branch_name
制定Traget并编译,例如:
make build T=alix
编译完成后,你可以在下面目录下找到相应设备的固件。
qmpfw/images/
添加新设备支持
QMP作为一个开源项目,已经制作了很多稳定的固件针对流行的路由器,如果对于一些新的嵌入式设备,如何对它进行定制,编译特定的固件呢? 下面我们来介绍添加对新设备的支持。
1.下载源码
git clone git://qmp.cat/qmpfw.git
2. 执行menuconfig来获取相应的source code并启动openwrt 的menuconfig。
make T=NEW_DEVICE_NAME menuconfig
配置menuconfig中相应的选项,一定要使能 base/qmp-small-node 或者qmp-big-node。
3. 编译
make T=NEW_DEVICE_NAME build
在这一步中,应该会遇到错误,提示信息可能是(when trying to copy the output binaries into images/ directory). 不用担心, 确定生成的二进制文件名字是: build/NEW_DEVICE_NAME/bin/*/, 然后修改targets.mk 文件,添加类似下面的新设备的编译条目。
ifeq ($(T),nsm5) NAME:=NanoStation M5 ARCH:=ar71xx IMAGE:=bin/$(ARCH)/openwrt-ar71xx-ubnt-nano-m-squashfs-factory.bin SYSUPGRADE:=bin/$(ARCH)/openwrt-ar71xx-ubnt-nano-m-squashfs-sysupgrade.bin endif
4. 重新编译
make T=NEW_DEVICE_NAME build
5. 如果能正确编译,复制临时的config文件
cp -rf build/configs/NEW_DEVICE_NAME configs/
6. 生成patch文件
git add configs/NEW_DEVICE_NAME git add targets.mk git commit -m 'Support for new device NEW_DEVICE_NAME' git diff > ../NEW_DEVICE_NAME.patch
7. 提交Patch 文件给qmp的开发list:qmp-dev@mail.qmp.cat