Files
ft_linux/docs/sujets/ft_linux.md
2026-10-23 11:31:19 +02:00

7.3 KiB
Raw Blame History

ft_linux — how_to_train_your_kernel

Traduction française du sujet. Le PDF reste la source en cas de doute.

Commentaire de chaque point, et fiches des liens : ../ft-linux/README.md.

PDF originaux/ft_linux_subject.pdf
Version 3.6
Date du PDF 7 novembre 2025
Pages 10
Résumé (anglais, page de titre) Make your own linux distribution

Liens réellement posés dans le PDF

Ancre anglaise Cible
standards (objectifs : hiérarchie « compliant with the standards ») http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
The Bible http://www.linuxfromscratch.org/lfs/view/stable/index.html
Autotools https://www.gnu.org/software/automake/manual/html_node/index.html#SEC_Contents
this (« you SHOULD read this and that ») http://pubs.opengroup.org/onlinepubs/9699919799/
that http://refspecs.linuxfoundation.org/lsb.shtml

La phrase « How to build a Linux kernel » n’est pas un lien.


I. Introduction

Bienvenue dans ft_linux. Dans ce sujet, il faut construire une distribution Linux basique, mais fonctionnelle.

Ce sujet ne porte pas sur la programmation du noyau, mais il y est fortement lié. Cette distribution sera la base de tous les projets noyau, parce que tout le code noyau sera exécuté ici, sur cette distribution. Essayer d’implémenter ce que l’on veut ou dont on a besoin. C’est l’espace utilisateur, il faut en prendre soin.

II. Objectifs

  • Construire un noyau Linux
  • Installer quelques binaires (voir la liste plus bas)
  • Mettre en place une hiérarchie de fichiers conforme aux standards (standards → FHS 3.0)
  • Se connecter à Internet

III. Instructions générales

III.0.1 Ressources

  • The Bible (lien vers LFS stable)
  • Comment construire un noyau Linux : il existe en fait beaucoup de ressources en ligne qui décrivent diverses recettes pas à pas pour configurer, construire et lancer un noyau Linux personnalisé.
  • Autotools (lien vers le manuel Automake)

III.0.2 Instructions

  • Pour ce sujet, il faut utiliser une machine virtuelle. Par exemple VirtualBox ou VMWare.
  • Ce n’est pas REQUIRED, mais on SHOULD lire this et that tout de suite (POSIX et LSB). Garder ces standards en tête. On ne sera pas noté sur leur respect, mais ce serait une bonne pratique.
  • Il faut un noyau en version >= 4.0. Stable ou non, du moment que la version est >= 4.0.
  • Les sources du noyau doivent être dans /usr/src/kernel-$(version).
  • Il faut au moins 3 partitions différentes : root, /boot et une partition de swap. On peut, bien sûr, en faire davantage si on le souhaite.
  • La distribution doit implémenter un kernel_module loader, comme udev.
  • La version du noyau doit contenir le login étudiant. Quelque chose comme Linux kernel 4.1.2-<student_login>.
  • Le hostname de la distribution doit être le login étudiant.
  • Liberté de choisir un système 32 ou 64 bits.
  • Il faut un logiciel de gestion et de configuration centrale, comme SysV ou SystemD.
  • La distribution doit démarrer avec un bootloader, comme LILO ou GRUB.
  • Le binaire du noyau situé dans /boot doit être nommé ainsi : vmlinuz-<linux_version>-<student_login>. Adapter la configuration du bootloader en conséquence.

IV. Partie obligatoire

IV.0.1 Paquets à installer

Encadré du sujet : certains paquets ci-dessous (vim, bash, grub, udev) sont des exemples. On peut les remplacer par n’importe quel équivalent. Les versions sont libres.

