Crearea unei imagini Ubuntu pentru ARM „de la zero”
Când dezvoltarea abia începe, de multe ori nu este clar ce pachete vor merge la rădăcinile țintă.
Cu alte cuvinte, este prea devreme să apuci LFS, buildroot sau yocto (sau altceva), dar trebuie deja să începi. Pentru cei bogați (am 4GB eMMC pe mostre-pilot) există o cale de a distribui dezvoltatorilor o distribuție care le va permite să livreze rapid ceva care lipsește în prezent și apoi putem oricând să colectăm liste de pachete și să creăm o listă pentru rădăcinile țintă.
Acest articol nu este nou și este o simplă instrucțiune de copiere-lipire.
Scopul articolului este de a construi rootf-uri Ubuntu pentru plăci ARM (în cazul meu, pe baza Colibri imx7d).
Construirea unei imagini
Asamblam rădăcinile țintă pentru replicare.
Despachetarea bazei Ubuntu
Alegem noi înșine eliberarea în funcție de nevoi și de propriile noastre preferințe. Aici am dat 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
Verificarea suportului BINFMT în nucleu
Dacă aveți o distribuție comună, atunci există suport pentru BINFMT_MISC și totul este configurat, dacă nu, atunci sunt sigur că știți cum să activați suportul BINFMT în nucleu.
Asigurați-vă că BINFMT_MISC este activat în kernel:
Fișierele și modulele antet kernel sunt o chestiune separată. Desigur, nu vom instala bootloader-ul, kernel-ul, modulele, arborele dispozitivelor prin Ubuntu. Ele vor veni la noi din exterior sau le vom asambla noi sau ne vor fi date de producătorul plăcii, în orice caz acest lucru depășește domeniul de aplicare al acestei instrucțiuni.
Într-o oarecare măsură, divergența versiunilor este acceptabilă, dar este mai bine să le luați din compilarea kernelului.
# apt install --yes linux-headers-generic
Să vedem ce s-a întâmplat și au ieșit multe:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Nu uitați să setați o parolă.
Împachetarea imaginii
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
În plus, putem instala etckeeper cu setarea autopush
Ei bine, să presupunem că ne-am distribuit ansamblul, a început munca pentru a asambla cel mai bine diferite versiuni ulterioare ale sistemului nostru.