Do not speak Portuguese? Translate this site with Google or Bing Translator
Crie uma imagem personalizada do Raspbian OS para produção.

Posted on: August 05, 2022 11:13 AM

Posted by: Renato

Categories: linux Raspberry iot

Views: 1889

Crie uma imagem personalizada do Raspbian OS para produção.

Imagina que você tenha um cartao SD com raspberry fucnionando e tenha adicionado algumas bibliotecas e scripts adicionais para alguma solução IOT, tipo um node-red, alguns scripts sendo executados via cron, ai você tenha que repetir esta instalção varias vezes em outros SDs. Ai vai o problema.

Para evitar isso, decidimos criar uma imagem personalizada a partir de um dispositivo já em funcionamento e fazer o flash dessa imagem para os outros dispositivos.

Pré-requisitos

Você precisa ter um ambiente linux com o gparted instalado. Se você estiver em um Mac ou Windows, terá que baixar rapidamente o virtualbox e executar uma instância do Ubuntu.

para instalar o gparted no Ubuntu,

sudo apt-get install gparted

Nota: Usamos o Ubuntu 18.04 LTS para este tutorial

Etapa 1: clonar cartão SD

Ok, supondo que você esteja logado no Ubuntu e inseriu o cartão SD contendo o sistema operacional Raspbian personalizado que foi usado para executar seu pi, você pode abrir o terminal e listar os discos da seguinte maneira.

sudo fdisk -l

Nota: Se você estiver usando um virtualBox, por favor, monte o cartão de memória dentro para que você possa acessá-lo do terminal.

Isso foi executado em uma caixa virtual, dependendo do seu sistema, o caminho do seu cartão SD pode mudar. Neste exemplo, conforme mostrado na captura de tela, o caminho para meu cartão SD seria /dev/sdb.

Ok, agora precisamos clonar completamente o cartão SD e fazemos isso usando o seguinte comando.

sudo dd if=/dev/sdb of=/your/path/to/clone.img

Neste comando se significa arquivo de entrada que é o caminho do meu disco /dev/sdb. Esse valor pode mudar no seu. de significa arquivo de saída, que você pode fornecer qualquer caminho que especificar.

Este processo levará algum tempo, pois copiará o que está no seu cartão de memória bloco por bloco. Quanto maior o tamanho do cartão de memória, mais tempo levaria. Você verá na linha de comando quando o processo for concluído.

Nota: Para que isso seja concluído em um virtualBox, seu espaço livre em disco deve ser pelo menos duas vezes o tamanho do seu cartão SD.

No nosso caso, o tamanho do cartão de memória era de cerca de 14,5 GB e levou aproximadamente 20 a 30 minutos para clonar totalmente em nosso disco rígido não SSD.

Etapa 2: reduzindo a imagem

Ok, uma vez que a imagem foi clonada, você pode estar se perguntando sobre o tamanho da imagem. No meu caso a imagem tinha 14,5gb. Mas meu sistema operacional personalizado ocupa apenas cerca de 4 GB, pelo que me lembro. Encolher a imagem foi o próximo problema que tivemos que resolver. Para isso, o Linux é sua única opção, pois o gparted está disponível apenas no linux.

Para fazer isso, vamos usar o arquivo de script pyShrink escrito por Drewsif que pode ser encontrado aqui .

Abra seu terminal e execute os seguintes comandos linha por linha em seu terminal.

wget   https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.shchmod +x pishrink.shsudo mv pishrink.sh /usr/local/bin

Ok com isso feito, o resto é fácil. Para reduzir sua imagem, execute o seguinte.

sudo pishrink.sh /seu/caminho/para/clone.img /seu/caminho/para/clone-shrink.img

Isso também levará algum tempo e, finalmente, fornecerá uma saída informando o quanto sua imagem inicial foi reduzida no novo arquivo.

É praticamente isso, e sua imagem personalizada agora está pronta para piscar.

Etapa 3: Flash a imagem em um novo cartão SD

Isso é relativamente fácil. Baixe o aplicativo Etcher para o seu sistema operacional e selecione sua imagem recém-encolhida, depois selecione o novo cartão SD e clique no botão Flash E está tudo bem.

Etapa 4: compactar ainda mais a imagem

Ainda com uma imagem de 4gb+ é um pouco demais para ser compartilhada com outras pessoas na internet. Podemos compactar ainda mais executando gzip.

gzip -9 /seu/caminho/para/clone-shrink.img

Isso compactará ainda mais seu arquivo de imagem para que você possa carregá-lo facilmente e armazená-lo em um bucket de armazenamento em nuvem ou em uma unidade.

Obrigado por ler. Espero que isso tenha ajudado você.
Felicidades!

 

Fonte:

creating-a-custom-raspbian-os-image-for-production


3

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email