Avancé·2 min·24 août 2026

Ton exécutable est une base SQLite

🎧 Résumé audio0:00 / 0:00
Un développeur transforme un fichier SQLite en binaire exécutable Linux directement.
Ton exécutable est une base SQLite

Pourquoi ça compte pour toi

C'est un hack Linux fascinant qui montre comment repenser les formats de fichiers. Si tu bidouilles, déploies des outils ou construis des systèmes embarqués, c'est un pattern à connaître pour comprendre comment fusionner données et code à bas niveau.

Ce qu'il faut retenir

  • 1.Utilise le champ 'application ID' de SQLite (4 octets) pour marquer le fichier comme exécutable SELF
  • 2.Les composants ELF sont stockés dans des tables SQLite, fusionnant données et code binaire
  • 3.Linux binfmt_misc apprend au noyau à exécuter ce format hybride automatiquement

Tu galères avec le jargon ?

Lis la version réécrite en mode débutant — toutes les idées, sans le jargon.

Le truc : un fichier qui est deux choses à la fois

Farid Zakaria a eu une idée étrange : et si tu prenais une base SQLite et tu la rendais directement exécutable sans wrapper ni conteneur ?

Voici comment ça marche. Dans le format SQLite, il y a un identifiant de 4 octets à la position 68 (l'"application ID"). Il le change en "SELF" (pour Structured Executable & Linkable Format). Boom : le noyau Linux voit ce magic number et sait que ce n'est pas qu'une base de données.

La mécanique : mettre du code dans des tables

Les différentes sections d'un exécutable ELF (le format standard Linux) sont stockées dans des tables SQLite. C'est du rangement malin : au lieu d'avoir un fichier binaire brut, tu as une vraie base de données qui contient ton exécutable.

Un petit interprète en C (le self-exec) sait comment extraire ces pièces et les lancer.

Rendre ça natif avec binfmt_misc

Linux dispose d'un mécanisme appelé binfmt_misc : tu peux dire au noyau « chaque fois que tu vois ce pattern de magic bytes, utilise ce programme pour l'exécuter ».

Une simple ligne enregistre le nouveau format :

printf '%s\n' ':self:M:68:SELF::/usr/local/bin/self-exec:' \
  > /proc/sys/fs/binfmt_misc/register

Après ça, le noyau traite les fichiers SELF comme des exécutables natifs.

Pourquoi c'est intéressant

C'est pas du pur utile au quotidien, mais c'est un exemple brillant de symétrie : tu casses la distinction entre « données » et « code ». Une base SQLite reste une base (requêtable, modifiable), mais elle tourne aussi directement. Idéal si tu veux déboguer des déploiements, versionner des exécutables avec des métadonnées structurées, ou juste faire un truc dingue avec Docker.

Farid l'a testé sur NixOS, mais ça marche sur n'importe quel Linux moderne.

Et concrètement pour toi ?

Choisis ton profil — la lecture de l'article change selon qui tu es.

🔭 Curieux

Pour toi, retiens que les frontières entre fichier et programme sont floues en Linux : ce hack montre qu'avec les bons bits, tu peux faire dire au noyau 'exécute ça' sur n'importe quel format structuré, pas juste du code compilé.

Newsletters Noésis

3 minutes d'IA dans ta boîte mail, chaque matin.

Rejoins les francophones qui comprennent, essaient et progressent avec l'IA. Choisis ce que tu veux recevoir. Désabonnement en 1 clic.

Explorer les thèmes de cet article :