No description
  • Dockerfile 100%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Nathan Jambe e119d69d87 VIBE_ISSUES.md : suivi du tour 2 — issues 8 et 9 corrigées dans 9b58197 (vérifié)
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-10-31 20:14:18 +01:00
corrections Corrections du tour 2 de VIBE_ISSUES.md et README 2026-10-31 20:13:37 +01:00
exercices Corrections du tour 2 de VIBE_ISSUES.md et README 2026-10-31 20:13:37 +01:00
.dockerignore Labo 17.1 mis à jour, README et Dockerfile 2026-10-31 20:01:48 +01:00
.gitignore TODO.md ajoute au .gitignore 2026-10-12 16:21:42 +02:00
AGENTS.md AGENTS.md : footer de commit selon l'agent 2026-10-31 18:47:11 +01:00
Dockerfile Labo 17.1 mis à jour, README et Dockerfile 2026-10-31 20:01:48 +01:00
LICENSE Initial commit 2026-10-05 14:19:22 +02:00
README.md Corrections du tour 2 de VIBE_ISSUES.md et README 2026-10-31 20:13:37 +01:00
VIBE_ISSUES.md VIBE_ISSUES.md : suivi du tour 2 — issues 8 et 9 corrigées dans 9b58197 (vérifié) 2026-10-31 20:14:18 +01:00

cours-de-linux

Exercices et corrections du module LIN (Système Linux). Le cours lui-même (cours.pdf) n'est pas dans ce dépôt.

  • exercices/ : un dossier par chapitre, un fichier par exercice, solutions en fin de fichier.
  • corrections/ : les corrections des Labos du cours.

Où faire les exercices ?

Trois environnements, du plus simple au plus complet :

Environnement Pour quoi Risque pour votre machine
Conteneur Docker la ligne de commande, les fichiers, les scripts, apt faible, si vous suivez les règles ci-dessous
VM (VirtualBox, QEMU...) tout : démarrage, disques, réseau, systemd, interface graphique très faible
Votre propre machine seulement les exercices de lecture seule à éviter pour tout ce qui demande sudo

Un conteneur n'est pas une VM : il partage le noyau de votre machine, n'a pas de démarrage, et n'a pas de systemd. Il ne remplace donc pas une VM pour les chapitres système. Dans le doute, prenez une VM.

Utiliser Docker

Construire l'image

Une seule fois, depuis la racine du dépôt :

docker build -t cours-linux .

L'image (Debian 13, environ 550 Mo) contient les outils des exercices, et un utilisateur normal etudiant qui peut utiliser sudo sans mot de passe.

Lancer un conteneur

docker run -it --rm --hostname tp -v "$PWD/exercices:/home/etudiant/exercices:ro" cours-linux
  • -it : un terminal interactif ;
  • --rm : le conteneur est supprimé à la sortie, avec tout ce que vous y avez fait. Pour repartir de zéro, il suffit de le relancer ;
  • -v ...:ro : les énoncés sont visibles dans ~/exercices, en lecture seule ;
  • exit ou Ctrl+D pour sortir.

Pour garder un conteneur entre deux séances, enlevez --rm et ajoutez --name tp. Pour y revenir : docker start -ai tp. Pour le supprimer : docker rm tp.

Avant un exercice qui installe un paquet, mettez à jour les listes, absentes de l'image :

sudo apt update

Les services

Le conteneur n'a pas systemd : systemctl répond System has not been booted with systemd as init system (PID 1). Can't operate. C'est normal. Quand un exercice a besoin d'un service, démarrez-le à la main :

sudo service ssh start
sudo service cron start
sudo service atd start
sudo service cups start

Ce qu'il ne faut pas faire

Docker protège votre machine à condition de ne pas ouvrir les portes :

  • Pas de --privileged. Le conteneur accède alors aux vrais périphériques : sur la machine de test, sudo fdisk -l y voyait le vrai disque, et une erreur de mkfs ou de dd l'aurait effacé.
  • Pas de -v /:/host, ni de montage de votre dossier personnel en écriture : rm -rf dans le conteneur s'appliquerait à vos fichiers.
  • Pas de -v /var/run/docker.sock:... : cela revient à donner root sur votre machine.
  • Pas de --network host : un service lancé dans le conteneur s'exposerait sur votre réseau.

Attention aussi à ce que le conteneur affiche : lsblk y montre les disques de votre machine, car il lit les informations du noyau partagé. Ils y sont visibles, mais inaccessibles : sans --privileged, /dev ne contient aucun disque.

Enfin, être root dans le conteneur ne donne pas tous les droits : mount -o loop y échoue avec failed to setup loop device. Ces TP se font sur une VM.

Le mode systemd : à réserver à une VM

Certains tutoriels lancent systemd dans un conteneur :

docker run -d --name tp-systemd --privileged --cgroupns=host --tmpfs /run --tmpfs /run/lock \
  -v /sys/fs/cgroup:/sys/fs/cgroup:rw --user root cours-linux /sbin/init
docker exec -it -u etudiant tp-systemd bash
docker rm -f tp-systemd

Cela fonctionne (systemctl répond, l'état est degraded à cause d'un module noyau), mais cela utilise --privileged : les disques réels sont accessibles. Ne le faites que dans une VM, jamais sur votre poste. Et systemctl --user n'y fonctionne pas. Pour étudier systemd, une VM est plus simple et plus sûre.

Quel environnement pour quel chapitre ?

Chapitres Conteneur VM nécessaire
4, 5 (graphique, applications) tout
6 à 11 (fichiers, shell, scripts) tout
13 (processus) exercices 1 à 6 exercice 7 (systemd) et Labo 13.3
14 (utilisateurs) tout
15 (réseau) exercices 1, 3, 5, 6 (sudo service ssh start) exercices 2 (nmcli) et 4
16 (paquets) tout (sudo apt update d'abord)
17 (partitions) exercices 1, 3, 4, 8 exercices 2, 5, 6, 7
18 (démarrage) exercice 1 le reste
19 (automatisation) exercices 1, 3, 5 (sudo service cron start), et 4 sauf la partie C : pas de serveur de mail exercice 2
20 (sauvegarde) exercices 1 à 3, 6 exercices 4 et 5
21 (debug) quiz et études de cas les TP
22 (impression) exercices 1, 3, 4 (sudo service cups start) exercice 2 (systemctl)

Sur une VM, prenez un instantané avant les chapitres 17, 18 et 21 : un démarrage cassé se répare alors en une minute.