docdemarrage
This commit is contained in:
43
docs/ft-linux/references/fhs.md
Normal file
43
docs/ft-linux/references/fhs.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# FHS 3.0 — le mot `standards` du sujet
|
||||
|
||||
Adresse du PDF : <http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html>
|
||||
|
||||
Filesystem Hierarchy Standard, version 3.0, publié par le Linux Foundation. C’est une norme de rangement : quel répertoire existe, et quel genre de fichier a le droit d’y être. Elle ne dit pas comment compiler un paquet.
|
||||
|
||||
Le sujet n’écrit pas « FHS ». Il écrit « a filesystem hierarchy compliant with the standards », et le mot `standards` est le lien vers ce document. LFS, de son côté, dit suivre FHS 3.0.
|
||||
|
||||
## L’idée en une phrase
|
||||
|
||||
Deux fichiers qui ont le même rôle sur deux distributions doivent avoir le même chemin. `/bin/sh` est un shell, `/etc` est de la configuration, `/boot` est ce que le bootloader lit. Un programme écrit pour une distribution en trouve un autre sans deviner.
|
||||
|
||||
## Les répertoires que ft_linux va vraiment remplir
|
||||
|
||||
| Chemin | Rôle dans la norme | Dans ce projet |
|
||||
|--------|--------------------|----------------|
|
||||
| `/` | Racine. Tout le reste est en dessous | Une partition dédiée. Le sujet l’appelle `root` |
|
||||
| `/boot` | Noyau et fichiers du bootloader | Une partition à part. Le fichier `vmlinuz-<linux_version>-<student_login>` vit ici, avec la config GRUB |
|
||||
| `/bin` | Commandes essentielles, utilisables même si `/usr` n’est pas monté | `sh`, `ls`, `mount`. LFS y place les outils dont le boot a besoin |
|
||||
| `/sbin` | Commandes d’administration essentielles | `init`, `shutdown`, `fsck`, souvent `ip` selon les versions |
|
||||
| `/lib` | Bibliothèques essentielles, et souvent les modules du noyau dans `/lib/modules/<version>` | Le chargeur de modules cherche les `.ko` ici |
|
||||
| `/etc` | Configuration propre à cette machine | `/etc/hostname` (le login), `/etc/fstab` (les partitions), `/etc/passwd`, scripts SysV |
|
||||
| `/dev` | Fichiers de périphériques | Créés au boot par udev / devtmpfs, pas copiés à la main. `/dev/sda`, `/dev/tty1` |
|
||||
| `/proc` | Fenêtre sur le noyau, en mémoire | `ps`, et plus tard `/proc/mymounts` de Little Penguin, lisent ici. Ce n’est pas un disque |
|
||||
| `/sys` | Fenêtre sur les périphériques et les modules | udev écoute ce que le noyau y publie |
|
||||
| `/tmp` | Fichiers temporaires, effaçables | Droit d’écriture pour tout le monde, souvent un `tmpfs` |
|
||||
| `/usr` | La partie partageable du système, programmes non essentiels au tout premier boot | `/usr/bin`, `/usr/lib`, `/usr/share` |
|
||||
| `/usr/src` | Sources | Le sujet y met le noyau : `/usr/src/kernel-$(version)`. La norme prévoit ce répertoire pour du code source |
|
||||
| `/usr/include` | En-têtes C | Vient de Glibc et des en-têtes du noyau. GCC les lit pour compiler |
|
||||
| `/var` | Données qui changent : journaux, caches, files | `syslog` écrit dans `/var/log` |
|
||||
| `/home` | Répertoires des utilisateurs | Pas exigé par une ligne du sujet. Utile dès qu’on se connecte autrement qu’en root |
|
||||
| `/root` | Répertoire personnel du superutilisateur | Distinct de la partition racine `/` |
|
||||
| `/run` | Données d’exécution depuis le dernier boot | PID files, socket udev. Remplace l’ancien `/var/run` |
|
||||
| `/opt` | Logiciels ajoutés en dehors du système de base | Souvent vide dans un LFS minimal |
|
||||
| `/mnt`, `/media` | Points de montage temporaires | Vides au départ |
|
||||
|
||||
Le swap n’a pas de chemin FHS. C’est une partition que le noyau utilise comme mémoire, déclarée dans `/etc/fstab` avec le type `swap`. On ne crée pas de système de fichiers dessus.
|
||||
|
||||
## Deux distinctions qui évitent des erreurs
|
||||
|
||||
**Partition et répertoire.** `/boot` est un répertoire. Le sujet demande aussi que ce répertoire soit une partition : un morceau de disque monté sur ce répertoire au boot. On peut avoir le répertoire `/boot` sans partition séparée. Le sujet veut les deux.
|
||||
|
||||
**`/bin` et `/usr/bin`.** Historiquement, `/bin` survit si `/usr` est sur un autre disque pas encore monté. Beaucoup de distributions récentes fusionnent les deux par des liens. LFS explique son choix dans le chapitre qui crée l’arborescence. Pour le sujet, l’arbre doit rester lisible selon cette table.
|
||||
Reference in New Issue
Block a user