准备工作
1、明确适配的目的
选一款合适的硬件。本次适配的目的是物联网网关,因此使用了一块9531核心板,按照需求做成几块不同的底板。
2、给固件取一个名字
定一个产品型号。不要随便起一个名字。后面改起来基本上就跟重新适配一次一样。本例的产品名字是monkfish,产品的型号叫做IOT-GW100。
3、准备一个访问国外速度快的接入线路或者让自己变得非常有耐心
我自己用的是移动送的宽带,下载一次openwrt的更新文件,断断续续、反反复复。有人说了,你怎么不用电信的呢? 这话就戳人心窝子了。自古以来,”遍身罗绮者,不是养蚕人”。其实笔者也通过改过的VPN(别问我为啥改)尝试过,电信IDC机房的情况也只能说是“五十步笑百步”尔。
4、保持和硬件厂家良好的关系
我们这些玩着openwrt吃软饭的人。很多时候并不知道硬件设计、制造的细节。尤其是那些在软硬交界处的资源布局在具体的板子上如何的布局。因此,得到硬件厂家良好的技术支持是必不可少的。否则,你可能工作起来就像是大海捞针一样。
这是我选择的硬件:
二、定制过程
1、删除不需要的硬件支持
openwrt默认支持很多的硬件,可以全部都删除,这样自己添加的产品型号就一目了然,不管是做系列产品还是OEM都非常方便。所有关于板子的硬件描述都在 openwrt 安装目录的/target/linux/ar71xx/目录下。下面除非特别指出,所有路径都是基于openwrt的安装目录。
/target/linux/ar71xx/image下新增monkfish.mk文件,内容如下:
define LegacyDevice/GW100
DEVICE_TITLE := IOT-GW100
DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-storage
endef
LEGACY_DEVICES += GW100
这是Make文件,务必注意行首的空白是Tab而不是空格。
有了我们自己的产品型号后,屏蔽掉系统默认的产品型号,打开 /target/linux/ar71xx/image/Makefile。注释掉默认的,添加自己的。
ifeq ($(SUBTARGET),generic)
#include ./generic.mk
#include ./generic-legacy-devices.mk
#include