Préparation Olinuxino A64 en serveur headless

J’ai acheté plusieurs A64-OLinuXino-2Ge8G-IND chez Olimex. Ils ont un processeur ARM 64 bits quad-core, avec 2Go de RAM (et 8Go de eMMC). C’est ce que j’ai trouvé de plus adapté à mes besoins d’auto-hébergement.

J’ai testé plusieurs images dessus, mesuré un peu les performances et listé quelques étapes pour qu’ils soient prêts à l’emploi pour mon usage.

Quelle image ou installeur utiliser ?

J’ai testé plusieurs possibilités pour faire tourner un Olinuxino A64 :

Installation d’une image

Copier l’image sur la carte micro-SD avec dd. Exemple :



		


(attention à ne pas se tromper de nom de device : dans mon cas c’est /dev/sdh, mais ça dépend de votre ordinateur)

Insérer la carte SD dans l’appareil. Si vous avez le câble de debug USB https://www.olimex.com/Products/Components/Cables/USB-Serial-Cable/USB-Serial-Cable-F/, c’est le moment de le brancher (dans l’ordre vert-rouge-bleu, le bleu étant du côté de l’alimentation électrique) et de se connecter (avec putty ou autre) pour voir la console. Sinon, il faut le brancher sur le réseau, et trouver son adresse IP (via son bail DHCP, par exemple). Je n’ai pas essayé la sortie HDMI.

Se connecter avec root/olimex (image ubuntu) ou root/1234 (images armbian)

Créer un autre compte, appartenant au groupe sudo (NB : sur Armbian, c’est proposé automatiquement à la première connexion)

Agrandir la partition sur la carte SD pour utiliser tout l’espace disponible (NB : sur Armbian, c’est fait automatiquement au premier démarrage)

Changer la timezone et la locale :



		


Performances

CPU

Les performances sont proches d’un Raspberry Pi 3, souvent légèrement meilleures.

Je n’ai pas fait tous les tests Phoronix, mais ceux que j’ai lancés indiquent des performances très légèrement meilleures sur les images armbian que sur l’image ubuntu :



		


Chiffrement

Résultat de sudo cryptsetup benchmark sur l’image ubuntu :



		


Sur l’image Armbian fournie par Olimex :



		


Et sur l’image Armbian fournie par Armbian :



		


=> dans tous les cas, il faut utiliser aes-xts. Ca tombe bien, c’est l’algorithme par défaut, et le plus sécurisé actuellement.

cat /proc/crypto confirme qu’il y a de l’accélération matérielle sur l’image ubuntu et sur Armbian (mais pas sur la version fournie par Olimex : je leur l’ai signalé, j’espère qu’ils l’ajouteront). Ce n’est pas encore commité sur le kernel upstream, mais on peut espérer que ça le soit bientôt. Cf https://linux-sunxi.org/Mainlining_Effort et https://groups.google.com/forum/#!topic/linux-sunxi/JLpU9PqHzvc.

I/O disque

Tests de performance d’I/O disque en écriture avec dd if=/dev/zero of=test.img bs=64M count=1 oflag=dsync (tous les filesystems sont en ext4) :

microSD classe 10 dans port USB8 Mo/s
microSD classe 10 dans port microSD9 Mo/s
microSD rapide dans port USB10 Mo/s
microSD rapide dans port microSD19 Mo/s
Mémoire flash interne31 Mo/s

Démarrage sur la mémoire interne

Vu les performances de la mémoire interne, ça vaut le coup d’y mettre l’OS. Mais il vaut mieux mettre les données vivantes ailleurs (on peut remplacer une carte SD si elle lâche à cause d’un trop grand nombre d’écritures, mais c’est plus compliqué de remplacer la mémoire interne…)

L’outil armbian-config permet de transférer l’OS courant sur la mémoire interne (eMMC). Ca fonctionne parfaitement bien.

Problème : si on met une carte SD dans le lecteur (pour y stocker des données), il arrive que l’appareil essaie de démarrer dessus, n’y arrive pas et reste bloqué.

