7.2 KiB
ft_linux — how_to_train_your_kernel
Traduction française du sujet. Le PDF reste la source en cas de doute.
| 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
thisetthattout 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,
/bootet une partition de swap. On peut, bien sûr, en faire davantage si on le souhaite. - La distribution doit implémenter un
kernel_moduleloader, 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
/bootdoit ê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,
/bootet 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.