Noms recopiés tels quels :

  • Acl
  • Attr
  • Autoconf
  • Automake
  • Bash
  • Bc
  • Binutils
  • Bison
  • Bzip2
  • Check
  • Coreutils
  • DejaGNU
  • Diffutils
  • Eudev
  • E2fsprogs
  • Expat
  • Expect
  • File
  • Findutils
  • Flex
  • Gawk
  • GCC
  • GDBM
  • Gettext
  • Glibc
  • GMP
  • Gperf
  • Grep
  • Groff
  • GRUB
  • Gzip
  • Iana-Etc
  • Inetutils
  • Intltool
  • IPRoute2
  • Kbd
  • Kmod
  • Less
  • Libcap
  • Libpipeline
  • Libtool
  • M4
  • Make
  • Man-DB
  • Man-pages
  • MPC
  • MPFR
  • Ncurses
  • Patch
  • Perl)
  • Pkg-config
  • Procps
  • Psmisc
  • Readline
  • Sed
  • Shadow
  • Sysklogd
  • Sysvinit
  • Tar
  • Tcl
  • Texinfo
  • Time Zone Data
  • Udev-lfs Tarball
  • Util-linux
  • Vim
  • XML::Parser
  • Xz Utils
  • Zlib

La parenthèse de Perl) est dans le PDF.

Encadré : pour l’évaluation, il faut pouvoir télécharger du code source. Le sujet recommande fortement d’installer curl, wget, ou un autre outil.

Encadré : pour l’évaluation, il faut aussi pouvoir installer des paquets. Avoir tout ce qu’il faut pour ça.

V. Partie bonus

Le système est stable ? Bien. On peut s’amuser. Installer ce que l’on veut. N’importe quel logiciel, une GUI, ANYTHING. Faire de ce système le sien, avec sa touche. (La phrase est répétée deux fois dans le PDF.) Points particuliers pour un serveur X, et des gestionnaires de fenêtres ou environnements de bureau, comme GNOME / LXDE / KDE / i3 / dwm...

Encadré : le bonus n’est évalué que si la partie obligatoire est PERFECT. Perfect veut dire que l’obligatoire est intégralement fait et fonctionne sans dysfonctionnement. Si tous les prérequis obligatoires ne sont pas validés, le bonus n’est pas évalué du tout.

VI. Rendu et évaluation par les pairs

Rendre le travail dans le dépôt Git, comme d’habitude. Seul le travail présent dans le dépôt est évalué pendant la soutenance. Ne pas hésiter à revérifier les noms de dossiers et de fichiers.

Pour des raisons évidentes, on ne pousse pas la machine virtuelle entière, mais un checksum de l’image disque. Exemple donné tel quel :

shasum < disk.vdi

Garder l’image disque quelque part pour l’évaluation par les pairs.


Grille de lecture

Obligatoire

  • Distribution Linux basique et fonctionnelle, dans une machine virtuelle.
  • Noyau construit, version >= 4.0, sources dans /usr/src/kernel-$(version).
  • Version du noyau contenant le login. Forme citée : Linux kernel 4.1.2-<student_login>.
  • Fichier dans /boot : vmlinuz-<linux_version>-<student_login>, bootloader adapté.
  • Hostname = login étudiant.
  • Au moins les partitions root, /boot et swap.
  • Chargeur de modules du type udev.
  • Logiciel de gestion centrale du type SysV ou SystemD.
  • Bootloader du type LILO ou GRUB.
  • Binaires de la liste du chapitre IV, ou équivalents pour les exemples cités (vim, bash, grub, udev).
  • Hiérarchie de fichiers conforme aux standards (lien FHS).
  • Accès à Internet.
  • Pouvoir télécharger des sources et installer des paquets.
  • Au rendu : checksum de l’image disque, pas la VM. L’image reste disponible pour la soutenance.

Bonus

  • Logiciels au choix, interface graphique.
  • Serveur X, gestionnaires de fenêtres ou bureaux : GNOME, LXDE, KDE, i3, dwm, etc.
  • Évalué seulement si l’obligatoire est parfait.

Interdit, ou explicitement non noté

  • Pousser la machine virtuelle entière.
  • Noyau de version inférieure à 4.0.
  • Le respect de POSIX et de la LSB n’est pas noté. Le sujet demande quand même de les lire.
  • Bonus non regardé si l’obligatoire n’est pas intégralement fonctionnel.

Libellés et chemins à garder tels quels

REQUIRED, SHOULD, PERFECT, ANYTHING, kernel_module, student_login, linux_version, /usr/src/kernel-$(version), /boot, vmlinuz-<linux_version>-<student_login>, Linux kernel 4.1.2-<student_login>, shasum < disk.vdi, et tous les noms de paquets de la liste.