Développement distant avec VSCode/VSCodium

Le plugin « Open remote – SSH » pour VSCode permet d’éditer/exécuter du code sur une machine distante depuis votre ordinateur de bureau. C’est très pratique pour du dev sur des machines hébergées ou des ordinateurs monocarte sans écran, genre Nanopi/Raspberry PI (ARMv7 ou Aarch64).

On pourrait faire ça avec des partages SMB et un simple xterm, mais là tout est intégré, il y a même un plugin pour utiliser des Makefiles sur la machine distante 😜: le confort de la vie moderne.

Ça fonctionne parfaitement avec des machines Linux (Testé sur Debian 12 et Rocky 8/9). Pour FreeBSD, la documentation indique d’installer manuellement « vscodium-server » mais ne décrit pas la méthode.
Une autre solution, plus rapide, est d’installer la couche de compatibilité Linux. Cela permet de faire passer la machine distante pour un Linux. Avec ça, l’installation se fera sans douleur. Dans l’ordre:

  • on active le service linux au démarrage
  • on démarre le service (Chargement des modules et montage des FS spécifiques /proc, /dev/shm, etc.)
  • on installe un environnement Linux (Centos 7)
sudo sysrc linux_enable="YES"
sudo service linux start
sudo pkg install linux_base-c7

Si vous êtes plus familier avec les distributions de type Debian, vous pouvez installer un environnement Debian ou Ubuntu avec debootstrap.

Enfin, sur votre ordinateur de bureau (celui où vous utilisez VSCode/VSCodium), éditez le fichier $HOME/.ssh/config et ajoutez une entrée pour votre machine FreeBSD préférée avec les options suivantes:

Host unxdev
    HostName unxbox
    User luc
    RequestTTY force
    SetEnv PATH="/compat/linux/usr/sbin:/compat/linux/usr/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"

Attention, l’installation peut modifier votre configuration git sur la machine distante. Pensez à sauvegarder le fichier $HOME/.gitconfig.

La source.

Il est préférable d’utiliser VSCodium plutôt que VSCode pour éviter d’envoyer des informations chez son éditeur (VSCodium est un clone de VSCode où la télémétrie est désactivée par défaut).

NanoBSD sur SOC ARMv7

NanoBSD est un outil inclus dans les sources de FreeBSD qui permet de créer des images systèmes réduites 1 pour des applications embarquées. Il survit aux défunts picobsd (supprimé en 2019) et tinybsd (supprimé en 2021). Même si le système est « réduit », c’est un vrai FreeBSD: on peut donc y installer n’importe quel logiciel issu des ports. Pour simplifier, c’est l’équivalent de buildroot ou de Yocto pour Linux.
Continue reading

Un compilateur peut en cacher un autre

En recompilant NuttX sur FreeBSD 13 pour une carte bluepill (STM32F103C8T6), j’ai eu une mauvaise surprise: même si le code se compile correctement, le binaire ne fonctionne pas une fois arrivé sur la cible.
La classique « laide qui clignote » fonctionne sans problème, mais des fonctions avancées (USB par exemple) ne fonctionnent pas du tout.
En fait, il faut utiliser le compilateur devel/gcc-arm-embedded au lieu de devel/arm-none-eabi-gcc.

Notez que ce compilateur s’installe dans le répertoire /usr/local/gcc-arm-embedded. Pour l’utiliser, il faut exporter la variable PATH comme suit (/bin/sh):

export PATH=$PATH:/usr/local/gcc-arm-embedded/bin

Exemple de configuration NuttX avec authentification sur la console via le port USB :
Je n’ai pas encore compris l’intérêt d’avoir deux compilateurs différents, mais je ne désespère pas d’avoir une réponse.

La source.
 
La capture de terminal est réalisée avec asciinema et convertie avec gifcast

SMART-PSU pour carte ARM

Cette alimentation « intelligente » permet de démarrer mais surtout d’arrêter avec grâce (graceful shutdown) tout ordinateur compatible avec FreeBSD et libgpio. C’est testé avec succès sur les cartes suivantes:

  • Nanopi Neo
  • Nanopi Neo Air
  • Orange PI
  • Raspberry PI B
  • Raspberry Zero
  • Raspberry PI 3

Continue reading