%% licence RAFRAB(*)
%%
%% RAFRAB : rien à f**tre, rien à battre, fais ce qu'il te plait dans la vie
%%


\documentclass[french]{beamer}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usetheme{Warsaw}

\title{FHS : Filesystem Hierarchy Standard \\ \textit{norme de la hiérarchie des systèmes de fichiers}}
\author{}\institute{Agence universitaire de la Francophonie}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\section{Vue globale}
\frame{\tableofcontents[current]}

\begin{frame}
La FHS (Filesystem Hierarchy Standard) définit l'arborescence et le contenu des
principaux répertoires des systèmes de fichiers des systèmes d'exploitation
Linux et de la plupart des systèmes Unix.

\begin{itemize}
\item \url{www.pathname.com/fhs/}
\item norme du Free Standards Group = Hewlett-Packard, Red Hat, IBM, Dell, etc.
\item suivie à quelques exceptions près par tous les systèmes Unix (sauf MacOS X)
\item ... dont toutes les distributions Linux, dont Debian GNU/Linux.
\end{itemize}
\end{frame}

\begin{frame}
Les grands répertoires sous la racine :
\begin{itemize}
\item \texttt{/bin}, \texttt{/sbin} et \texttt{/lib} : commandes de base et bibliothèques associées
\item \texttt{/etc} : fichiers de configuration
\item \texttt{/usr} (\textit{unix system ressources}) : ressources non nécessaires au démarrage
\item \texttt{/var} : données variables
\item \texttt{/home} : répertoires des utilisateurs
\item \texttt{/mnt} et \texttt{/media} : points de montages
\item \texttt{/dev} : fichiers correspondants à des périphériques
\item \texttt{/tmp} : données temporaires
\item Linux : \texttt{/proc} et \texttt{/sys} : systèmes de fichiers virtuels
\end{itemize}
\end{frame}

\section{Les deux grandes hiérachies : \texttt{/} et \texttt{/usr}} 
\frame{\tableofcontents[current]}

\begin{frame}
\begin{center}
\texttt{/} : le système de fichier racine doit contenir tout ce qui
permet au système de démarrer
\end{center}
\begin{itemize}
\item \texttt{/bin} et \texttt{sbin} : commandes de base (utilisation et administration)
\item \texttt{/lib} : bibliothèques nécessaires à \texttt{/bin} et \texttt{/sbin} et modules du noyau
\item \texttt{/etc} : fichiers de configuration
\item \texttt{/boot} : fichiers statiques pour le démarrage
\item \texttt{/dev} : périphériques nécessaires au démarrage
\item \texttt{/root} : répertoire de l'administrateur
\item \texttt{/tmp} : données temporaires
\end{itemize}
Note : le démarrage par disque mémoire (\texttt{initrd}) rend tout cela un peu caduc.
\end{frame}

\begin{frame}
\begin{center}
\texttt{/usr} : la «sous-arborescence» contenant les ressources nécessaires au fonctionnement
\end{center}
\begin{itemize}
\item \texttt{/usr/bin} : la plupart des commandes utilisateur
\item \texttt{/usr/lib} : bibliothèques logicielles
\item \texttt{/usr/sbin} : commande d'administration non vitales
\item \texttt{/usr/share} : données partageables non liées à une architecture matérielle
\item \texttt{/usr/include} : fichiers d'entêtes pour développement (C en général)
\item \texttt{/usr/local} : hiérarchie purement locale (vide au départ)
\item \texttt{/usr/X11}, \texttt{/usr/games} : sous-systèmes
\item \texttt{/usr/src} : codes sources
\item \texttt{/usr/games} : indispensable ;)
\end{itemize}
Note : \texttt{/etc} reste le lieu des configurations.
\end{frame}

\section{Les répertoires à valeur ajoutée}
\frame{\tableofcontents[current]}

\begin{frame}
\begin{center}
\texttt{/etc} : les fichiers de configuration
\end{center}
\begin{itemize}
\item des fichiers textes, souvent auto-documentés grâce à la possibilité de commentaires
\item présence de fichiers fondamentaux : \texttt{/etc} n'est pas le répertoire où il faut jouer ;)
\item en général pour un logiciel il existe un sous-répertoire \texttt{/etc/\textit{logiciel}/} 
\item \texttt{/etc/init.d/} et \texttt{/etc/rc?.d/} : instructions pour le démarrage et l'arrêt
\end{itemize}
\end{frame}

\begin{frame}
\begin{center}
\texttt{/var} : les fichiers de données variables
\end{center}
\begin{itemize}
\item \texttt{/var/lib} : données d'état pour les applications (exemple : SGBD)
\item \texttt{/var/log} : les logs (fichiers «journaux»)
\item \texttt{/var/spool} : files d'attentes
\item \texttt{/var/mail} : les boîtes aux lettres
\item \texttt{/var/cache} : données cachées (au sens «déjà calculées»)
\item \texttt{/var/tmp} : données temporaires non effacées lors d'un reboot
\item \texttt{/var/www} : données pour le système web (on préfère aujourd'hui \texttt{/srv/www})
\end{itemize}
C'est un répertoire fondamental !
\end{frame}

\begin{frame}
\begin{center}
\texttt{/home} : les répertoires des utilisateurs
\end{center}
\begin{itemize}
\item \texttt{/home/login}
\item \texttt{/home/group/login}
\item \texttt{/home/t/h/thomas}
\end{itemize}
\end{frame}

\section{Les répertoires «étranges»}
\frame{\tableofcontents[current]}

\begin{frame}
\begin{center}
\texttt{/dev} : les périphériques et fichiers spéciaux
\end{center}
\begin{itemize}
\item \texttt{/dev/sda}, \texttt{/dev/cdrom} (lien vers), etc.
\item \texttt{/dev/null}, \texttt{/dev/zero},  \texttt{/dev/tty}, ...
\item sous-répertoires : \texttt{disk} \texttt{input} \texttt{snd} \texttt{net} (et LVM)
\end{itemize}
Aujourd'hui souvent géré dynamiquement par \texttt{udev}.
\end{frame}

\begin{frame}
\begin{center}
\texttt{/proc} et \texttt{/sys} : systèmes de fichiers \textit{virtuels}
\end{center}
\begin{itemize}
\item \texttt{/proc} : un sous-répertoire par processus et des fichiers d'état noyau
\item \texttt{/sys} : amélioration de \texttt{/proc} pour la vision hierarchique du système
\end{itemize}
\end{frame}


\section{Un exemple}
\frame{\tableofcontents[current]}

\begin{frame}
\begin{center}
Exemple de répartition dans la FHS : \textit{apache2}
\end{center}
\begin{itemize}
\item \texttt{/etc/apache2/*} : configuration
\item \texttt{/usr/sbin/apache2} : le binaire principal
\item \texttt{/usr/bin/htpasswd}, \texttt{/usr/sbin/split-logfiles}, etc. : utilitaires associés
\item \texttt{/usr/lib/libapr*} : bibliothèques logicielles partagées
\item \texttt{/usr/lib/apache2/} : modules pour apaches (\textit{php4}, \textit{fastcgi}, ...)
\item \texttt{/etc/init.d/apache2} : script de démarrage, d'arrêt, rechargement, status, ...
\item \texttt{/usr/share/doc/apache2/*} et \texttt{/usr/share/man/} : documentation
\item \texttt{/srv/www/*} : les données du site (pages HTML) 
\end{itemize}
\end{frame}


\end{document}
