Dossier · Raspberry Pi · Linux · Programmation
Une carte, un noyau libre, et tout devient lisible
Un ordinateur complet tient aujourd'hui dans une carte de la taille d'une carte de crédit, fait tourner un système d'exploitation libre dont chaque ligne est publique, et se programme avec des outils gratuits. Voici comment cet ensemble fonctionne : la machine, le système, le terminal, les langages — et par où on commence.
Depuis 1991 · noyau libreUn ordinateur entier sur une carte
Le Raspberry Pi naît en février 2012 au Royaume-Uni, dans le but déclaré de remettre des machines programmables entre les mains des élèves : une carte à 35 dollars, sans boîtier, sans disque, avec les composants apparents. Le succès dépasse largement l'école — on en trouve aujourd'hui dans les salles de classe, les laboratoires, les serveurs domestiques et l'industrie.
Techniquement, c'est un ordinateur monocarte : un SoC (System on a Chip) Arm qui réunit processeur, GPU et contrôleurs mémoire sur une seule puce, de la RAM soudée, des ports USB, un port réseau, du HDMI, et le système d'exploitation sur une simple carte microSD. Pas de BIOS classique, pas de disque dur : on écrit une image système sur la carte, on l'insère, on branche.
Sa particularité tient à une rangée de 40 broches sur le bord de la carte : le connecteur GPIO (General Purpose Input/Output). Chacune de ces broches se lit ou s'écrit depuis un programme, en logique 3,3 V. C'est par là que la machine sort de l'écran : capteurs, relais, moteurs, LED, bus I2C, SPI et UART pour dialoguer avec d'autres puces.
« Une machine qu'on peut ouvrir,
lire et reprogrammer entièrement. »
Cette philosophie est cohérente de bout en bout : le système est libre, la documentation du matériel est publique, les schémas de broches sont imprimés dans la doc officielle, et le prix d'entrée reste celui d'un accessoire. Se tromper ne coûte presque rien — et c'est précisément ce qui en fait un si bon outil d'apprentissage.

$ uname -srm Linux 6.6.31-v8+ aarch64 $ cat /proc/device-tree/model Raspberry Pi 5 Model B Rev 1.0 $ nproc 4 $ free -h | head -2 total used free Mem: 7.9Gi 612Mi 6.8Gi $ vcgencmd measure_temp temp=47.1'C # tout est lisible : /proc et /sys # sont des fichiers générés par # le noyau, pas des fichiers disque
Six cartes, six usages


« Écrire des programmes qui font une seule chose, et qui la font bien. »
Doug McIlroy · Bell LabsLinux, couche par couche

