Kad izstrāde tikai sākas, bieži vien nav skaidrs, kuras pakotnes nonāks mērķa rootfs.
Citiem vārdiem sakot, ir pāragri izmantot LFS, buildroot vai yocto (vai ko citu), taču jums jau ir jāsāk. Bagātajiem (man ir 4GB eMMC uz izmēģinājuma paraugiem) ir izeja, kā izplatīt izstrādātājiem tādu izplatīšanu, kas ļaus ātri piegādāt kaut ko, kas šobrīd trūkst, un tad mēs vienmēr varam apkopot pakotņu sarakstus un izveidot sarakstu mērķa saknes.
Šis raksts nav jauns, un tas ir vienkāršs kopēšanas un ielīmēšanas norādījums.
Raksta mērķis ir izveidot Ubuntu rootfs ARM dēļiem (manā gadījumā, pamatojoties uz Colibri imx7d).
Tēla veidošana
Mēs apkopojam mērķa saknes replikācijai.
Ubuntu bāzes izpakošana
Izlaidumu mēs izvēlamies paši, pamatojoties uz vajadzībām un savām vēlmēm. Šeit es iedevu 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
Pārbauda BINFMT atbalstu kodolā
Ja jums ir kopīgs sadalījums, tad ir BINFMT_MISC atbalsts un viss ir konfigurēts, ja nē, tad esmu pārliecināts, ka jūs zināt, kā kodolā iespējot BINFMT atbalstu.
Pārliecinieties, vai kodolā ir iespējots BINFMT_MISC:
Kodola galvenes faili un moduļi ir atsevišķa lieta. Protams, caur Ubuntu mēs neinstalēsim sāknēšanas ielādētāju, kodolu, moduļus, ierīču koku. Tie atnāks pie mums no ārpuses vai mēs paši saliksim, vai arī tos mums iedos plātņu ražotājs, jebkurā gadījumā tas ir ārpus šīs instrukcijas.
Zināmā mērā versiju atšķirības ir pieņemamas, taču labāk tās ņemt no kodola versijas.
# apt install --yes linux-headers-generic
Apskatīsim, kas notika, un tas izrādījās daudz:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Neaizmirstiet iestatīt paroli.
Attēla iepakošana
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Turklāt mēs varam instalēt etckeeper ar autopush iestatījumu
Nu, pieņemsim, ka mēs izplatījām savu montāžu, sākās darbs pie tā, kā vislabāk salikt vēlāk dažādas mūsu sistēmas versijas.
Mēs, protams, varam ierīcē izveidot filiāles jau iepriekš (pieņemsim, ka mēs izveidojam skriptu vai pakalpojumu, kas darbosies, kad tas tiks palaists pirmo reizi).