Oprettelse af et Ubuntu-billede til ARM "fra bunden"
Når udviklingen lige begynder, er det ofte ikke klart, hvilke pakker der går til target rootfs.
Det er med andre ord for tidligt at få fat i LFS, buildroot eller yocto (eller noget andet), men du skal allerede i gang. For de rige (jeg har 4GB eMMC på piloteksempler) er der en udvej til at distribuere en distribution til udviklere, der giver dem mulighed for hurtigt at levere noget, der mangler i øjeblikket, og så kan vi altid samle lister over pakker og oprette en liste til målroderne.
Denne artikel er ikke ny og er en simpel copy-paste instruktion.
Formålet med artiklen er at bygge Ubuntu rootfs til ARM boards (i mit tilfælde baseret på Colibri imx7d).
Opbygning af et billede
Vi samler målrootf'erne til replikering.
Udpakning af Ubuntu Base
Vi vælger selv udgivelsen ud fra behov og vores egne præferencer. Her har jeg givet 20.
$ mkdir ubuntu20
$ cd ubuntu20
$ mkdir rootfs
$ wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04-base-armhf.tar.gz
$ tar xf ubuntu-base-20.04-base-armhf.tar.gz -C rootfs
Kontrollerer BINFMT-understøttelse i kernen
Hvis du har en fælles distribution, så er der understøttelse af BINFMT_MISC, og alt er konfigureret, hvis ikke, så er jeg sikker på, at du ved, hvordan du aktiverer BINFMT-understøttelse i kernen.
Kernel header filer og moduler er en separat sag. Selvfølgelig vil vi ikke installere bootloader, kerne, moduler, enhedstræet via Ubuntu. De vil komme til os udefra, eller vi samler dem selv, eller de vil blive givet til os af pladeproducenten, under alle omstændigheder er dette uden for rammerne af denne vejledning.
Til en vis grad er versionsdivergens acceptabel, men det er bedre at tage dem fra kernebygningen.
# apt install --yes linux-headers-generic
Lad os se, hvad der skete, og det viste sig en masse:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Glem ikke at angive en adgangskode.
Pakker billedet
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Derudover kan vi installere etckeeper med autopush-indstillingen
Lad os sige, at vi distribuerede vores assembly, arbejdet begyndte med, hvordan man bedst sammensætter senere forskellige versioner af vores system.
Vi kan selvfølgelig oprette filialer på enheden på forhånd (lad os sige, at vi laver et script eller en tjeneste, der kører første gang, den lanceres).