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 libre
01 — La machine

Un 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.

Première carteFévrier 2012 · Model B
ArchitectureArm (32 et 64 bits)
StockagemicroSD, USB, NVMe (Pi 5)
Connecteur40 broches GPIO · 3,3 V
SystèmeRaspberry Pi OS, dérivé de Debian
Carte Raspberry Pi 4 Model B vue de dessus
Raspberry Pi 4 Model B — vue de dessus Photo : Laserlicht / Wikimedia Commons · CC BY-SA 4.0
identifier la machine
$ 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
2012
première carte
40
broches GPIO
3,3 V
logique des broches
60 M+
cartes vendues
02 — La gamme

Six cartes, six usages

Cinq cartes Raspberry Pi côte à côte : Pi 1, Pi 5, Pi 400, Zero 2 W et Pico
Toute la famille : Pi 1, Pi 5, Pi 400, Zero 2 W et Pico Photo : SimonWaldherr / Wikimedia Commons · CC BY-SA 4.0
Carte Raspberry Pi Pico en vue oblique
Le Pico — un microcontrôleur, pas un ordinateur Photo : Phiarc / Wikimedia Commons · CC BY-SA 4.0
pi 5Le modèle de bureauQuatre cœurs Arm Cortex-A76 à 2,4 GHz, 4 à 16 Go de RAM, deux sorties 4K, un connecteur PCIe pour un SSD NVMe. Assez pour servir de poste de travail léger.Puissance
pi 4Le cheval de traitSorti en 2019, quatre Cortex-A72, USB 3 et Ethernet gigabit. Le modèle le plus répandu pour les petits serveurs, la domotique et les projets réseau.Polyvalent
pi 400L'ordinateur-clavierLa carte du Pi 4 intégrée dans un clavier, dans l'esprit des micro-ordinateurs des années 1980. On branche un écran et on programme, sans boîtier ni câblage.Pédagogie
zero 2 wLe format timbre-poste65 × 30 mm, quatre cœurs à 1 GHz, 512 Mo de RAM, Wi-Fi intégré, quelques grammes et une consommation minuscule. Pour tout ce qui doit être petit et discret.Embarqué
picoLe microcontrôleurPuce RP2040, deux cœurs Cortex-M0+, 264 Ko de mémoire. Il n'exécute pas Linux : le programme est seul sur la puce, démarre en une milliseconde et pilote le matériel au cycle près.Temps réel
cmLe module de calculLa même électronique, sans les ports, à souder ou enficher sur une carte conçue sur mesure. C'est la version que l'on retrouve à l'intérieur d'appareils industriels.Intégration
La philosophie Unix, 1978

« Écrire des programmes qui font une seule chose, et qui la font bien. »

Doug McIlroy · Bell Labs
03 — Le système

Linux, couche par couche

Tux, le manchot mascotte de Linux
Tux · mascotte du noyau
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.

01Tout est fichierUn disque, un port série, un capteur de température, un processus : tout s'ouvre, se lit et s'écrit comme un fichier. /proc et /sys exposent l'état du noyau en texte lisible.Principe fondateur
02Les permissionsChaque fichier a un propriétaire, un groupe et trois droits — lecture, écriture, exécution. chmod et chown les modifient ; root passe outre. C'est toute la sécurité de base du système.Utilisateurs · Droits
03Les processusChaque programme lancé reçoit un numéro (PID) et un parent. Ils naissent, se dupliquent, meurent, et le noyau arbitre entre eux. ps, top et kill suffisent à tout observer.Multitâche
04Les servicesCe qui doit tourner en permanence est décrit dans une unité systemd : quoi lancer, quand, et que faire en cas de crash. systemctl pilote, journalctl raconte.Démarrage · Journaux
05Les paquetsLes logiciels ne s'installent pas en téléchargeant des exécutables, mais depuis des dépôts signés : apt sur Debian, dnf sur Fedora, pacman sur Arch. Le système résout les dépendances.Dépôts · apt
06Le logiciel libreLe code source est disponible, modifiable et redistribuable. Ce n'est pas qu'une question de prix : c'est ce qui permet de vérifier, de corriger et d'apprendre à partir de l'existant.GPL · Open source
04 — Le terminal

La 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.

enchaîner des outils simples
# 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
se repérer
pwd · ls · cd

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:.

lire
cat · less · tail

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
grep · find

Chercher un motif dans le contenu des fichiers, ou un fichier dans l'arborescence. Deux outils, et l'essentiel des recherches est couvert.

droits
chmod · sudo

Modifier les permissions, ou exécuter une commande en administrateur. sudo avec prudence : il désactive le garde-fou.

services
systemctl

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.

à distance
ssh

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.

paquets
apt

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.

se documenter
man

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.

ls -lagrep -rn "motif" .chmod 755 script.shsystemctl status sshapt update && apt upgrademan man
05 — Programmer

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.

python
Le langage d'entrée

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.

c
Le langage du système

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.

bash
La colle

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.

rust
Le sérieux moderne

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.

sql
Interroger les données

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.

git
La mémoire du code

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.

blink.py — allumer une LED
# 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)
Gros plan sur le connecteur GPIO d'un Raspberry Pi
Le connecteur GPIO, où le code rencontre le matériel Photo : Florian Knodt / Wikimedia Commons · CC BY 2.0

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.

06 — Par où commencer

Six étapes, dans l'ordre

01Écrire le systèmeRaspberry Pi Imager écrit Raspberry Pi OS sur la carte microSD et permet de configurer d'avance le Wi-Fi, le nom de la machine et l'accès SSH.
02Travailler sans écranUne fois SSH activé, la carte n'a plus besoin de clavier ni de moniteur : ssh utilisateur@nom-machine.local depuis n'importe quel poste du réseau.
03Apprendre dix commandesSe déplacer, lire, chercher, installer, redémarrer un service. Dix commandes couvrent l'immense majorité de l'usage quotidien ; le reste s'apprend au besoin.
04Faire clignoter une LEDUne résistance, une LED, deux broches, dix lignes de Python. C'est le premier programme qui produit un effet physique — et la meilleure porte d'entrée vers l'électronique.
05AutomatiserTransformer le script qui marche en service systemd, pour qu'il démarre tout seul et se relance en cas d'erreur. C'est le passage du bricolage au fonctionnement durable.
06Lire la documentationLa documentation officielle du Raspberry Pi, les pages 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 ↑