\documentclass[a4paper,10pt]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}
\usepackage{times}
\usepackage{color}
\usepackage{tabularx}
\usepackage{epsfig}
\usepackage{shadow}
\usepackage{fancybox}
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{geometry}
%% \usepackage[html,3,sections+]{tex4ht}
%% \setlength{\hoffset}{-18pt}     
%% \setlength{\oddsidemargin}{5pt}         % Marge gauche sur pages impaires
%% \setlength{\evensidemargin}{5pt}        % Marge gauche sur pages paires
%% \setlength{\marginparwidth}{0pt}        % Largeur de note dans la marge
%% \setlength{\textwidth}{500pt}           % Largeur de la zone de texte (17cm)
%% \setlength{\voffset}{-18pt}             % Bon pour DOS
%% \setlength{\marginparsep}{7pt}          % Séparation de la marge
%% \setlength{\topmargin}{0pt}             % Pas de marge en haut
%% \setlength{\headheight}{10pt}           % Haut de page
%% \setlength{\headsep}{7pt}               % Entre le haut de page et le texte
%% \setlength{\footskip}{5pt}              % Bas de page + séparation
%% \setlength{\textheight}{720pt}          % Hauteur de la zone de texte (25cm)
\geometry{verbose, a4paper,tmargin=1cm,bmargin=1cm,lmargin=1cm, rmargin=1cm}
\title{Installation de Debian GNU/Hurd}
\author{Philip Charles}
\begin{document}
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\fancyhf{}
\fancyhead[LE,RO]{\bfseries\textit{\thepage}}
\fancyhead[LO]{\textbf{\textit{\rightmark}}\hspace{2cm}HurdFR \textit{(Association pour la promotion et le développement du Hurd)}}
\fancyhead[RE]{\bfseries\textit{\leftmark}}
\renewcommand{\headrulewidth}{0.5pt}
\addtolength{\headheight}{14pt}
\renewcommand{\footrulewidth}{0pt}
\fancypagestyle{plain}{
  \fancyhead{}
  \renewcommand{\headrulewidth}{0pt}
}
%% \maketitle
%% \pagestyle{plain}
%% \thispagestyle{plain}
\begin{center}
\LARGE{Qu'est ce que le Hurd}\\
\vspace{10pt}
\large{HurdFR}
\end{center}

\textit{Si le nom du Hurd est relativement connu dans le milieu des
  logiciels libres, peu de gens savent vraiment ce dont il
  s'agit. Commençons d'abord par expliquer ce que le Hurd n'est
  pas. Le Hurd n'est \emph{pas} un système d'exploitation. Le Hurd
  n'est pas non plus un noyau. Pour comprendre ce qu'est le Hurd, il
  est nécessaire d'expliquer un peu plus en détail ces deux notions.}

\section{Système d'exploitation ?}

Un système d'exploitation a deux objectifs principaux : 

\begin{itemize}
\item permettre aux
applications d'utiliser le matériel en utilisant une couche
d'abstraction : par exemple, il n'est pas nécessaire pour une
application de savoir si elle va écrire sur un disque dur SCSI ou IDE
; elle se contente de savoir qu'elle écrit dans un fichier, et tout ce
qui est gestion des fichiers et des disques durs est confiée au
système d'exploitation ;
\item répartir les différentes ressources disponibles (temps CPU,
  mémoire, périphériques) entre les applications.
\end{itemize}

\section{Micronoyau, noyau monolithique ?}

Traditionnellement, une grande partie du système d'exploitation est
implémentée dans le noyau. Une telle conception est dite monolithique.
Le noyau est un logiciel comme les autres,
sauf qu'il a beaucoup plus de permissions au niveau du matériel (mode
kernel), et que sans lui, les autres applications ne peuvent plus
fonctionner. Par conséquent, un <<bug>> dans le noyau nécessite en
général un redémarrage du système.\\

Pour éviter cela, une autre approche est donc de limiter le noyau, 
de ne lui confier que ce qui est strictement nécessaire, et de
déplacer la majorité des autres fonctionnalités (par exemple, gestion
des systèmes de fichier) à l'extérieur. Ainsi, un <<bug>> du
système de fichier ne provoquera pas une erreur dans le noyau, et les
conséquences seront donc moins graves.

\section{Un ensemble de serveurs ?}

Une approche du développement d'un système d'exploitation à micronoyau
est de déplacer toutes les fonctionnalités qui se trouvaient dans le
noyau vers un serveur unique. Ainsi, on a moins de choses dans le
noyau, mais il y a encore des inconvénients : par exemple un <<bug>>
dans la gestion des systèmes de fichiers pourrait entraîner des
conséquences pour la gestion de la mémoire, et ce n'est pas
souhaitable.\\

Une autre approche est de déplacer les fonctionnalités se trouvant
dans le serveur unique vers de multiples serveurs. Ainsi, un <<bug>>
dans le système de fichiers ext2fs n'entraînera pas de bug dans la
gestion de la mémoire, ni même pour un autre système de
fichiers. Cette approche a aussi un inconvénient : toutes les
communications qui étaient à l'intérieur du serveur unique et
pouvaient se faire par simple appels de fonctions, sont
maintenant des communications entre différents processus, qui sont
plus coûteuses en temps.\\

Le Hurd est un ensemble de serveurs tournant au-dessus d'un
micronoyau : Mach. 

\section{Traducteur, translator ?}

La particularité du Hurd, c'est qu'un serveur, nommé <<traducteur>>
(\emph{translator} en anglais) est associé à un n\oe ud du système de
fichiers. Par exemple, un traducteur ext2fs sera associé à '/' pour
monter une partition. Un autre traducteur ext2fs sera probablement
associé à '/home' pour monter une autre partition pour les répertoires
utilisateurs. Lorsqu'un programme voudra accéder à
'/home/neryelle/TODO', il y aura d'abord un appel au traducteur
associé à '/'. Comme il ne trouvera pas le fichier, il demandera au
traducteur associé à '/home' d'accéder à 'neryelle/TODO'.\\

Dans ce cas, l'utilisation d'un traducteur ressemble au montage d'une
partition, mais un traducteur peut aussi être utilisé sur un seul
fichier (par exemple, le traducteur <<fortune>> permet d'obtenir une
phrase aléatoire lorsqu'on accède à un fichier sur lequel ce
traducteur a été associé, ce qui peut être utile pour utiliser une
signature aléatoire dans un client mail ne permettant que d'insérer un
fichier en signature). De plus, un traducteur peut être activé par un
utilisateur (il ne nécessite pas de droits root) et peut utiliser
n'importe quelle bibliothèque (il existe par exemple un traducteur
ftpfs, qui permet de <<monter>> un serveur ftp sur son disque
dur). L'utilisation et le développement de traducteurs sont donc
simplifiés. 

\section{GNU/Hurd ? Le Hurd ?}

Le Hurd est l'ensemble des serveurs (traducteurs), tournant autour du
micronoyau (GnuMach). Le Hurd est un projet GNU ; le terme <<le GNU
Hurd>> est donc parfois utilisé pour renforcer cet appartenance, de la
même manière que les termes <<GNU Emacs>> ou <<GNU Bash>> sont parfois
utilisés pour parler d'Emacs et de Bash.\\

L'ensemble GnuMach et le Hurd permet de remplacer un noyau
monolithique (par exemple Linux). Il ne fournit cependant pas de
système d'exploitation complet, car il manque des bibliothèques (libc
notamment), des applications, etc. L'ensemble du système s'appelle
tout simplement GNU, ou GNU/Hurd lorsque l'on veut le différencier par
rapport à GNU/Linux. La plupart des applications tournant sous
GNU/Linux tournent (ou peuvent tourner) sous GNU/Hurd. \textbf{Debian
  GNU/Hurd} est une distribution GNU/Hurd, et s'utilise de façon très
