Création d'une image de carte SD pré-préparée

19

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.

Andy Smith
la source
3
Peut être utile: comment puis-je monter une image de distribution Linux Raspberry Pi? - notez la ligne soulignée dans la réponse acceptée, "Si vous changez quelque chose, ces changements seront inclus dans le fichier .img." Malheureusement, cela ne donne pas la possibilité de postuler apt-get; la façon la plus simple de le faire serait d'utiliser une machine virtuelle et rsyncavec 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.
goldilocks
Une autre approche serait le net-boot.
lexu
Le Win32DiskImager a une fonction de lecture, avez-vous essayé cela?
Kong Chun Ho

Réponses:

6

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/

flakeshake
la source
Si l'OP cherche à créer une image de sortie standard de l'industrie .. oui, c'est la voie à suivre, mais c'est une courbe d'apprentissage massive et je ne souhaite aucun amateur sur cette voie.
Piotr Kula
1
Cela ressemble à ce que je recherche! Existe-t-il des guides pour utiliser cela? build.sh semble supposer qu'un tas de variables d'environnement sont définies.
Andy Smith
Probablement couvert par le n ° 4 sous TODO ;) N'a pas été touché depuis quelques mois, donc les personnes impliquées sont occupées à d'autres choses ou ont perdu tout intérêt.
goldilocks
@goldilocks donc ce n'est pas d'où vient l'image rasbian de base?
Andy Smith
3
Je vais être honnête et dire que mon impression est que vous poursuivez le côté Y d'un problème XY avec trop de vigueur - cela implique que vous pensez que la méthode la plus simple (il suffit de configurer une image sur un pi, ce qui peut être fait à partir d'un ordinateur via une connexion à distance, et l'image elle-même modifiée par le montage, ce qui peut être fait sur un PC, et tout cela peut être automatisé avec des scripts) est trop compliqué, et vous avez donc mis vos espoirs dans une méthode qui est en fait beaucoup plus de tracas .
goldilocks
5

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/

Ronny Nilsson
la source
0

À 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:

  1. Téléchargez et installez une nouvelle image du système d'exploitation de votre choix
  2. Branchez le câble Ethernet / connectez-vous au WiFi
    • Faites éventuellement une analyse LAN si vous ne connaissez pas les adresses IP de votre Pi
  3. Faire des trucs via SSH
    • apt-get update -y && apt-get upgrade mettre à jour des packages
    • Vos besoins de configuration personnels
  4. Faites une image, puis utilisez cette image pour d'autres Pis.

Étapes si vous ne bricolez pas avec votre Pi (voir la note ci-dessus):

  1. Télécharger une nouvelle image du système d'exploitation
  2. Montez l'image à l'aide des instructions de /raspberrypi//a/13138/24224 (vous devez également prendre en compte le système d'exploitation / l'image dont vous disposez, car certains ont différentes dispositions FS)
    • Préparez une calculatrice.
  3. Recherchez le debfichier 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-offlineest un problème. Se référer à ce lien
    • Trouvez ensuite un moyen d'installer tous ces packages sans utiliser / bricoler avec votre Pi. apt-getne fonctionnera pas hors ligne. deb détails du fichier ici . Bonne chance.
  4. Mettre à jour les noyaux Pi et les trucs de bas niveau à l'aide de l'outil Hexxeh
  5. Configurez selon vos besoins
  6. Écrivez une image modifiée sur les cartes SD de votre Pis.

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.

PNDA
la source
Il est presque impossible d'obtenir des programmes manuellement en obtenant, les dépendances, et là les dépendances, et là les dépendances, etc. Mais si vous utilisez apt-get et dites que vous voulez VLC vous le feriez, apt-get install vlc --yes --print- uris. Cela donnera une liste de liens; une fois téléchargés, placez-les dans / var / cache / apt / archives / partial et exécutez dpkg -i partial / *. deb pour l'installer. Encore mieux, si vous obtenez Synaptics, il a une option pour générer un script de téléchargement de package. Exécutez ce script sur un ordinateur Linux et vous avez obtenu vos packages. Ensuite, vous pouvez les réinstaller avec synaptics.
NULL
@NULLThen find a way to install all of those packages without using/tinkering with your Pi.
PNDA
@NULL Pour autant que je sache, vous ne pouvez utiliser que dpkgsur le système lui-même, pas sur une image montée. De plus, OP prévoit d'utiliser son PC, donc les *.debfichiers que vous avez sont pour une mauvaise architecture en premier lieu (le PC est x86 / x64, Pi est ARMv6 / v7)
PNDA
Comme je le précise dans ma question, je ne veux pas faire 1. Quant à 2, ça sonne fou :). Qu'est-ce qui vous fait penser que la suggestion de @flakeshakes est plus difficile à partir de 2?
Andy Smith
@AndySmith Je vais citer le commentaire de goldilock: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.
PNDA
0

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.

duenni
la source
Ansible semble prometteur car il est sans agent et vous n'avez pas besoin d'un serveur complet pour l'exécuter.
duenni
1
Pas vraiment, je veux que l'image soit déjà construite, pas quelque chose sur laquelle je colle. Cette suggestion ne fonctionne pas si mon Pi n'a pas de connexion réseau.
Andy Smith