Solution donnée par le support de Olimex : il faut effacer à la main l’éventuelle partition de boot de la carte, pour qu’il n’essaie pas de démarrer dessus :



		


Changement d’adresse MAC

Par défaut, l’image armbian utilise l’adresse MAC 02:ba:7b:d5:c6:6f (en dur). Mais si on a plusieurs de ces appareils sur le même réseau, ça fait un conflit d’adresse MAC. Pour l’éviter, il faut modifier le fichier /boot/armbianEnv.txt pour que u-boot y trouve l’adresse que l’on souhaite :



		


Problème : par défaut, c’est verrouillé, on ne peut pas changer l’adresse MAC (message d’erreur dans la log de u-boot). J’ai donc demandé à Olimex s’ils pouvaient compiler u-boot avec l’option CONFIG_OVERWRITE_ETHADDR_ONCE, pour que ça fonctionne. Cf https://github.com/linux-sunxi/u-boot-sunxi. C’est a priori ce qu’ils ont fait, et c’est effectif dans la version Armbian_5.87.1_Olinuxino-a64_Debian_stretch_next_5.1.4 (pas dans la version précédente Armbian_5.79.1_Olinuxino-a64_Debian_stretch_next_5.0.8). Par contre, ils ont également activé une autre option qui change l’adresse MAC à chaque reboot : il devient donc vraiment nécessaire de la figer dans /boot/armbianEnv.txt.

Alternative : configurer l’adresse MAC dans l’OS, en éditant par exemple /etc/network/interfaces comme suit :



		


Consommation électrique

Sans activité, l’appareil consomme environ 1.1W, et le CPU est autour de 45°C (d’après armbian). Rappelons que l’appareil est fanless.

En pleine activité (4 coeurs du CPU à fond), il monte à 4W environ, et la température du CPU à 75°C.

Conclusions