similaire à Debian GNU/Linux.

\section{Pourquoi le Hurd ?}

Un certain nombre de personnes se demandent l'intérêt de développer le
Hurd lorsqu'il y a déjà une alternative qui fonctionne et qui est
libre : Linux. D'ailleurs, pendant un moment, le projet du Hurd a plus
ou moins été abandonné : Linux existait, fonctionnait, et il y avait
d'autres priorités dans le projet GNU, par exemple tous les logiciels
\emph{user-friendly}.\\

\textit{Pourtant, le Hurd a redémarré. Pourquoi ?}
La réponse est simple : le Hurd (ou, plus exactement, le Hurd plus un
micronoyau) est différent de Linux. Le Hurd permet de faire des choses
que Linux ne permet pas. La conception du Hurd est très différente de
celle de Linux. Il ne s'agit donc pas simplement d'une
réimplémentation pour le plaisir.

\section{Statut actuel}

Le Hurd n'est pas fini. Il est plus ou moins utilisable pour
l'instant, mais est lent et instable. Un certain nombre de problèmes
viennent du micronoyau Mach, et il y a actuellement un effort de
portage du Hurd vers L4, qui est un micronoyau beaucoup plus petit et
un peu plus rapide. Il est possible, avec Debian GNU/Hurd, de voir à
quoi ressemble le système, mais il n'est pas encore prêt pour une
utilisation de tous les jours ou en production.\\

Toute personne désirant participer au projet, que ce soit 
par le développement, la traduction ou la documentation est évidemment
la bienvenue :-)

\section{Pour en savoir plus...}

\begin{itemize}
\item Le projet GNU : \textit{http://www.gnu.org}
\item Le Hurd : \textit{http://hurd.gnu.org}
\item Pistachio, une implémentation de L4 : \textit{http://l4ka.org/pistachio}
\item L'association HurdFr : \textit{http://hurdfr.org}
\end{itemize}
\end{document}

