Kada razvoj tek počinje, često nije jasno koji paketi će ići na ciljne rootfove.
Drugim riječima, prerano je za preuzimanje LFS-a, buildroot-a ili yocto-a (ili nešto treće), ali već morate početi. Za bogate (imam 4GB eMMC na pilot uzorcima) postoji izlaz da se programerima distribuira distribucija koja će im omogućiti da brzo isporuče nešto što trenutno nedostaje, a onda uvijek možemo prikupiti liste paketa i napraviti listu za ciljni rootfs.
Ovaj članak nije nov i predstavlja jednostavno copy-paste uputstvo.
Svrha članka je da se napravi Ubuntu rootf za ARM ploče (u mom slučaju, baziran na Colibri imx7d).
Izgradnja imidža
Sastavljamo ciljne rootf-ove za replikaciju.
Raspakivanje Ubuntu baze
Izdanje biramo sami na osnovu potreba i vlastitih preferencija. Evo dao sam 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
Provjera BINFMT podrške u kernelu
Ako imate zajedničku distribuciju, onda postoji podrška za BINFMT_MISC i sve je konfigurisano, ako ne, onda sam siguran da znate kako da omogućite BINFMT podršku u kernelu.
Zaglavlja kernela i moduli su posebna stvar. Naravno, nećemo instalirati bootloader, kernel, module, stablo uređaja preko Ubuntua. Doći će nam izvana ili ćemo ih sami sastaviti ili će nam ih dati proizvođač ploča, u svakom slučaju to je izvan okvira ovog uputstva.
Do neke mjere, divergencija verzija je prihvatljiva, ali je bolje uzeti ih iz kernela.
# apt install --yes linux-headers-generic
Da vidimo šta se desilo i ispalo je dosta:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Ne zaboravite postaviti lozinku.
Pakovanje slike
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Dodatno, možemo instalirati etckeeper sa autopush postavkom
Pa, recimo da smo distribuirali naš sklop, počeo je rad na tome kako najbolje sastaviti kasnije različite verzije našeg sistema.