借助AWS IoT Greengrass于OpenWrt之上构建边缘解决方案,物联网在AWS上,由AWS Localization于2019年8月9日发布 Permalink。
Original URL : https://aws.amazon.com/cn/blogs/iot/building-edge-solutions-on-openwrt-with-aws-iot-greengrass/
呈现给客户的边缘设备的硬件和操作系统,是以不同外观规格打造而成的,这之中举例来说有消费者网关、工业控制器还有车载信息娱乐系统。负责构建商用市售类产品的原始设计制造商,也就是ODM,以及原始设备制造商、即OEM来确定所运用的硬件和软件的组合。系统集成商也就是SI会去研发种类丰富的解决方案,客户则开展定制化的硬件解决方案后再进一步设计出边缘解决方案。基于目标所涉及的使用案例情况,他们存在这样做出决定选取特定种类的嵌入式 Linux 发行版的可能性,凭借此种方式去提供核心功能,进而给系统操作创造便利条件,并且让设备所具有的使用寿命予以延长。
于这篇博文当中,我针对ODM、OEM、SI以及客户,在运用AWS IoT Greengrass之际,去探讨满足那些要求所需要的选项。
概览
今天,AWS作出宣布,为适用于ARMv7l那架构的、还有啊ARMv8架构的AWS IoT Greengrass给予开放开源的OpenWrt支持,AWS IoT Greengrass能够把AWS毫无接缝阻隔地予以扩展,一直延伸到边缘设备那边去,进而能够于本地范畴对所生成出来的数据实施处理举措,同时呢尽管如此仍然是运用云去开展管理操作、进行分析工作以及实施长久存储行为。
跟客户一块合作去开发解决方案之际,我察觉到,OpenWrt针对以下这些方面来讲,是堪称完美的操作系统,它能够去有益于降低系统所要耗费的资源,而且还可为运行那种损耗均衡的文件系统,给予功能很棒的选项。
以前,要运行 AWS IoT Greengrass,您就得安装 glibc C 运行时程序包,这就致使占用额外资源。如今,借助 OpenWrt,您能够从起始便为 AWS IoT Greengrass 去设计操作系统,以此最大限度减少资源占用了。
客户能够选择,合作伙伴也能够选择,SI 同样能够选择,为其 OpenWrt 映像采用较小的 C 运行时库,进而全然消除 AWS IoT Greengrass 对于 libc 的依赖性,并且不会增添资源占用量。
这些改进,让客户得以运用AWS IoT Greengrass,借着此能够提供AWS Lambda函数与经Amazon SageMaker Neo编译的机器学习(ML)模型,该模型占用空间比原来小了100倍,进而建立成一种,最为契合资源有限的,基于OpenWrt的那种网关设备的,规模更为小型的IoT解决方案哟。
OpenWrt所适用的AWS IoT Greengrass程序包如今已经方便获取了,是可以得到的了。
在边缘位置针对 ML 进行优化
许多属于我们的客户,还有合作伙伴,正在AWS之上塑造出能引人注目的创新性解决方案,并且在架构里运用AWS IoT Greengrass。
一处所讲示例源自我们高级AWS合作伙伴中的一家,Smartiply, Inc.。Smartiply把AWS IoT Greengrass和Smartiply IoT Gateway整合到一起,目的是在边缘位置给予高级AWS功能,给两边共有的客户提供新生的使用情形和机遇。
Smartiply物联网网关,能够推进在那样一种环境里物联网的采用进程,那种环境在基础设施方面存在着挑战,或者有着地理和经济层面的难题。其目标涉及的使用案例涵盖视频监控、企业安保、视频流以及智慧城市。该网关核心具备的功能包含:
图 1.Smartiply 边缘设备
Smartiply 的客户,除了期望智能连接与边缘智能之外呢,还 wish 在 AWS IoT Greengrass 的支撑下于边缘开展对象分类推理。Smartiply 的设备运行 OpenWrt 来对设备的使用寿命与操作予以优化。Smartiply 已然决定借助 AWS IoT Greengrass 为其客户供给无缝且安全的 IoT 连接以及更具效益的边缘到云计算。AWS IoT Greengrass准予客户用到Lambda函数以及ML推理,倚仗编程扩展持久扩充其设备的价值。
来自我们的两家,在印度,存在一个属于客户的、从事针对电子监控领域的共同情况。他们,最近,因为在技术领域所拥有的领先地位,以及针对印度客户,提供了丰富的、属于多元化定制服务的内容,进而获得了 Frost Sullivan 奖,这一结果。
我们一同齐心协力,帮忙协助他们拓展推展新的客户领域范畴,达成做到客户多元化,进而进军迈进银行 ATM 监控以外之外的新市场。这些市场涵盖包含需要具备拥有更高级别功能效能以满足迎合高级需求的环境情形,比如像零售、物流以及和建筑施工。经由通过使用 Smartiply IoT Gateway 并于在 AWS 云上开展构建解决方案方案,我们的共同共有的客户运用使用 IoT 提供了能提供包括包含基本和高级视频分析在内的智能安全解决方案。
每一个位置之上,他们都布置好了安全监控摄像头。然而,凭借AWS IoT Greengrass所给出的AWS高级功能,尤其是借助Amazon Rekognition,Smartiply能够借助边缘到云的框架,迅速且高效地给出创新的计算机视觉解决方案。
以下所有项均属于增值微服务:
各项这些,均给Smartiply开拓出崭新的收入契机,且提升着相关运用效率。
最大优势在于与Amazon合作且集成AWS IoT Greengrass能完美契合所有标准,我们无需另起炉灶,可着眼于边缘,快速且高效地提供解决方案,对于诸多任务关键型应用情形下,这样在边缘实现基本功能,同时又能够访问云去达成高级计算的混合模型都是理想的解决办法,它不但能节省成本,还能提升性能,有助于加速达成IoT部署急需的投资回报率。Kaushik Pillalamarri,Smartiply, Inc.这一企业的联合创始人,此人同时还是该企业的CEO。
还有一个共同的客户,此客户属于墨西哥最大的地方政府机构当中的一个,他们借助 Smartiply IoT 网关,把 AWS 云的 ML 功能同视频识别相互结合起来,进而打造智慧城市。借助自动化,还有 AWS 云驱动的模型训练及测试来提供强大的解决办法,借此持续去改进边缘处执行人员以及物体识别的能力。
明确系统要求
创建嵌入式 Linux 系统(Yocto、Buildroot 或者 OpenWrt)之际,全部系统所需条件皆务必内置到映像里。
一般状况下,若不是去构建开发人员映像,那么在生产环境里是不存在可用的程序包管理器工具的,像 apt、yum 或者是 opkg 这样的。这所表达的意思是,除去内核配置的要求之外,目标使用案例的全部依赖包都得预先构建到发行映像当中。而对于程序包开展更新,也就意味着,得去构建能够交付给客户的固件升级。
本次撰写的内容不会去探究怎样去构建出自定义的程序包,故而要安装 opkg ,并且要手动去安装 AWS IoT Greengrass。在接下来不断推出的博文中,我们会讲述怎样运用自定义的办法将 AWS IoT Greengrass 打包进 OpenWrt 中。
启动 Amazon EC2 实例
要是您存在那种适用于嵌入式Linux的构建使用计算机,那么能够挑选运用这台计算机。要保证达成全部系统构建依赖项所提出的要求。
倘若您未曾构建借助计算机,那就启动Amazon EC2实例从而构建OpenWrt,并且启动契合AWS IoT Greengrass容器模式要求的实例。依照启动实例向导里的说明去操作,不过得留意要指定如下这些内容:
要连接到您的实例,请在登录构建用系统后运行以下命令:
ssh -i ~/.ssh/xxx.pem admin@xx.xxx.xxx.x
下面诸多步骤是直接从“OpenWrt 项目映像快速构建指南”摘取的通过连接到 EC2 实例之后运行以下命令去安装依赖项。
sudo apt-get update
sudo apt-get -y dist-upgrade
sudo apt-get install -y subversion g++ zlib1g-dev build-essential git python time
sudo apt-get install -y libncurses5-dev gawk gettext unzip file libssl-dev wget
sudo apt-get install -y libelf-dev
然后,查看 OpenWrt 源代码。
git clone https://git.openwrt.org/openwrt/openwrt.git/
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
运行以下命令进入菜单系统:
make menuconfig
选择相应的开发板
请按照以下步骤选择相应的开发板。
选取“目标系统”,将页面滚动至Broadcom BCM27xx处,而后选“进入”,再滚动至“子目标”,接着选“进入”,鉴于此示例于Raspberry Pi 3 B型号上运行,故需滚动至BCM2710,随后选“进入”,之后安装实用工具。
想要安装多个实用工具,以及ca-certificates程序包,那就得依照以下步骤来进行。
将 lsblk 实用工具进行安装,该工具是用来列出设备上的磁盘以及分区的:对实用工具作出选择,而后按下 Enter 键。对磁盘进行选择,接着按下 Enter 键。对 lsblk 进行选择,随后输入 Y。按下 Tab 键并把退出选中,之后按下 Enter 键。把 useradd 和 groupadd 实用工具进行安装,是用于添加所需的 AWS IoT Greengrass 用户以及组的。于生产环境里,自动把用户以及组各自添加到 /etc/passwd 和 /etc/group 之中。挑选基础系统,接着按 Enter 键。挑选 busybox,随后按 Enter 键。挑选自定义 busybox 选项,而后按 Y。挑选登录/密码管理实用工具,最后按 Enter 键。涉及 addgroups,关乎那能够支持将用户添加到群组这件事,还有 adduser,以及 mkpasswd 和 chpasswd,这些情况之下,全都依照着 Y 来进行。按下 Tab 键以此来选择退出,之后按 Enter 键并且是按三次,以此来完成操作。操作步骤为,选取基础系统,而后按下回车键,安装名称为ca – certificates的程序包,这是由于AWS IoT Greengrass与AWS IoT Core进行初始TLS 1.2握手时所需,选择ca – certificates,击键Y进行确认,按下Tab键,选中退出选项,再按回车键,再次按下Tab键三次,选中保存选项,按下回车键,再次按下回车键保存配置。按 Tab 键并选择退出,然后按 Enter 键。
于当下工作目录之中,去创建一个叫 LXC_PATCH 的文件,而后,复制并且粘贴以下代码块。
cat <> .config
CONFIG_KERNEL_BLK_CGROUP=y
CONFIG_KERNEL_CC_STACKPROTECTOR_REGULAR=y
CONFIG_KERNEL_CFQ_GROUP_IOSCHED=y
CONFIG_KERNEL_CGROUPS=y
CONFIG_KERNEL_CGROUP_CPUACCT=y
CONFIG_KERNEL_CGROUP_DEVICE=y
CONFIG_KERNEL_CGROUP_FREEZER=y
CONFIG_KERNEL_CGROUP_SCHED=y
CONFIG_KERNEL_CPUSETS=y
CONFIG_KERNEL_DEVPTS_MULTIPLE_INSTANCES=y
CONFIG_KERNEL_FREEZER=y
CONFIG_KERNEL_IOSCHED_DEADLINE=m
CONFIG_KERNEL_IPC_NS=y
CONFIG_KERNEL_LXC_MISC=y
CONFIG_KERNEL_MEMCG=y
CONFIG_KERNEL_MEMCG_SWAP=y
CONFIG_KERNEL_MM_OWNER=y
CONFIG_KERNEL_NAMESPACES=y
CONFIG_KERNEL_NETPRIO_CGROUP=y
CONFIG_KERNEL_NET_CLS_CGROUP=y
CONFIG_KERNEL_NET_NS=y
CONFIG_KERNEL_PID_NS=y
CONFIG_KERNEL_POSIX_MQUEUE=y
CONFIG_KERNEL_RESOURCE_COUNTERS=y
CONFIG_KERNEL_USER_NS=y
CONFIG_KERNEL_UTS_NS=y
CONFIG_KERNEL_SECCOMP_FILTER=y
CONFIG_KERNEL_SECCOMP=y
OUT
完成配置和编译
已针对设备作出了主要设置更改,剩余的基准配置,可借由运行defconfig目标予以填充:
make defconfig
要得到编译系统,需运行下面这些命令。思考为EC2实例达成实例化的核心数量,给它增添一个核心,再把这个操作应用到make命令之上:
make -j X
若您先前挑选了 C4.8xlarge 发行版,那么此数字便是 37。
make -j 37
倘若构建出现中断情况,那就尝试运用X等于1来继续推进,这是由于make依赖项存在可能被破坏的状况。依据我的经验而言,在本文所定义的配置情形下运行并行性并不会致使构建中断。然而,要是添加了别的软件包,那么就有可能会出现中断这种情形了。
make -j 1
在我运用 C4.8xlarge EC2 实例去进行构建之际,所需要的时间是少于 14 分钟的。
构建完系统之后,运用一种命令叫scp用来进行将映像给下载到工作站的操作。而那个映像所处的位置是在以下所提及的目录当中:。
~/openwrt/bin/targets/brcm2708/bcm2710
输入下载命令:
scp -i ~/.ssh/xxx.pem admin@xx.xxx.xxx.xx:/home/admin/openwrt/bin/targets/brcm2708/bcm2710/openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img.gz。
您能够暂停,或者删除,用于构建OpenWrt系统的EC2实例,以此节省EC2费用。
将映像刷入 microSD 卡
接着,要把映像刷进您的 microSD 卡,这个操作的过程和前面那一部分里边所描述的过程是相似的。
sudo dd if=./openwrt-brcm2708-bcm2710-rpi-3-ext4-factory.img of=/dev/disk3 bs=2048
sync
diskutil unmountdisk /dev/disk3
把站工作当中的microSD卡挪出去,把microSD放进Raspberry Pi里面,接着给它接通电源。
配置网络
于本文里头,吾等运用以太网连接,编辑一下那种 /etc/config/网络之物,把 eth0 变更为运用 DHCP,编辑完后,尔等的网络应当跟这样仿佛:
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd77:891b:69b8::/48'
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'dhcp'
编辑网络后,重新加载网络配置以使更改生效:
service network reload
为 AWS IoT Greengrass 配置用户和组
将用户添加到系统:
addgroup ggc_group
adduser -DH -G ggc_group ggc_user
更改 /boot/cmdline.txt 里的引导参数用以装载内存 cgroup,进入 vi /boot/cmdline.txt 文件,按下 End 键,选择 a,随后输入如下文本:
cgroup_enable=memory cgroup_memory=1
摁下 Esc 键,键入 :wq!,从而将缓冲区里的内容写入文件,进而退出 vi。输入 reboot 接着按下 Enter 键来重启系统。
创建 AWS IoT Greengrass 组
马上着手去创建属于您的 Greengrass 组。依据简要组创建向导里给出的说明来开展操作,然而需要留意的是,要明确指定下面这些内容。
给您的组来挑选一个名称,就好似 openwrt – containermode 那般。于“选择 root CA”这儿,把 Amazon root CA 1 存到 tar.gz 下载内容所处的那个目里。在“选择平台处,将 Aarch64 的 OpenWrt 发行版下载到同一个已知的目录当中。在您的设备之上启动 AWS IoT Greengrass。
此刻,您能够于物理装置之上开启 AWS IoT 绿草了呀。
在电脑上塞入一个U 盘,接着选上所有那三个文件,一并复制将其放置到U 盘上:把U 盘从电脑里卸载掉,随后插入 Raspberry Pi这项设备。若要实现对 U 盘的装载,那就得切换回到可以进行数据交换传达的串行连接窗口范围内,然后运行以下这一指令:
lsblk # identifies the disk partition for your memory stick
mkdir /media
mount /dev/sda1 /media
把 AWS IoT Greengrass 解压到文件系统,将其配置也解压到文件系统。
cd /
tar xzvf /media/[name of greengrass distribution file]
cd greengrass
tar xzvf /media/[name of greengrass configuration file]
cp /media/AmazonRootCA1.pem certs/root.ca.pem
启动 AWS IoT Greengrass。
/greengrass/ggc/core/greengrassd start
部署
之后便能够开展 Greengrass 组配置。AWS IoT Greengrass于此时正在实施您针对 OpenWrt 系统展开的首次部署。
接下来,您可以开始按照教程操作,例如:
于设计运行生产工作负载之时,举个例子,像消费类成品这种,针对AWS IoT Greengrass系统,您或许还得更深入地去了解硬件安全集成。
小结
鉴于您于 AWS 构建解决方案的缘由,您或许会发觉于 OpenWrt 操作系统上运行那个 AWS IoT Greengrass 意义非凡。从基础的遥测开始,直至执行 ML 推理,我们的那些客户正在搭建形形色类的 AWS IoT Greengrass 解决方案,从而持续不断地创新并拓展解决方案的价值。
于本文里,您研习了怎样去构建那支持AWS IoT Greengrass的OpenWrt系统映像。此刻,您能够评估OpenWrt操作系统是否可以助力您进一步强化功能,并且借助AWS IoT Greengrass持续改善您的边缘功能。
未经允许不得转载:openwrt技术分享 » OpenWrt编译必看:用AWS IoT Greengrass打造边缘设备方案

openwrt技术分享
微信关注,获取更多