AvantagesInconvénients
Image Ubuntu fournie par OlimexStable et éprouvée
Support complet du matériel
Officiellement supporté par Olimex
OS et kernel anciens (3.10)
Kernel avec des blobs propriétaires, et difficile à mettre à jour en cas de faille de sécurité
Image Armbian fournie par OlimexKernel très récent (5.2)
Support de Olimex
Encore jeune (voir les échanges avec le support sur les problèmes des versions précédentes dans https://olimex.wordpress.com/2019/03/08/a64-olinuxinogot-mainline-linux-kernel-5-0-images/)
Pas de chiffrement matériel
Il faut figer l’adresse MAC dans /boot/armbianEnv.txt pour qu’elle ne change pas à chaque reboot
Image Armbian fournie par ArmbianKernel récent (4.19)
Support communautaire de Armbian
Chiffrement matériel
Encore jeune (la version Armbian_5.69_Lime-a64_Debian_stretch_next_4.19.13 n’était pas stable, par exemple)
Il faut changer l’adresse MAC dans l’OS si on branche plusieurs appareils avec cette image
Installeur Debian BusterKernel récent (4.19)
Permet d’avoir un système plus léger et personnalisé (chiffrement, partitions, LVM etc)
Mises à jour de sécurité parfaitement gérées
Ne fonctionne pas encore
Debian Buster n’est pas encore finalisé, donc l’OS peut avoir quelques instabilités

Il n’y a pas de solution idéale pour l’instant. Pour mon usage, je laisse tomber l’image Ubuntu (trop ancienne). Tant que l’installeur Debian ne fonctionne pas, il reste les 2 images armbian, entre lesquelles il n’est pas facile de trancher pour l’instant (elles évoluent rapidement).

Au final, j’ai décidé… de ne pas encore décider ! J’ai plutôt opté pour m’appuyer sur Ansible pour savoir tout réinstaller facilement à l’identique, et d’utiliser les images Armbian.

8 réflexions sur « Préparation Olinuxino A64 en serveur headless »

    1. Je n’ai pas fait de véritable benchmark, mais voici au moins quelques éléments préliminaires (je n’ai pas encore eu l’occasion des les vérifier « en production »).
      Le processeur A64 est un quad-core alors que le A20 est un dual-core. Si le cas d’usage sait exploiter ces multiples coeurs, on a donc 2 fois plus de capacité.

      Mais, même en mono-thread, le processeur est plus rapide.
      En lançant https://github.com/odan/benchmark-php (en pur PHP, sans MySQL), cela prend 6.9s sur A20, et 4.5s sur A64.
      L’encodage FLAC de la suite Phoronix (qui est mono-thread) prend 535s sur A20 (alors qu’il prend 353s sur A64).
      Ce n’est pas forcément généralisable à tous les cas d’usage mais, sur ces 2 tests (pourtant très différents), le A64 apporte un gain de performance du même ordre : un temps de traitement 35% plus court.

      A vérifier en usage réel (je n’y suis pas encore)

  1. Bonjour,
    Je voulais vous remercier. Grâce à vous j’ai trouvé une image armbian fonctionnelle pour mon olinuxino-A64-2Ge8G-IND (les dernières images proposées par le site d’armbian ne prennent pas en charge l’usb, et je n’arrivais pas à configurer la prise en charge vidéo sur l’image ubuntu d’olimex).
    Ce n’est pas exactement l’objet de votre article, mais sachez que qu’il a été très utile.
    Pour la fixation de l’adresse mac, est-ce vraiment important de le faire (puisque du coup j’aurai sans doute ce problème)?
    Encore merci,
    cordialement,

  2. Bonjour,
    Merci pour l’info. Ces images ne sont visiblement pas encore prêtes. Connaissez-vous une image qui aurait déjà une véritable accélération graphique ?
    Les dernières images du site armbian ne supportent pas l’usb, j’ai lutté en vain pour trouver une config pour les images armbian proposées par olimex, et l’image olimex (ubuntu), même si vous dites qu’elle comprend déjà un support complet du matériel, n’arrive pas à lire de simples vidéos sans lag.
    Pardon si ce n’est pas le lieu, n’hésitez pas à supprimer mon commentaire, ou à me rediriger si cela a été traité ailleurs.

    1. Ces dernières images ne sont pas parfaites, mais elles ne sont pas si loin d’être prêtes.
      Je ne les utilise qu’en mode serveur headless, je n’ai jamais branché d’écran dessus donc n’ai jamais testé l’accélération graphique.
      Mais elles mériteraient que vous les testiez, car elles utilisent un kernel récent.

      Pour info, Olimex a sorti à un moment des pré-versions de kodi tournant sur A64 (avec accélération graphique) : https://olimex.wordpress.com/2019/12/04/kodi-pre-build-images-are-now-on-on-our-ftp-a20-hdmi-audio-patches-will-be-ready-soon/ , mais elles ne bootaient hélas pas sur notre version de l’appareil (voir mon commentaire sur leur article de blog), et les liens vers les images ne fonctionnent plus…

      1. Bonjour,
        J’avais déjà testé les images libreelec-kodi, mais elles ne correspondent pas exactement à l’utilisation que je recherche. En revanche, elles tournent maintenant, et sont absolument parfaites pour la lecture vidéo et la gestion matérielle en général. C’est d’ailleurs assez impressionnant de fluidité.
        L’image qui tourne sur le olinuxino-A64-2Ge8G-IND est celle là:
        LibreELEC-A64.arm-9.2-devel-20191209113145-dd8e12d-a64-olinuxino
        téléchargeable sur ftp://staging.olimex.com/Allwinner_Images/a64-olinuxino/linux/3.LibreELEC_KODI_images/
        Je vais regarder android (même si ça m’étonnerait que j’aime ça), et puis une image
        un peu planquée, a64olinuxino_ubuntu_16.04.3_20180523_rel5 qui est indiquée sur la page de vente du produit mais bizarrement…
        Merci pour vos conseils,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *