Créer une image Ubuntu pour ARM « à partir de zéro »
Lorsque le développement commence tout juste, il est souvent difficile de savoir quels paquets seront envoyés au rootfs cible.
En d'autres termes, il est trop tôt pour récupérer LFS, buildroot ou yocto (ou autre chose), mais vous devez déjà commencer. Pour les riches (j'ai 4 Go d'eMMC sur des échantillons pilotes), il existe un moyen de distribuer aux développeurs une distribution qui leur permettra de livrer rapidement quelque chose qui manque actuellement, et nous pourrons alors toujours collecter des listes de packages et créer une liste pour les rootfs cibles.
Cet article n’est pas nouveau et est une simple instruction copier-coller.
Le but de l'article est de créer des rootfs Ubuntu pour les cartes ARM (dans mon cas, basé sur Colibri imx7d).
Construire une image
Nous assemblons les rootfs cibles pour la réplication.
Déballage de la base Ubuntu
Nous choisissons nous-mêmes la version en fonction de nos besoins et de nos propres préférences. Ici, j'en ai donné 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
Vérification du support BINFMT dans le noyau
Si vous avez une distribution commune, alors BINFMT_MISC est pris en charge et tout est configuré, sinon, je suis sûr que vous savez comment activer la prise en charge de BINFMT dans le noyau.
Assurez-vous que BINFMT_MISC est activé dans le noyau :
Les fichiers d'en-tête et les modules du noyau sont une affaire distincte. Bien entendu, nous n'installerons pas le bootloader, le noyau, les modules, l'arborescence des périphériques via Ubuntu. Ils nous viendront de l'extérieur ou nous les assemblerons nous-mêmes ou ils nous seront fournis par le fabricant de la planche, dans tous les cas cela sort du cadre de cette instruction.
Dans une certaine mesure, les divergences de versions sont acceptables, mais il est préférable de les extraire de la version du noyau.
# apt install --yes linux-headers-generic
Voyons ce qui s'est passé et cela s'est avéré beaucoup de choses :
# apt clean
# du -d 0 -h / 2>/dev/null
770M /
N'oubliez pas de définir un mot de passe.
Emballer l'image
$ sudo tar -C rootfs --transform "s|^./||" --numeric-owner --owner=0 --group=0 -c ./ | tar --delete ./ | gzip > rootfs.tar.gz
De plus, nous pouvons installer etckeeper avec le paramètre autopush
Eh bien, disons que nous avons distribué notre assemblage, le travail a commencé sur la meilleure façon d'assembler ultérieurement différentes versions de notre système.