Pour un projet sur lequel je travaille, je voudrais créer une image "stock" basée sur Raspbian que je peux installer sur de nombreux Pis.
Idéalement, j'aimerais pouvoir (sur mon ordinateur) prendre l'image Raspbian, obtenir des paquets, éditer des config puis créer et une image de carte SD à partir de cela pour mettre sur mon Pis.
Existe-t-il un moyen simple ou recommandé de procéder? Des écueils que je pourrais rencontrer?
Je souhaite éviter de bricoler manuellement avec un pi puis de cloner cette image. Vraisemblablement, Raspbian est fait d'une manière qui ne consiste pas à cliquer manuellement sur les boutons d'un Pi. J'aimerais le faire de cette façon, si je le peux.
Idéalement, je veux créer quelque chose qui peut être automatiquement construit sur un serveur d'intégration continue - je ne veux pas d'un processus de construction qui implique "d'écrire une carte SD, de la mettre dans un Pi" parce que je veux être capable de créer des images sans aucune accès physique à un Raspberry Pi.
apt-get
; la façon la plus simple de le faire serait d'utiliser une machine virtuelle etrsync
avec une image montée identique à celle utilisée pour démarrer la machine virtuelle (car les images de machine virtuelle elles-mêmes ne sont pas bonnes pour cela), mais je pense que la seule option de machine virtuelle ici est QEMU, qui L'AFAICT est un PITA.Réponses:
La fondation Raspberry Pi utilise un ensemble de scripts bash automatisant QEMU pour générer leurs images. Vous devriez toujours vous pencher sur la buildroot "standard de l'industrie" et Yocto.
https://github.com/RPi-Distro/pi-gen
http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/
la source
Mon projet Nard SDK possède de nombreuses fonctionnalités que vous souhaitez. Ce n'est pas Raspbian mais il a une émulation binaire Raspbian et sont donc très proches. Avec Nard, vous construisez tout sur un PC et le processus est très rapide et reproductible. Tout est scriptable et peut être fait par exemple par une intégration continue nocturne.
http://www.arbetsmyra.dyndns.org/nard/
la source
À mon avis , le faire de la manière que vous avez suggérée (montage, solutions de contournement pour la mise à jour et la configuration, etc.) présente plus de défis que les solutions réelles . Bien sûr, il peut être amusant de le faire à votre façon si vous êtes intéressé, mais la meilleure et la plus simple peut être celle que vous évitez.
Je vous recommande de vous procurer un Pi et de faire ce que vous avez à faire dessus, puis de faire une image de sa carte SD. Ensuite, utilisez cette image sur votre autre Pis car cette image est déjà configurée.
Remarque: je suppose que vous utiliserez Raspbian. Je suppose également que vous n'êtes qu'une personne moyenne et non une personne qui prépare des images régulièrement (par exemple, Raspberry Pi Foundation).
Étapes si vous faites bricoler avec votre Pi:
apt-get update -y && apt-get upgrade
mettre à jour des packagesÉtapes si vous ne bricolez pas avec votre Pi (voir la note ci-dessus):
deb
fichier pour chaque package que vous souhaitez mettre à jour, ainsi que leurs dépendances , plus les dépendances de ces dépendances , plus les dépendances de ces dépendances .apt-offline
est un problème. Se référer à ce lienapt-get
ne fonctionnera pas hors ligne.deb
détails du fichier ici . Bonne chance.Je ne vois aucun avantage à ne pas bricoler avec votre Pi.
Coupez-vous un peu de jeu et bricolez avec votre Pi. Vous ne devez le faire qu'une seule fois.
la source
Then find a way to install all of those packages without using/tinkering with your Pi.
dpkg
sur le système lui-même, pas sur une image montée. De plus, OP prévoit d'utiliser son PC, donc les*.deb
fichiers que vous avez sont pour une mauvaise architecture en premier lieu (le PC est x86 / x64, Pi est 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.
Je pense que ce que vous cherchez est une sorte de
(software) configuration management
. Avec cela, vous seriez en mesure de démarrer une image raspbian stock, puis de pousser sur votre propre configuration (y compris les nouveaux packages et autres). Il existe de nombreux systèmes SCM. L'inconvénient est que la plupart de ces systèmes visent à prendre en charge les réseaux à grande échelle et sont donc peut-être un peu exagérés pour votre objectif. Vous avez également besoin d'une sorte de serveur d'approvisionnement. Les SCM les plus populaires semblent être Puppet , Chef , Ansible . Articles pour vous aider à démarrer:C'est une sorte de réponse générique mais SCM est un champ large. Peut-être que cela vaut la peine de creuser en fonction de vos plans.
la source