Skip to main content

Alamin kung paano bumuo ng isang sistema ng Linux na handa na sa produksyon para sa Raspberry Pi Compute Module 5 (CM5)

Nagtatampok ng mga pasadyang imahe, pag-update ng A / B, at awtomatikong paglalaan.

Alamin kung paano bumuo ng isang sistema ng Linux na handa na sa produksyon para sa Raspberry Pi Compute Module 5 (CM5) - na nagtatampok ng mga pasadyang imahe, pag-update ng A / B, at awtomatikong paglalaan.

Ang Raspberry Pi Compute Module 5 ay naghahatid ng malubhang naka-embed na pagganap - PCIe, NVMe, LPDDR4X, at isang matatag na pundasyon ng BSP. Gayunpaman, ang paglipat mula sa isang development board patungo sa isang mapapanatili, produksyon-grade na kapaligiran sa Linux ay nagpapakilala ng mga bagong hamon: pagpapasadya ng imahe, paglalaan, at maaasahang mga pag-update ng over-the-air (OTA).

Compute Module 5 IO Board

Sa seryeng ito, galugarin namin kung paano lumikha ng isang payat, reproducible Linux system para sa CM5 nang hindi gumagamit ng Yocto. Sa halip na bumuo ng isang buong pamamahagi mula sa simula, gagamitin namin ang mga praktikal na tool at daloy ng trabaho - na nagpapakita kung paano rpi-image-gen maaaring makabuo ng mga pasadyang imahe, kung paano pinapagana ng mga layout ng A / B rootfs ang mga ligtas na pag-update, kung paano rpi-sb-provisioner awtomatiko ang pag-setup ng aparato, at kung paano pinamamahalaan SWUpdate ang paghahatid ng firmware sa larangan.

Ang bawat artikulo ay nagbibigay ng isang teknikal na pangkalahatang-ideya ng mahahalagang sangkap - hindi isang tapos na produkto, ngunit isang mapa ng ecosystem. Malalaman mo kung saan nababagay ang bawat tool, kung anong mga problema ang nalulutas nito, at kung paano pagsamahin ang mga ito sa isang kakayahang umangkop na bumuo at mag-update ng pipeline para sa iyong sariling mga proyekto na nakabatay sa CM5.

Sa pagtatapos ng serye, mauunawaan mo kung paano mag-evolve mula sa isang imahe ng stock Raspberry Pi OS sa isang kinokontrol, na-upgrade na naka-embed na platform - nang walang pagiging kumplikado ng Yocto o Buildroot.

Panimula - Mula sa Stock OS hanggang sa Platform ng Produksyon

Tuklasin kung bakit hindi Yocto palaging ang pinakamahusay na pagpipilian, lalo na para sa mga maliliit na koponan o mabilis na mga siklo ng produkto. Ipakikilala namin ang isang praktikal, modular na diskarte na binuo sa pamilyar na pundasyon ng Raspberry Pi OS .

Mga pangunahing punto:

  • Bakit ang "handa na sa produksyon" ay nangangahulugang higit pa sa pag-boot lamang
  • Mga hamon sa paggamit ng Yocto para sa mga produktong nakabatay sa Pi
  • Pangkalahatang-ideya ng alternatibong stack: Raspberry Pi OS, rpi-image-gen, dual-rootfs (A / B), paglalaan, at SWUpdate
  • Ang pangwakas na layunin: isang reproducible at maintainable system pipeline

Tingnan: Mula sa Stock OS hanggang sa Platform ng Produksyon

Henerasyon ng Imahe - Pagpapasadya ng Raspberry Pi OS sa rpi-image-gen

Alamin kung paano bumuo ng mga reproducible na imahe ng system nang hindi umaasa sa isang buong Yocto o Buildroot setup. Ipinakikilala ng post na ito ang rpi-image-gen, isang minimal, scriptable na tagabuo ng imahe para sa pag-aangkop ng Raspberry Pi OS sa iyong mga pangangailangan sa hardware at application.

Mga pangunahing punto:

  • Anatomiya ng isang imahe ng Raspberry Pi (boot, rootfs, config)
  • Paggamit ng rpi-image-gen upang tipunin at ipasadya ang mga imahe
  • Pagdaragdag ng mga pasadyang file, serbisyo, at mga module ng kernel
  • Pag-automate ng mga build para sa mga kapaligiran ng CI / CD

Tingnan: Pagpapasadya ng Raspberry Pi OS sa rpi-image-gen

System Robustness - Pagdidisenyo ng isang A / B Root Filesystem Layout

Ang A / B partitioning ay ang gulugod ng ligtas na pag-update at pag-rollback ng system. Ipinaliliwanag ng artikulong ito kung paano i-configure at pamahalaan ang dalawang mga partisyon ng ugat, lumipat sa pagitan ng mga ito sa boot, at maghanda para sa maaasahang mga mekanismo ng OTA.

Mga pangunahing punto:

  • Partition scheme para sa A / B rootfs sa CM5
  • Bootloader at kernel command-line configuration
  • Pamamahala ng aktibo / hindi aktibong mga puwang at pagsubaybay sa estado
  • Pagsasama ng lohika ng pag-update sa systemd at SWUpdate

Tingnan: Katatagan ng System - Pagdidisenyo ng isang A / B Root Filesystem Layout

Paglalaan - Pag-automate ng Unang Boot na may rpi-sb-provisioner

Ang pagbibigay ay kung saan ang software ay nakakatugon sa hardware. Galugarin namin ang rpi-sb-provisioner bilang isang magaan na tool para sa pag-initialize ng mga bagong aparato, pag-iniksyon ng pagsasaayos, at ligtas na pagrehistro ng mga ito sa mga serbisyo ng backend.

Mga pangunahing punto:

  • Ang papel na ginagampanan ng pagbibigay sa mga naka-embed na sistema
  • Paggamit ng rpi-sb-provisioner upang i-set up ang mga pagkakakilanlan at parameter ng aparato
  • Halimbawa ng mga script ng automation para sa unang boot
  • Mga konsepto ng pagkakakilanlan ng aparato, mga sertipiko, at iniksyon ng pagsasaayos

Tingnan: Provisioning - Pag-automate ng Unang Boot sa rpi-sb-provisioner

OTA at Lifecycle - Mga Update ng Software na may SWUpdate

Ang mga pag-update ng A / B ay nabubuhay sa SWUpdate, isang matatag na open-source framework para sa ligtas na paghahatid ng software sa mga aparato sa larangan. Ipinapakita ng post na ito kung paano SWUpdate isinasama sa iyong imahe at layout ng partisyon upang matiyak na ang mga update ay atomic at mababawi.

Mga pangunahing punto:

  • Pangkalahatang-ideya ng arkitektura ng SWUpdate (handler, updater, web interface)
  • Paglikha at pag-sign ng mga bundle ng pag-update
  • Pagsasama sa A / B system
  • Halimbawa ng pag-update at daloy ng rollback

Tingnan: OTA at Lifecycle - Mga Update ng Software na may SWUpdate