Назад |
Перейти на главную страницу
Как развернуть на пользовательском устройстве и на устройстве, подключенном к первому, но не к Интернету
Мы отправляем робот и гибридный ноутбук клиенту, который будет использовать его на своем сайте. Ноутбук служит пультом для робота или нескольких роботов. Мы хотим иметь возможность развертывать обновления программного обеспечения и системы на ноутбуке и роботе. Оба работают под управлением Ubuntu (по крайней мере, пока). Однако есть некоторые проблемы:
- Робот не подключен к Интернету.
- Ноутбук будет регулярно подключаться к Интернету.
- Ноутбук будет подключен к роботу (через точку доступа Wi-Fi, предоставленную роботом), но маловероятно, что в то же время он будет подключен к Интернету.
Я хочу, чтобы ноутбук загружал последнюю версию программного обеспечения, когда он подключен к Интернету, устанавливал обновление программного обеспечения и, возможно, обновления системы, а также передавал обновления программного обеспечения и системы роботу при подключении к нему.
Я могу подумать о некоторых решениях, которые кажутся немного взломанными:
- Ноутбук может использовать диспетчер пакетов (APT или что-то еще) для загрузки последней версии программного обеспечения и правила Ansible для обновления.
- Ноутбук может определить, когда он подключен к роботу, и каким-то образом отправить ему посылку.
- Поскольку робот не подключен к Интернету, мне пришлось бы упаковать необходимые файлы DEB (или что-то еще) для обновления системы.
- Я также мог бы использовать докер, чтобы упростить управление обновлениями системы, хотя контейнеры докеров немного тяжелы для загрузки.
Но я хотел бы знать: есть ли какие-то решения для этого случая с цифрой?
Итак, у меня все еще нет идеального решения, но вот что мы пробовали:
- Guix имеет возможность легко загружать и копировать пакеты, как я хотел. Если я правильно понимаю, можно спроектировать систему как файл схемы, загрузить / собрать все необходимые пакеты и применить их к удаленной системе. Это было бы решением, если бы Guix упаковал ROS, одну из наших зависимостей, которую сложно упаковать самостоятельно. Однажды я мог бы найти время, чтобы написать сценарий, чтобы упаковать его в Guix.
- Щелчок + Ядро Ubuntu предназначены для работы во встроенных системах и IoT. Мы не особо вникали в это, потому что упустили время, чтобы исследовать, как сделать систему планшета на основе Ubuntu Core, но это похоже на решение.
- Докер: я знаю докер намного больше, и он удобен, но мы не можем обновить ядро с его помощью. Мы действительно нужна возможность обновить ядро? Хороший вопрос.
- APT + apt-offline: это было легко настроить, но у apt-offline есть недостаток: для обновления автономной системы вам нужно сделать два цикла туда и обратно: один для обновления apt, один для обновления apt. Мне удалось сократить его до одного кругового обхода, сделав локальное зеркало APT-состояния робота на планшете, чтобы имитировать подходящее обновление, и сразу после этого получить файлы обновления.