Creando unha imaxe de Ubuntu para ARM "desde cero"
Cando comeza o desenvolvemento, moitas veces non está claro que paquetes irán aos rootfs de destino.
Noutras palabras, é demasiado cedo para coller LFS, buildroot ou yocto (ou outra cousa), pero xa debes comezar. Para os ricos (teño eMMC de 4 GB en mostras piloto) hai unha saída para distribuír aos desenvolvedores unha distribución que lles permita entregar rapidamente algo que falta actualmente, e entón sempre podemos recoller listas de paquetes e crear unha lista para as raíces de destino.
Este artigo non é novo e é unha simple instrución para copiar e pegar.
O propósito do artigo é construír rootfs de Ubuntu para placas ARM (no meu caso, baseado en Colibri imx7d).
Construír unha imaxe
Montamos os rootfs de destino para a súa replicación.
Descomprimindo Ubuntu Base
Eliximos o lanzamento nós mesmos en función da necesidade e das nosas propias preferencias. Aquí dei 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
Comprobando o soporte de BINFMT no núcleo
Se tes unha distribución común, entón hai soporte para BINFMT_MISC e todo está configurado, se non, estou seguro de que sabes como activar o soporte de BINFMT no núcleo.
Asegúrese de que BINFMT_MISC estea activado no núcleo:
Os ficheiros e módulos de cabeceira do núcleo son unha cuestión separada. Por suposto, non instalaremos o cargador de arranque, o núcleo, os módulos, a árbore de dispositivos a través de Ubuntu. Chegaránnos dende fóra ou montarémolos nós mesmos ou serán entregados polo fabricante da placa, en todo caso isto está fóra do alcance desta instrución.
Ata certo punto, a diverxencia de versións é aceptable, pero é mellor tomalas da compilación do núcleo.
# apt install --yes linux-headers-generic
A ver que pasou e resultou moito:
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
Non esquezas establecer un contrasinal.
Empaquetado da imaxe
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
Ademais, podemos instalar etckeeper coa configuración de autopush
Ben, digamos que distribuímos a nosa montaxe, comezou o traballo sobre a mellor forma de montar posteriormente diferentes versións do noso sistema.
Podemos, por suposto, crear ramas no dispositivo con antelación (digamos que facemos un script ou un servizo que se executará a primeira vez que se lance).