Для проекта, над которым я работаю, я хотел бы создать «стандартный» образ на основе Raspbian, который я могу установить на многих Pis.
В идеале я хотел бы иметь возможность (на моем компьютере) взять образ Raspbian, apt-get некоторые пакеты, отредактировать некоторую конфигурацию, а затем создать и образ SD-карты из этого, чтобы поместить его в мой Pis.
Есть простой или рекомендуемый способ сделать это? С какими подводными камнями я могу столкнуться?
Я стараюсь избегать ручного управления пи и последующего клонирования этого изображения. Предположительно, Raspbian сделан каким-то образом, а не кто-то, кто нажимает кнопки на Pi вручную. Я бы хотел сделать это так, если смогу.
В идеале я хочу создать что-то, что может быть автоматически построено на сервере непрерывной интеграции - я не хочу, чтобы процесс сборки включал «запись SD-карты, поместите ее в Pi», потому что я хочу быть элем, чтобы создавать изображения без каких-либо физический доступ к Raspberry Pi.
apt-get
; самый простой способ сделать это - использовать виртуальную машинуrsync
с подключенным образом, идентичным тому, который использовался для запуска виртуальной машины (поскольку сами образы виртуальной машины не годятся для этого), но я думаю, что единственный вариант виртуальной машины здесь - это QEMU, который AFAICT - это ПИТА.Ответы:
Фонд Raspberry Pi использует набор bash-скриптов, автоматизирующих QEMU для генерации их изображений. Вы все равно должны взглянуть на buildroot "отраслевые стандарты" и Yocto.
https://github.com/RPi-Distro/pi-gen
http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/
источник
Мой проект Nard SDK обладает многими функциями, которые вы хотите. Это не Raspbian, но он имеет бинарную эмуляцию Raspbian и поэтому очень близок. С Nard вы создаете все на ПК, и процесс очень быстрый и воспроизводимый. Все написано в сценариях и может быть сделано, например, с помощью ночной непрерывной интеграции.
http://www.arbetsmyra.dyndns.org/nard/
источник
На мой взгляд , выполнение предложенного вами способа (монтаж, обходные пути для обновления и настройки и т. Д.) Сопряжено с большими трудностями, чем с реальными решениями . Конечно, может быть интересно сделать это по-своему, если вам интересно, но самый лучший и простой способ - это тот, который вы избегаете.
Я рекомендую вам взять Pi и сделать то, что вы должны сделать на нем, а затем сделать изображение его SD-карты. Затем используйте это изображение на вашем другом Pis, так как это изображение уже настроено.
Примечание: я предполагаю, что вы будете использовать Raspbian. Я также предполагаю, что вы обычный человек, а не человек, который часто готовит изображения (например, Raspberry Pi Foundation).
Шаги, если вы действительно возитесь с Пи:
apt-get update -y && apt-get upgrade
обновить пакетыШаги, если вы не возитесь с Пи (см. Примечание выше):
deb
файл для каждого пакета, который вы хотите обновить, плюс их зависимости , а также зависимости этих зависимостей , а также зависимости этих зависимостей .apt-offline
это хлопот. Ссылка на эту ссылкуapt-get
не будет работать в автономном режиме.deb
подробности файла здесь . Удачи.Я не вижу никакой выгоды в том, чтобы не возиться с твоим Пи.
Порезаться и поработать с Пи. Вы должны сделать это только один раз.
источник
Then find a way to install all of those packages without using/tinkering with your Pi.
dpkg
на самой системе, а не на смонтированном образе. Кроме того, OP планирует использовать его / ее ПК, поэтому*.deb
файлы, которые у вас есть, предназначены в первую очередь для неправильной архитектуры (ПК - x86 / x64, Pi - ARMv6 / v7)I'll be honest and say that my impression is you are pursuing the Y side of an XY problem with too much vigour -- it's implied you think the simpler method (just set up an image on a pi, which can be done from a computer via remote login, and the image itself tweaked by mounting, which can be done on a PC, and all of this can be automated with scripting) is too much hassle, and so you have put your hopes in a method that is actually much more hassle.
Я думаю, что вы ищете какой-то
(software) configuration management
. Благодаря этому вы сможете загрузить стандартный raspbian образ, а затем перенести свою собственную конфигурацию (включая новые пакеты и т. П.). Существует множество систем SCM. Недостатком является то, что большинство этих систем нацелены на поддержку крупномасштабных сетей и поэтому могут быть немного излишними для вашей цели. Вам также нужен какой-то сервер инициализации. Самые популярные SCM - это Puppet , Chef , Ansible . Статьи для начала:Это своего рода общий ответ, но SCM - широкое поле. Может быть, это стоит изучить в зависимости от ваших планов.
источник