Quando lo sviluppo è appena iniziato, spesso non è chiaro quali pacchetti andranno al rootfs di destinazione.
In altre parole, è troppo presto per prendere LFS, buildroot o yocto (o qualcos’altro), ma devi già iniziare. Per i ricchi (ho 4 GB di eMMC su campioni pilota) c'è una via d'uscita per distribuire agli sviluppatori una distribuzione che consentirà loro di fornire rapidamente qualcosa che attualmente manca, e quindi possiamo sempre raccogliere elenchi di pacchetti e creare un elenco per il rootfs di destinazione.
Questo articolo non è nuovo ed è una semplice istruzione copia-incolla.
Lo scopo dell'articolo è creare Ubuntu rootfs per schede ARM (nel mio caso, basate su Colibri imx7d).
Costruire un'immagine
Assembliamo i rootfs di destinazione per la replica.
Disimballaggio di Ubuntu Base
Scegliamo noi stessi il rilascio in base alle necessità e alle nostre preferenze. Qui ne ho dati 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
Verifica del supporto BINFMT nel kernel
Se hai una distribuzione comune, allora c'è il supporto per BINFMT_MISC e tutto è configurato, in caso contrario, sono sicuro che tu sappia come abilitare il supporto BINFMT nel kernel.
Assicurati che BINFMT_MISC sia abilitato nel kernel:
I file e i moduli di intestazione del kernel sono una questione separata. Ovviamente non installeremo bootloader, kernel, moduli, albero dei dispositivi tramite Ubuntu. Ci arriveranno dall'esterno oppure li monteremo noi stessi oppure ci verranno forniti dal produttore della scheda, in ogni caso questo esula dallo scopo di queste istruzioni.
In una certa misura, la divergenza di versione è accettabile, ma è meglio prenderle dalla build del kernel.
# apt install --yes linux-headers-generic
Vediamo cosa è successo e si è scoperto molto:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Non dimenticare di impostare una password.
Imballaggio dell'immagine
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Inoltre, possiamo installare etckeeper con l'impostazione autopush
Bene, diciamo che abbiamo distribuito il nostro assembly, è iniziato il lavoro su come assemblare al meglio in seguito diverse versioni del nostro sistema.
etckeeper può venire in nostro aiuto.
La sicurezza è una questione personale:
puoi proteggere alcuni rami
generare una chiave univoca per ciascun dispositivo