如何部署到用户设备以及连接到第一个设备但未连接到互联网的设备

如何部署到用户设备以及连接到第一个设备但未连接到互联网的设备

我们正在向客户运送一台机器人和一台混合笔记本电脑,客户将在其站点上使用它们。笔记本电脑可作为机器人或多台机器人的遥控器。我们希望能够将软件和系统更新部署到笔记本电脑和机器人上。两者都运行 Ubuntu(至少目前如此)。但是,存在一些挑战:

  • 机器人未连接到互联网。
  • 笔记本电脑将定期连接到互联网。
  • 笔记本电脑将连接到机器人(通过机器人提供的 Wi-Fi 热点),但不太可能同时连接到互联网。

我希望笔记本电脑在连接到互联网时下载最新版本的软件,安装软件更新和潜在的系统更新,并在连接到机器人时将软件和系统更新传输到机器人。

我可以考虑一些解决方案,但看起来有点奇怪:

  • 笔记本电脑可以使用包管理器(APT 或其他)下载最新版本的软件,并使用 Ansible 规则进行自我更新。
  • 笔记本电脑可以检测到何时连接到机器人,并以某种方式向机器人发送包裹。
  • 因为机器人没有连接到互联网,所以我必须打包系统更新所需的 DEB 文件(或其他文件)。
  • 我还可以使用 docker 来更轻松地管理系统更新,尽管 docker 容器下载起来有点重。

但我想知道的是:针对这种情况,有没有什么解决方案?

答案1

所以,我仍然没有完美的解决方案,但是我们尝试了以下方法:

  • 吉克斯能够轻松下载和复制我想要的软件包。如果我理解正确的话,可以将系统设计为方案文件,下载/构建所有必需的软件包并将其应用于远程系统。如果 Guix 能够打包 ROS,这将是解决方案,这是我们的依赖项之一,我们自己很难打包。有一天我可能会花时间编写一个脚本来使用 Guix 进行打包。
  • 折断+Ubuntu 核心旨在在嵌入式系统和物联网上运行。我们没有深入研究它,因为我们没有时间研究如何让平板电脑系统基于 Ubuntu Core,但这似乎是一个解决方案。
  • Docker:我对 Docker 了解很多,它很方便,但我们无法用它来更新内核。真的需要升级内核吗?好问题。
  • APT + apt-offline:这个很容易设置,但 apt-offline 有一个缺陷:您必须进行两次往返才能升级离线系统:一次用于 apt 更新,一次用于 apt 升级。我设法将其减少到一次往返,方法是在平板电脑上创建机器人 APT 状态的本地镜像来模拟 apt 更新,然后立即获取升级文件。

相关内容