Larry Ewing · domaine public
Linux, au sens strict, c'est un noyau : le programme qui parle au matériel, distribue le temps de calcul, gère la mémoire et les fichiers. Publié en 1991 par Linus Torvalds sous licence GPL, il est accompagné des outils GNU lancés par Richard Stallman en 1983. Un système utilisable, c'est ce noyau plus des milliers de programmes assemblés par une distribution — Debian, dont dérive Raspberry Pi OS, Ubuntu, Fedora, Arch. Le noyau est commun ; ce qui change, c'est l'assemblage.
/proc et /sys exposent l'état du noyau en texte lisible.Principe fondateurchmod et chown les modifient ; root passe outre. C'est toute la sécurité de base du système.Utilisateurs · Droitsps, top et kill suffisent à tout observer.Multitâchesystemd : quoi lancer, quand, et que faire en cas de crash. systemctl pilote, journalctl raconte.Démarrage · Journauxapt sur Debian, dnf sur Fedora, pacman sur Arch. Le système résout les dépendances.Dépôts · aptLa ligne de commande, expliquée
Le terminal n'est pas une survivance du passé : c'est une interface où chaque commande est un petit programme, et où la sortie de l'un peut devenir l'entrée du suivant. C'est ce chaînage — le pipe, la barre verticale | — qui donne sa puissance à l'ensemble : quelques outils simples, combinés, remplacent un logiciel entier.
# les 5 plus gros fichiers du dossier, triés$ du -ah . | sort -rh | head -5 # compter les erreurs dans un journal$ grep -c "ERROR" /var/log/syslog # suivre en direct les messages d'un service$ journalctl -fu nginx # chaque commande fait UNE chose ; # le tuyau | fait le reste
Où suis-je, qu'y a-t-il ici, et comment me déplacer. Le système de fichiers part d'une seule racine, / : il n'y a pas de lecteur C:.
Afficher un fichier, le parcourir page par page, ou n'en suivre que la fin en direct avec tail -f — indispensable pour les journaux.
Chercher un motif dans le contenu des fichiers, ou un fichier dans l'arborescence. Deux outils, et l'essentiel des recherches est couvert.
Modifier les permissions, ou exécuter une commande en administrateur. sudo avec prudence : il désactive le garde-fou.
Démarrer, arrêter, activer au démarrage, connaître l'état. Le point d'entrée unique pour tout ce qui tourne en tâche de fond.
Ouvrir un terminal sur une autre machine, de façon chiffrée. C'est ainsi qu'on administre une carte posée dans un coin, sans écran ni clavier.
Mettre à jour la liste des dépôts, installer, supprimer. Sur Raspberry Pi OS et Debian, c'est la façon normale d'ajouter un logiciel.
Chaque commande a son manuel, hors ligne, sur la machine. man grep répond plus vite et plus précisément qu'une recherche en ligne.
Les langages, et à quoi ils servent
Programmer, c'est décrire une suite d'opérations avec assez de précision pour qu'une machine les exécute sans interpréter. Les concepts de base sont communs à tous les langages — variables, conditions, boucles, fonctions, structures de données — et se transposent d'un langage à l'autre. Ce qui change, c'est le niveau : plus on se rapproche du matériel, plus on contrôle, plus on doit être rigoureux.
Syntaxe lisible, bibliothèque standard fournie, interprété : on écrit, on lance, on corrige. C'est le langage recommandé sur Raspberry Pi, et il pilote très bien le GPIO.
Créé en 1972, compilé, sans filet : le noyau Linux lui-même est écrit en C. On y descend quand il faut de la vitesse ou un contrôle exact de la mémoire et du temps.
Le langage du terminal. Il n'est pas fait pour écrire de gros programmes, mais pour enchaîner ceux qui existent déjà et automatiser des tâches répétitives.
Performances du C, mais le compilateur refuse les erreurs de mémoire classiques. Il est admis dans le noyau Linux depuis la version 6.1 — une première depuis trente ans.
On ne décrit pas comment chercher, mais ce que l'on veut. SQLite, présent partout et sans serveur, suffit à la grande majorité des projets.
Pas un langage, mais l'outil qui garde l'historique de chaque modification et permet de revenir en arrière. Écrit par Linus Torvalds en 2005 pour le noyau.
# le « hello world » du matérielfrom gpiozero import LED from time import sleep led = LED(17) # broche GPIO 17while True: led.on() sleep(0.5) led.off() sleep(0.5)

Neuf lignes, et un composant physique obéit. C'est ce raccourci entre le code et le monde réel qui rend l'apprentissage concret : une erreur ne produit pas un message dans une console, elle produit une LED éteinte.
Le principe est toujours le même : une bibliothèque (ici gpiozero) traduit des appels simples en écritures sur les fichiers spéciaux que le noyau expose pour le GPIO. Sous l'abstraction, il n'y a que des fichiers — et on peut descendre les lire.
Le même montage s'écrit en C pour gagner en précision temporelle, ou sur un Pico en MicroPython lorsqu'aucun système d'exploitation ne doit s'intercaler entre le programme et la broche.
Six étapes, dans l'ordre
ssh utilisateur@nom-machine.local depuis n'importe quel poste du réseau.systemd, pour qu'il démarre tout seul et se relance en cas d'erreur. C'est le passage du bricolage au fonctionnement durable.man et le manuel Debian sont gratuits, précis et à jour. Ce sont les sources, pas des résumés.Aucune de ces étapes ne demande de matériel coûteux ni de licence. Une carte, une alimentation correcte, une carte microSD de qualité et un peu de patience suffisent : tout le reste — système, outils, compilateurs, documentation — est libre et déjà installé.
« Il reste toujours une couche en dessous. »
Remonter ↑