Para um projeto em que estou trabalhando, gostaria de criar uma imagem "estoque" baseada no Raspbian que eu possa instalar em muitos Pis.
Idealmente, eu gostaria de poder (no meu computador) tirar a imagem Raspbian, obter alguns pacotes, editar algumas configurações e criar uma imagem do cartão SD para colocar no meu Pis.
Existe uma maneira simples ou recomendada de fazer isso? Alguma armadilha que eu possa encontrar?
Estou interessado em evitar mexer manualmente com um pi e depois clonar essa imagem. Presumivelmente, o Raspbian é feito de alguma maneira que não é alguém clicando manualmente nos botões de um Pi. Eu gostaria de fazer dessa maneira, se puder.
Idealmente, quero criar algo que possa ser construído automaticamente em um servidor de integração contínua - não quero um processo de criação que envolva "escreva um cartão SD, coloque-o em um Pi" porque quero ser ale para criar imagens sem nenhum acesso físico a um Raspberry Pi.
apt-get
; a maneira mais fácil de fazer isso seria usar uma VM ersync
com uma imagem montada idêntica à usada para iniciar a VM (já que as próprias imagens da VM não são boas para isso), mas acho que a única opção de VM aqui é QEMU, que AFAICT é uma PITA.Respostas:
A fundação Raspberry Pi usa um conjunto de scripts bash que automatizam o QEMU para gerar suas imagens. Você ainda deve analisar a buildroot dos "padrões do setor" e o Yocto também.
https://github.com/RPi-Distro/pi-gen
http://cellux.github.io/articles/diy-linux-with-buildroot-part-1/
fonte
Meu projeto O Nard SDK tem muitos dos recursos que você deseja. Não é Raspbian, mas possui emulação binária Raspbian e, portanto, é muito próxima. Com o Nard, você constrói tudo em um PC e o processo é muito rápido e reproduzível. Tudo é programável e pode ser feito, por exemplo, por uma integração contínua noturna.
http://www.arbetsmyra.dyndns.org/nard/
fonte
Na minha opinião , fazê-lo da maneira sugerida (montagem, solução alternativa para atualização e configuração etc.) apresenta mais desafios do que as soluções reais . Claro, pode ser divertido fazer do seu jeito, se você estiver interessado, mas o melhor e mais fácil pode ser o que você está evitando.
Eu recomendo que você adquira um Pi e faça o que tem que fazer nele, depois faça uma imagem do seu cartão SD. Em seguida, use essa imagem em seus outros Pis, pois essa imagem já está configurada.
Nota: Presumo que você usará Raspbian. Também assumirei que você é apenas uma pessoa comum, e não uma pessoa que prepara imagens com frequência (por exemplo, Raspberry Pi Foundation).
Passos se fazer mexer com o Pi:
apt-get update -y && apt-get upgrade
atualizar pacotesEtapas se você não mexer no seu Pi (veja a nota acima):
deb
arquivo para cada pacote que você deseja atualizar, além de suas dependências , além das dependências dessas dependências e das dependências dessas dependências .apt-offline
é um aborrecimento. Consulte este linkapt-get
não funcionará offline.deb
detalhes do arquivo aqui . Boa sorte.Não vejo nenhum benefício em não mexer no seu Pi.
Corte um pouco de folga e mexa com o seu Pi. Você só precisa fazer isso uma vez.
fonte
Then find a way to install all of those packages without using/tinkering with your Pi.
dpkg
no sistema, não em uma imagem montada. Além disso, OP é o planejamento sobre o uso de sua / seu PC, então os*.deb
arquivos que você tem é para uma arquitetura de errado em primeiro lugar (PC é 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.
Eu acho que o que você está procurando é algum tipo de
(software) configuration management
. Com isso, você poderá inicializar uma imagem raspbian padrão e, em seguida, enviar sua própria configuração (incluindo novos pacotes e similares). Existem muitos sistemas SCM por aí. A desvantagem é que a maioria desses sistemas visa suportar redes de grande escala e, portanto, talvez exagerem um pouco para o seu propósito. Você também precisa de algum tipo de servidor de provisionamento. Os SCM mais populares parecem ser Puppet , Chef , Ansible . Artigos para você começar:Essa é uma resposta genérica, mas o SCM é um campo amplo. Talvez valha a pena explorar isso, dependendo de quais são seus planos.
fonte