树莓派上安装meshctl(译文)

原文链接:

https://medium.com/@ly.lee/install-meshctl-on-raspberry-pi-51aa1e2579e6

译者注meshctl是运行在linux平台上的蓝牙Mesh配置管理工具软件。

1. 安装BlueZ

meshctl属于开源蓝牙协议栈BlueZ软件套件的一部分(BlueZ无法在Windows及macOS上安装,所以我们使用树莓派。译者注:实际上BlueZ是Linux官方蓝牙协议栈)。BlueZ在树莓派上应该属于预安装软件,但是默认的安装是缺少meshctl工具的。这篇文章讲解如何安装带有meshctl选项的BlueZ。

开始前,请先参阅蓝牙技术联盟(SIG)的官方指南:

“Developer Study Guide: Deploying BlueZ v5.50 on Raspberry Pi3, Part1 — Deployment”

跟着如下章节中的指示做:

“0. Prerequisite”

“1. Install BlueZ v5.50”

在 “2. Rebuilding the kernel for BlueZ v5.50” 这一章节前停止。

2. 下载树莓派内核源码

我们需要重新编译构建树莓派的内核。为啥呢?因为meshctl需要AEAD-AES_CCM加密套件,这玩意会以一个安全服务的形式运行在内核中。这一步需要超过一小时的时间去完成。

在命令提示符里输入如下命令:

cd ~

sudo apt-get install -y git bc bison flex libssl-dev

uname -a

你应该能看到形似如下的命令输出:

Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux

看到那个4.19了不?这个很重要——这是你树莓派内核的版本号。我们需要下载对应我们内核版本的内核源代码,否则我们的树莓派在重新构建内核后很可能启动不了。

输入下面的命令:

git clone --depth=1 --branch rpi-4.19.y https://github.com/raspberrypi/linux

注意:将上述命令中的4.19替换成你自己树莓派内核的版本号。

3. 初始化树莓派内核配置

首先,我们将新的树莓派内核初始化为默认设置。

如果你的树莓派是1,zero,zero W,或者Compute Module,输入:

cd linux

KERNEL=kernel

make bcmrpi_defconfig

如果你的树莓派是2,3,3+,或者Compute Module 3,输入:

cd linux

KERNEL=kernel7

make bcm2709_defconfig

如果你的树莓派是4,输入:

cd linux

KERNEL=kernel7l

make bcm2711_defconfig

4. 配置树莓派内核

现在,让我们配置内核并开启meshctl所需要的AEAD-AES_CCM加密套件。输入:

make menuconfig

使用键盘上的方向键将光标移动到Cryptographic API选项:

按回车。

使用键盘上的方向键,在如下模块选项上移动光标,按 S 键进行选择:

Hash Modes → CMAC support

Random Number Generation → User-space interface for hash algorithms

Random Number Generation → User-space interface for symmetric key cipher algorithms

当某个模块被选中的时候,模块前面的<>中会变成 *。

多次点击Esc键直到看到 Do you wish to save your new configuration… 的提示:

选择YES并按下回车,回到命令提示符界面。

5. 构建树莓派内核

在正式构建内核前,我们先把老的内核备份到 /OLDboot 以防新内核启动失败。输入:

sudo cp -r /boot /OLDboot

现在我们正式编译、安装新的内核。输入:

make -j4 zImage modules dtbs

sudo make modules_install

sudo cp arch/arm/boot/dts/*.dtb /boot/

sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/

sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/

sudo cp arch/arm/boot/zImage /boot/$KERNEL.img

sudo sync

sudo reboot

这个过程估计得要一个多小时才能完成。等上述流程都完成后,我们的树莓派就会以新的内核启动。

6. 测试meshctl

重启后,打开命令行并输入:

meshctl

按下回车键,应该会出现[meshctl]#提示符。

如果你没看到任何错误信息,那么恭喜你成功安装了meshctl

输入下面这个命令退出meshctl

exit

注意:请记住永远使用exit命令来正确地退出meshctl,否则的话蓝牙驱动会被锁定,导致你最终不得不重启树莓派来解决这个问题。

如果你看到的是下面这个信息:

Failed to parse provisioning database file prov_db.json

这表明你的内核并没有正确地安装AEAD-AES_CCM套件。仔细阅读,并按本文前面的章节步骤重新做一遍。

参考文献

如果你在配置及构建树莓派内核的过程中遇到任何问题,请参阅官方指导文档:

“Kernel Building”

“Configuring The Kernel”

如果你在配置管理蓝牙Mesh的过程中遇到任何问题,请参阅蓝牙技术联盟的官方指导文档:

“How to Deploy BlueZ v5.50 on Raspberry Pi 3 and Use It, Part 2 — Provisioning”

这里有一个很棒的关于在Zephyr嵌入式OS上的搞蓝牙Mesh的系列文章:

“Patient Monitoring System using 96Boards”

你可能感兴趣的:(树莓派上安装meshctl(译文))