3.4. Procédure d'installation générique

Si vous avez fait la sauvegarde de vos données, que vous savez comment partitionner vos disques et où installer Linux, vous pouvez vous lancer effectivement dans l'installation de Linux.

Cette section vous présentera de manière générique les étapes d'une installation de Linux. Si vous désirez installer une distribution Mandriva, Debian ou Slackware, vous pouvez passer directement aux sections suivantes, qui décrivent plus spécifiquement l'installation de Linux avec ces distributions.

De manière générale, une installation de Linux se déroule selon les étapes suivanes :

Nous allons donc voir ces différentes étapes, sauf la configuration du système, qui sera présentée dans toute la suite de ce document.

3.4.1. Premier démarrage

Pour commencer votre installation, vous devez pouvoir démarrer votre ordinateur sous Linux. La méthode la plus simple est certainement de mettre le CD ou le DVD de la distribution que vous avez choisie dans votre lecteur et de redémarrer l'ordinateur.

Toutefois, il faut que votre BIOS soit configuré pour amorcer le système sur le lecteur de CD pour que cette solution fonctionne. Tous les BIOS modernes permettent de le faire, il suffit de rentrer dans le programme SETUP (généralement, cela se fait en appuyant sur la touche F2 ou la touche Suppr/Del de votre clavier juste au moment où l'ordinateur s'initialise).

Par ailleurs, certaines cartes mères et BIOS disposent d'une fonction de protection contre les virus de secteurs de boot. Les virus de ce type sont généralement assez anciens, et s'installent dans le MBR pour être exécutés à chaque démarrage de la machine et avant le système d'exploitation. Je prédis toutefois une recrudescence de ce type de virus depuis l'apparition des processeurs modernes qui permettent de virtualiser complètement le système d'exploitation. Quoi qu'il en soit, la modification des partitions et l'installation du gestionnaire d'amorçage de Linux peut apparaître comme une infection virale, et échouer en raison d'un blocage par le BIOS. Il est donc nécessaire de désactiver cette fonctionnalité pendant l'installation du système, et de la réactiver après. Cela se fait également dans le programme SETUP du BIOS.

Le noyau de Linux qui est fourni avec votre distribution est un noyau qui a été spécialement conçu pour démarrer correctement sur le plus grand nombre de machines possibles. Il contient donc les pilotes (« drivers » en anglais) pour votre disque dur, ainsi que pour d'autres types de disques. Lorsqu'il se lance, Linux tente de détecter le matériel de votre ordinateur. Seuls les pilotes correspondant à votre matériel s'activent, les autres sont tout simplement ignorés.

Il se peut cependant que Linux ne détecte pas vos disques durs. Cela peut arriver surtout pour les disques SCSI. Dans ce cas, il est probable que votre distribution fournisse des noyaux alternatifs, pour les configurations plus exotiques. Chacun de ces noyaux permet de démarrer sur un certain type d'ordinateur : vous devrez donc trouver le noyau qui correspond à votre matériel et réessayer.

Une autre solution est de fournir, lors du démarrage, des options au noyau, pour qu'il utilise un pilote plutôt qu'un autre, ou qu'il ne tente pas de détecter un matériel qui n'est pas présent sur votre machine, si ce teste le bloque au démarrage. Pour trouver la liste des options et la manière de les fournir au noyau, vous devez lire les informations du gestionnaire d'amorçage de votre distribution.

Si votre machine est très vieille, il se peut que votre BIOS ne vous permette malheureusement pas de booter sur un lecteur de CD. Dans ce cas, vous pouvez tenter de le mettre à jour, mais s'il n'en existe pas de nouvelle version, il ne vous restera plus qu'à démarrer sur une disquette. Pour cela, vous devrez copier une image de disquette d'amorçage sur une disquette. Vous pourrez alors utiliser cette disquette pour démarrer l'installation. En général, les distributions fournissent un petit utilitaire DOS nommé RAWRITE.EXE. Cet utilitaire s'utilise sous DOS avec la ligne de commande suivante :

rawrite image lecteur:
image est l'image d'une des disquettes d'amorçage (que vous trouverez sur le CD d'amorçage de votre distribution), et lecteur est le lecteur de disquette utilisé (en général, « A: »). Vous pouvez aussi consulter la documentation de votre distribution pour savoir comment indiquer au noyau les modules qu'il doit charger, ou comment créer une disquette de démarrage pour un autre noyau. Dans le pire des cas, la distribution utilisée ne supporte plus le démarrage sur disquette. Il ne reste plus alors qu'à trouver version plus ancienne de cette distribution, l'installer, puis faire une mise à jour.

Avec la plupart des distributions, les outils nécessaires à l'installation sont placés sur un disque virtuel en mémoire après le démarrage de Linux. C'est en particulier le cas du programme d'installation, et des outils de manipulation des partitions et des systèmes de fichiers. Vous devez toutefois être en mesure de les utiliser : il est donc impératif que Linux ait détecté vos disques durs. Si ce n'est pas le cas, soit les fichiers spéciaux de périphériques de ces disques ne seront pas présent dans le répertoire /dev/, soit les outils vous signaleront une erreur lorsque vous tenterez de les utiliser.

3.4.2. Trouver de la place pour installer le système

L'un des problèmes les plus courants lors d'une nouvelle installation est l'absence de place disponible sur le disque dur pour créer une partition Linux. Ce problème n'a hélas pas de solution : il faut supprimer une autre partition appartenant à un autre système, ou en réduire une.

Souvent, réduire une partition revient à sauvegarder les données, la supprimer, la recréer avec une taille inférieure et à restaurer les données. Certains outils commerciaux permettent de réduire des partitions directement, mais ils se vendent souvent pour le prix d'un disque dur neuf (je ne peux donc réellement pas conseiller de les acheter, sauf si vous avez plusieurs disques durs dont les partitions doivent être redimensionnées ou déplacées !). De plus, Linux dispose également d'un outil similaire qui, bien qu'il soit encore en phase de développement, permet déjà de réaliser la plupart des opérations que l'on peut avoir à faire sur les partitions FAT et les partitions EXT2 de Linux. Il s'agit du programme parted, que nous décrirons ci-après. De même, il existe un programme DOS permettant de réduire la taille d'une partition FAT, moyennant quelques précautions complémentaires. Bien entendu, il va de soi que si l'on doit déplacer ou modifier une partition, il faut faire au préalable des sauvegardes de toutes les données de cette partition... Mais ne l'ai-je pas déjà dit ?

Il est possible que votre distribution dispose d'un outil graphique permettant de manipuler les partitions existantes pendant la phase d'installation. Ce type d'outil pourra être utilisé pour dégager de la place pour Linux, éventuellement en réduisant une partition existante. Nous ne décrirons cependant pas ces outils ici, car ils sont spécifiques à chaque distribution. En revanche, nous présenterons les deux principales techniques permettant de redimensionner une partition, la première fonctionnant sous Linux et la deuxième sous DOS.

3.4.2.1. Utilisation de parted

L'utilitaire GNU parted est le standard en ce qui concerne les manipulations de partitions sous Linux. Cet outil s'utilise en ligne de commande, et peut donc être utilisé à partir d'un terminal en mode texte pendant la phase d'installation, si votre distribution l'inclut avec ses outils d'installation standards. Si ce n'est pas le cas, vous pourrez récupérer l'image d'une disquette de boot Linux contenant cet outil à l'adresse ftp://ftp.gnu.org/gnu/parted/bootdisk/partboot.img. Cette image pourra être copiée sur une disquette à l'aide de l'utilitaire DOS RAWRITE.EXE, de la même manière que les disquettes de boot de votre distribution peuvent être créées. La manière de procéder a été décrite dans la Section 3.4.1.

Une fois que vous aurez démarré Linux et obtenu un terminal fonctionnel, vous pourrez lancer parted avec la simple commande suivante :

parted disque
disque est l'identifiant du disque dur sur lequel la partition à modifier se trouve. Par exemple, la modification des partitions du premier disque dur IDE se fera donc à l'aide de la commande suivante :
parted /dev/hda

parted dispose de plusieurs commandes permettant de modifier les partitions. À l'heure actuelle, il ne permet réellement de travailler que sur les partitions FAT et les partitions contenant un système de fichiers EXT2, EXT3 ou ReiserFS. Pour les partitions contenant un système de fichiers NTFS, il vous faudra utiliser l'outil ntfsresize. Les exemples de la suite supposeront que le système de fichiers manipulés est un système de fichiers de type FAT.

La première commande indispensable est la commande print, qui permet d'afficher la table des partitions du disque courant. Les informations affichées par cette commande se présentent de la manière suivante :

Disk geometry for /dev/hda: 0.000-32634.492 megabytes
Disk label type: msdos
Minor    Start       End     Type      Filesystem  Flags
1          0.031  32632.031  primary   FAT         lba
Comme vous pouvez le constater, les partitions sont décrites à raison d'une ligne par partition. Cette ligne contient le numéro de la partition (les quatre premiers numéros étant affectés aux partitions primaires), les points de départ et de fin de ces partitions, exprimés en mégaoctets, le type de la partition, le système de fichiers de cette partition, et des indications complémentaires.

Note : Comme il l'a déjà été expliqué ci-dessus, les partitions sont généralement décrites en terme de cylindres. parted préfère utiliser le mégaoctet comme unité, ce qui est généralement plus clair. Il prend complètement en charge la traduction des informations de taille en termes plus physiques, en tenant compte des éventuels problèmes d'alignement aux limites de cylindre. Son utilisation est donc relativement directe.

La commande qui nous intéresse le plus ensuite est la commande resize, qui permet de redimensionner une partition. Cette commande utilise la syntaxe suivante :

resize partition début fin
partition est le numéro de la partition tel qu'il est présenté dans la première colonne des informations de la commande print, début est la nouvelle position où la partition commencera et fin est la nouvelle limite de cette partition. Comme vous pouvez le constater, il est possible de réduire une partition aussi bien par son début que par sa fin ! La seule contrainte est, bien entendu, que cette partition reste suffisamment grande pour contenir l'ensemble de ses données. Par exemple, pour réduire de 8 Go la première partition du disque dur de l'exemple précédent afin d'y placer la partition de swap et les systèmes de fichiers, on utiliserait la commande suivante :

resize 1 8192 32632.031

Note : L'opération de redimensionnement peut prendre un certain temps. En effet, parted doit déplacer les données qui se trouveraient en dehors de la partition après son redimensionnement si aucune mesure spéciale n'était prise, et il doit reconstruire complètement la FAT de cette partition pour qu'elle soit cohérente avec le nouvel emplacement de ces données.

Linux peut définir des limites sur les ressources utilisables par les utilisateurs afin de protéger le système. En particulier, il est possible qu'une limite soit définie concernant la taile maximale des fichiers manipulés. Il est bien entendu impératif de désactiver cette limite avant d'effectuer la moindre opération sur les partitions, étant donné que ce sont généralement des fichiers de très grande taille. Pour cela, il faut taper la commande suivante avant de lancer parted :

ulimit -f unlimited

Si vous désirez déplacer une partition plutôt que de la redimensionner, vous pouvez utiliser la commande move :

move partition début
partition est le numéro de la partition et début est son nouvel emplacement de départ, exprimé en mégaoctets. De même, si vous désirez copier une partition, la commande cp devra être utilisée. Cette commande suit la syntaxe suivante :
cp [disque] source destination
disque est le disque dur où se trouve la partition source, source est le numéro de cette partition, et destination est le numéro de la partition destination. La partition destination est toujours située sur le disque dur courant (c'est-à-dire celui qui a été indiqué en ligne de commande lors du lancement de parted ou celui spécifié par la commande select de parted).

Enfin, une fois que toutes les manipulations sur les partitions auront été effectuées, vous pourrez quitter parted avec la simple commande quit. Vous pourrez obtenir la liste des autres commandes acceptées par parted en tapant la commande help.

3.4.2.2. Utilisation de fips

fips (abréviation de l'anglais « First Interactive Partition Splitter ») est un utilitaire similaire à parted, à ceci près qu'il fonctionne sous DOS et qu'il ne permet que de réduire la limite supérieure d'une partition FAT. De plus, cet utilitaire est incapable de réorganiser le système de fichiers à l'issue de la réduction de la taille de la partition. Il est donc nécessaire de défragmenter le système de fichiers avant d'utiliser ce programme, afin de placer toutes ses données au début de la partition.

Note : Vérifiez bien les options du défragmenteur de système de fichiers que vous utilisez : quelques outils consolident bien l'espace libre mais placent certains fichiers à la fin de la partition FAT pour laisser plus de place aux fichiers les plus utilisés au début du disque, afin d'optimiser le débit de données sur ces fichiers (c'est notamment le cas avec le défragmenteur de Norton). Il faut impérativement désactiver ce type d'option avant de réduire la partition, faute de quoi vous perdriez définitivement les fichiers qui se trouvent à la fin de la partition et votre FAT serait dans un état incohérent.

Une fois la défragmentation réalisée, fips peut être utilisé pour réduire la taille de la partition FAT. La plupart des distributions de Linux fournissent des utilitaires DOS sur leur CD/DVD d'installation, généralement dans le répertoire dosutils. C'est là que vous pourrez sans doute trouver fips. Attention, vous devrez impérativement utiliser la version 2.0 de fips pour manipuler les FAT32 et FAT32X.

La réduction de la taille d'une partition se fait en modifiant la variable qui contient la taille de la partition dans la table des partitions. Pour cela, vous devrez simplement lancer fips. Celui-ci vous présentera alors la liste des disques durs installés sur votre système, et vous devrez lui indiquer le disque sur lequel la partition à réduire se trouve. Il vous demandera ensuite la partition que vous désirez réduire, puis le cylindre auquel cette partition devra se terminer. Lorsque vous aurez déterminé la nouvelle taille de cette partition, vous devrez presser la touche 'c' pour poursuivre. fips vous demandera alors confirmation avant d'écrire sur disque les nouvelles informations de partition. Si vous êtes sûr de vous, vous pouvez répondre par l'affirmative en pressant la touche 'y'.

Note : Contrairement à parted, fips ne reconstruit pas la table d'allocation des fichiers (la « FAT ») après avoir réduit la taille de la partition, ce qui fait que cette dernière est trop grosse pour cette nouvelle taille après réduction. Cela n'est pas gênant, seuls quelques mégaoctets seront perdus sur la partition FAT dans la FAT elle-même. Cette technique a en revanche l'avantage d'être extrêmement rapide.

3.4.3. Partitionnement du disque

Le partitionnement en soi peut se faire soit directement à l'aide du fdisk de Linux, soit par l'intermédiaire du programme d'installation de la distribution correspondante. Il est recommandé d'utiliser ce programme d'installation, qui vous guidera et vous indiquera comment réaliser cette opération. Si toutefois vous désirez utiliser fdisk, il vaut mieux faire attention à ce que vous faites. Pour lancer fdisk, il suffit de taper la commande suivante en ligne de commande :

fdisk disque
disque est le fichier spécial de périphérique représentant le disque que vous désirez partitionner. Si vous voulez partitionner le disque maître du premier contrôleur IDE, vous devrez donc taper :
fdisk /dev/hda

Si vous ne spécifiez aucun disque en paramètre à fdisk, il prendra par défaut le disque /dev/sda, ou /dev/hda si aucun disque SCSI n'est installé.

fdisk est un programme très peu interactif. Il attend que vous lui communiquiez les commandes à exécuter en tapant sur une lettre. Les différentes commandes possibles peuvent être affichées avec la commande 'm'.

Lorsque vous créez une partition, vous devez utiliser la commande 'n', puis indiquer son type avec les commandes 'p' (pour « primary ») pour une partition primaire ou 'e' (pour « extended ») pour une partition étendue. Vous devrez ensuite donner son numéro dans la table des partitions, puis indiquer le début et la fin de la partition. Par défaut, l'unité utilisée par fdisk est le cylindre. Il est recommandé de conserver cette unité, surtout si l'on utilise un système qui ne sait manipuler que les cylindres. Toutefois, on peut changer cette unité grâce à la commande 'u' et utiliser le secteur comme unité.

Si vous avez créé une partition étendue, celle-ci sera utilisée pour y stocker des partitions logiques. Pour pouvoir les créer, il faut encore utiliser la commande 'n', et choisir le type de partition logique avec la commande 'l' (pour « logical »). Les partitions logiques sont numérotées avec les nombres 5 et suivants. La création des partitions logiques se fait exactement de la même manière que les partitions primaires, en spécifiant leur début et leur fin, soit en cylindres, soit en secteurs selon l'unité courante.

Une fois les partitions créées, vous pouvez spécifier leur type à l'aide de la commande 't' (pour « type »). Cette commande demande successivement le numéro de la partition à modifier et la valeur de son identificateur en hexadécimal. Rappelons que les identificateurs à utiliser pour Linux sont 83 pour les partitions de systèmes de fichiers Linux, et 82 pour les partitions de swap. La liste des valeurs admissibles peut être obtenue à l'aide de la commande 'l'. Par défaut, le fdisk de Linux crée des partitions Linux natives, de code 83.

Lorsque vous aurez complètement défini vos partitions, il ne vous restera plus qu'à activer la partition qui contiendra le gestionnaire d'amorçage. La sélection de la partition active se fait avec la commande 'a' de fdisk. C'est donc sur cette partition que le chargeur du MBR ira chercher le gestionnaire d'amorçage du système à lancer.

Note : Théoriquement, il est tout à fait possible d'installer le gestionnaire d'amorçage d'un système directement sur le MBR, mais procéder de cette manière est très déconseillé. En effet, certains systèmes d'exploitation (notamment tous les systèmes de Microsoft) écrasent systématiquement le MBR lorsqu'ils s'installent, détruisant ainsi le chargeur d'un autre système qui y serait éventuellement installé. Cela implique que si l'on désire installer un gestionnaire d'amorçage autre que celui des systèmes Microsoft sur le MBR, il faut le faire après l'installation de ces systèmes. En pratique, cela veut dire que dans ce cas, on doit installer Linux après Windows ou le DOS.

Notez qu'il n'est toutefois pas toujours faisable d'installer le gestionnaire d'amorçage sur le secteur de boot de la partition de son système, en particulier si cette partition ne se trouve pas sur le premier disque dur de la machine. En effet, certains des BIOS sont incapables d'utiliser les MBR des autre disques durs. Dans ce cas, on peut soit créer une partition de démarrage de petite taille (quelques méga-octets, un cylindre au maximum) au début du disque et sur laquelle on installera le gestionnaire d'amorçage et éventuellement quelques outils de réparation en cas de coup dur, soit installer le gestionnaire d'amorçage directement sur le MBR du premier disque dur. Dans ce cas, on devra faire particulièrement attention à l'ordre d'installation des systèmes d'exploitation. De manière générale, il faut toujours installer les systèmes Microsoft en premier (respectivement dans l'ordre suivant si l'on veut éviter les problèmes : DOS, Windows 9x/Millenium et Windows NT4/2000/XP). Nous verrons plus loin comment installer le gestionnaire d'amorçage de Linux et faire une configuration multiboot avec les principaux autres systèmes d'exploitation existants.

3.4.4. Création des systèmes de fichiers

Une fois le disque correctement partitionné, il faut créer les systèmes de fichiers. Cette opération n'est pas nécessaire pour les partitions de swap, cependant il faut le faire pour les autres partitions.

Note : Attention ! Dans le monde du DOS et de Windows, l'opération de création d'un système de fichiers est appelée le « formatage » d'une partition. C'est une erreur de langage relativement grave, car il n'y a strictement rien à voir entre le formatage d'un disque, qui est l'opération consistant à enregistrer des marques sur le support magnétique pour définir les pistes et les secteurs du disque, et la création du système de fichiers d'une partition, qui consiste à enregistrer les structures de données permettant de retrouver les fichiers dans cette partition. Le formatage est normalement effectué par le fabricant du disque, et a lieu avant le partitionnement. En effet, partitionner un disque suppose qu'il existe déjà des pistes et des secteurs sur le disque. C'est pour cette raison que l'on ne parlera ici que de création de systèmes de fichiers.

La création des systèmes de fichiers EXT2 et EXT3 se fait avec une même commande, à savoir la commande mke2fs. La création des autres systèmes de fichiers se fait généralement de la même manière que pour ces systèmes, mais avec des outils différents. Par exemple, la création d'un système de fichiers ReiserFS se fait à l'aide de l'outil mkreiserfs. ReiserFS constitue une alternative possible à EXT3 car, tout comme EXT3, il prend en charge les mécanismes de journalisation qui assurent la cohérence du système de fichiers même en cas d'arrêt intempestif de l'ordinateur. Cependant, ce système de fichiers est encore jeune et n'a certainement pas été débogué autant que EXT3, qui s'appuie sur la base de code du vieux système de fichiers EXT2. Sachez également que ReiserFS, contrairement à EXT2 et à EXT3, ne se comporte pas encore très bien si le disque dur a des secteurs physiques défectueux. La suite de cette section ne traitera que des systèmes de fichiers EXT2 et EXT3, consultez la documentation de votre distribution et les pages de manuel des outils des autres systèmes de fichiers pour plus de détails sur la méthode à utiliser pour les créer.

Afin de pouvoir utiliser mke2fs correctement, il est nécessaire de définir quelques termes, et d'expliquer à quelles notions d'EXT2 et d'EXT3 ils se réfèrent.

Premièrement, le système de fichiers EXT2 travaille, comme la plupart des systèmes de fichiers (ce n'est pas le cas des systèmes de fichiers Reiser par exemple), avec des blocs de taille fixe (« clusters » en anglais). Cela signifie que l'allocation de l'espace disque se fait par multiples de la taille de ces blocs : il est impossible de demander seulement une partie d'un bloc. Cette technique présente des avantages et des inconvénients. Essentiellement, l'avantage est la rapidité engendrée par la simplification des mécanismes d'allocation et de libération d'espace disque. L'inconvénient majeur est évidemment qu'on perd de la place pour tous les fichiers qui ne tiennent pas dans un nombre entier de blocs, puisqu'il faut allouer un bloc supplémentaire qui sera partiellement utilisé. En moyenne, on perd la moitié d'un bloc par fichier, ce qui ne peut être réduit qu'en limitant la taille des blocs à une valeur relativement faible.

Note : Les sytèmes de fichiers Unix gèrent l'allocation et la libération des blocs de manière à toujours trouver le meilleur bloc à allouer pour créer un fichier. Ainsi, ils limitent la fragmentation des fichiers à son strict minimum, ce qui rend inutiles les programmes de défragmentation de systèmes de fichiers. De ce fait, la question de la défragmentation, souvent posée par les nouveaux utilisateurs de Linux, ne se pose pas : en pratique, les systèmes de fichiers Unix ne se fragmentent pas (si, si, c'est vrai).

Deuxièmement, les systèmes de fichiers Unix utilisent des structures de données appelées « inodes » pour définir les fichiers. Un inode contient la plupart des informations d'un fichier, à savoir :

Dans le cas d'EXT2 et EXT3, ces inodes sont stockés dans une table du système de fichiers, ce qui permet d'accéder très rapidement à toutes ces informations et de retrouver également très simplement le ou les blocs contenant les données du fichier. Le problème est ici que cette table a un nombre d'entrées limité, ce qui implique un nombre limité de fichiers dans le système de fichiers. Plus cette table est grande, plus le nombre de fichiers que l'on pourra créer sera grand, et inversement. Il faut donc trouver un compromis entre la taille de cette table et le nombre de fichiers que l'on est susceptible de créer. Il va de soi qu'en général, les grandes partitions contiennent plus de fichiers, mais que la table d'inodes peut également avoir une taille supérieure sans que cela soit dérangeant. Par conséquent, il est relativement courant de définir le taux d'inode par bloc ou, autrement dit, la proportion d'inodes dans la partition par rapport à sa taille.

Toutes ces informations (blocs libres et inodes) sont sauvegardées à plusieurs endroits dans la partition, ce qui permet de disposer en permanence de copies de la structure du système de fichiers. De cette manière, il est relativement simple de réparer un système de fichiers endommagé, même si les données sont détruites en raison d'une erreur matérielle (secteurs défectueux sur le disque dur par exemple). Chacune de ces copies s'appelle un groupe de blocs. Chaque groupe de blocs contient un bloc particulier, le « super bloc », qui contient la description de son groupe.

Lors de la création d'un système de fichiers EXT2 ou EXT3, il est nécessaire d'indiquer la taille d'un bloc en octets. Cette taille doit impérativement être un multiple de la taille d'un secteur du support physique de données, parce que les blocs ne peuvent contenir qu'un nombre entier de secteurs. Pour un disque dur, la taille des secteurs est fixée à 512 octets, ce qui fait que la taille d'un bloc est au moins de 512 octets. De même, il faut spécifier le nombre d'inodes de la partition. Il est possible de spécifier ce nombre soit directement, ou d'indiquer seulement le nombre d'octets de la partition par inode. Le nombre total d'inodes utilisé sera alors calculé à partir de ce nombre d'octets et de la taille de la partition. Bien entendu, le nombre maximal d'inodes possibles est le nombre total de blocs, puisque tout fichier non vide requiert au moins un bloc et que chaque inode caractérise un fichier. Si vous ne savez pas quelles valeurs prendre, vous pouvez utiliser des blocs de 1024 octets (2 secteurs), et un rapport de 4096 octets par inode (donc de 4 blocs de 1 Ko par inode).

La plupart des systèmes de fichiers Unix, comme EXT3 (mais pas EXT2), gèrent à présent, en plus de tout ce que nous avons vu précédemment, un journal contenant les opérations à réaliser de manière transactionnelle sur le disque dur. Les opérations du journal sont exécutées de telle sorte que la structure du système de fichiers reste cohérente en toutes circonstances. Cela implique que le système de fichiers est toujours valide, même si une panne de courant se produit pendant une opération disque.

Voyons à présent la syntaxe de la commande mke2fs :

mke2fs [-j] fichier
fichier est le nom du fichier spécial de périphérique représentant la partition sur laquelle le système de fichiers doit être créé. Ce nom est le nom du disque dur, suffixé du numéro de la partition. Les numéros de partitions commencent à 0, si bien que la première partition du premier disque dur IDE sera référencée par le chemin /dev/hda0. L'option -j quant à elle est facultative. Lorsqu'elle est utilisée, le système de fichiers créé est un système de fichiers EXT3. Il est recommandé d'utiliser cette option pour tous les systèmes de fichiers dont on voudra garantir la cohérence, par exemple pour les systèmes de fichiers devant contenir des documents ou des informations importantes. Sachez cependant que la journalisation peut dégrader sensiblement les performances de votre ordinateur, aussi pouvez-vous vous en passer sur les partitions pour lesquelles un débit élevé est nécessaire (par exemple pour les partitions devant servir à manipuler des fichiers vidéo).

Note : Le système de fichiers EXT3 utilise les mêmes structures de données que le système de fichiers EXT2. Il est donc parfaitement compatible avec ce dernier, et un système de fichiers EXT3 peut être utilisé comme un système de fichiers EXT2. En réalité, les mécanismes de journalisation peut être activés ou non lors de l'opération de montage du système de fichiers, en fonction du type de système de fichiers indiqué à la commande de montage. Nous détaillerons la manière de monter les systèmes de fichiers dans la Section 6.6.2 et dans la Section 6.6.5.

Pour les mêmes raisons, il est possible de convertir un système de fichiers EXT2 en système de fichiers EXT3 a posteriori, à l'aide de l'option -j de la commande tune2fs. Cette commande permet d'activer et de désactiver des fonctionnalités complémentaires pour ces systèmes de fichiers, dont la journalisation fait partie.

Invoquée sans autres options, la commande mke2fs prend des valeurs par défaut pour tous les paramètres du système de fichiers créé, mais vous pouvez également spécifier d'autres valeurs. La taille des blocs peut être indiquée en octets avec l'option suivante :

mke2fs [-j] -b taille fichier
taille représente la taille d'un bloc en octets. De même, le nombre d'octets par inode peut être précisé avec l'une des options -i :
mke2fs [-j] -i octets fichier
octets est le rapport de la taille de la partition en octets par le nombre d'inodes à créer. Il est possible d'indiquer directement ce nombre avec la commande suivante :
mke2fs [-j] -N nombre fichier

Enfin, sachez que l'option -c permet de demander à mke2fs d'effectuer une vérification des secteurs défectueux du disque dur avant de créer le système de fichiers. Il est fortement recommandé d'utiliser cette option lors de la première création d'un système de fichiers.

3.4.5. Création de la partition de swap

Comme on l'a vu précédemment, Linux peut utiliser une partie du disque dur pour y stocker les données temporairement inutilisées afin de libérer de l'espace mémoire lorsqu'il manque de mémoire vive. Cette opération permet de continuer à travailler, même si la machine ne dispose pas de suffisamment de mémoire vive pour exécuter tous les processus dont elle a la charge.

Évidemment, l'inconvénient de cette méthode est la dégradation des performances, mais c'est un bon compromis si l'on considère le prix du méga-octet de mémoire par rapport à celui des disques durs d'une part, et le fait qu'il vaut mieux parvenir à faire son travail, même lentement, que de ne pas le faire du tout.

L'espace disque consacré par Linux pour ce stockage temporaire est appelé « swap », du terme anglais « to swap » qui fait référence à l'échange des données de la mémoire vers le disque dur (et inversement, lorsqu'elles sont rechargées en mémoire). Linux est capable de gérer plusieurs formes de swap. Il est capable d'utiliser des fichiers d'échange, qui sont stockés dans un système de fichiers, ou les partitions de swap. Ces dernières ont l'avantage d'être bien plus rapides, puisque le noyau n'a pas à se préoccuper de la structure du système de fichiers lors des opérations de swap (qui, rappelons-le, constituent déjà un ralentissement notable de la machine). En revanche, elles ont l'inconvénient majeur d'être très contraignantes, puisqu'elles nécessitent de réserver une partition pour le swap de manière permanente. Cependant, il est tout à fait acceptable de consacrer 128 ou 256 Mo de disque dur pour une partition de swap de nos jours. Linux est capable de gérer jusqu'à 8 partitions de swap dont la taille peut aller jusqu'à 2 Go chacune, plus les fichiers d'échange que l'on peut rajouter ultérieurement. Nous ne décrirons que la manière de créer une partition de swap, car les fichiers d'échange ne constituent plus le meilleur compromis avec les tailles de disques que l'on rencontre de nos jours.

Bien entendu, le programme d'installation de votre distribution prend certainement déjà en charge la création des partitions de swap. Il est donc recommandé, encore une fois, d'utiliser ce programme, même si la description qui suit vous permettra de comprendre ce dont il s'agit.

Les partitions de swap peuvent être créées, comme toutes les partitions, à l'aide du programme fdisk. En fait, la seule distinction entre une partition de swap et une partition réservée à un système de fichiers est tout simplement son identificateur. Comme on l'a déjà vu lors du partitionnement du disque, l'identificateur utilisé pour les partitions de systèmes de fichiers Linux est 83, et celui pour les partitions de swap est 82. Vous devrez donc affecter cet identificateur à votre partition de swap lorsque vous partitionnerez votre disque dur. Il est recommandé de placer la partition de swap au début du disque dur, car c'est à cet emplacement que le taux de transfert est le plus élevé (et donc c'est à cet emplacement qu'on obtiendra les meilleures performances en cas de manque de mémoire vive).

Une fois créée, la partition de swap peut être préparée pour que le noyau puisse l'utiliser. Cette préparation revient à peu près à formater un système de fichiers, à ceci près que les structures de données écrites dans la partition de swap sont beaucoup plus simples car il ne s'agit plus ici de stocker une arborescence complète de fichiers. La commande mkswap permet de préparer les partitions pour être utilisées en tant que partition de swap. Elle s'utilise selon la syntaxe suivante :

mkswap -c partition
partition est la partition à préparer pour le swap. Notez que, en réalité, mkswap peut tout aussi bien travailler sur un fichier que sur une partition.

Lorsque la partition aura été préparée pour le swap, il est possible de demander à Linux de l'utiliser avec la commande suivante :

swapon partition
partition est la partition de swap à utiliser. Cette zone de swap est alors automatiquement prise en compte par le système. La commande suivante permet d'arrêter le swapping sur une partition :
swapoff partition

Normalement, vous n'aurez jamais à utiliser ces commandes manuellement. Le programme d'installation de votre distribution configure le swap, et fait en sorte que les partitions de swap sont chargées automatiquement lors du démarrage de la machine. Notez cependant que cette méthode de configuration dynamique permet d'ajouter temporairement un fichier d'échange si les besoins s'en font sentir, sans avoir à redémarrer la machine.

3.4.6. Installation des composants de base

Si vous êtes arrivé jusqu'ici, vous avez fini les opérations les plus risquées et sans doute les plus difficiles. Dans les premiers jours de Linux, il fallait installer à la main les différents composants du système, voire les recompiler soi-même. Heureusement, toutes les distributions actuelles disposent aujourd'hui de programmes d'installation évolués, qui simplifient beaucoup le travail. Les opérations que vous allez réaliser à présent sont donc plus simples, et certainement moins dangereuses.

L'ordre logique est évidemment de commencer par installer les couches les plus basses du système, donc en particulier le noyau. Cependant, comme on le verra plus tard, le noyau ne permet pas réellement d'utiliser le système, et il vous faudra installer d'autres couches logicielles. Les principales sont les suivantes :

Les programmes d'installation cherchent généralement à installer en premier ce qu'on appelle le « système de base » (ensemble constitué du noyau, des bibliothèques systèmes, du shell et des outils d'administration fondamentaux). Je vous suggère de vous assurer que ce système de base est correctement configuré, avant de vous lancer dans l'installation des couches supérieures telles que XWindow.

C'est évidemment l'installation et la configuration du système de base qui est la partie la plus technique. Une fois ces opérations réalisées, la suite ne pose généralement pas de problème particulier. De nos jours, l'installation de XWindow se fait de manière relativement simple. Lorsque vous y serez parvenu, vous pourrez enfin installer les applications. Là encore, lorsque le système est bien configuré, l'installation des applications est une tâche relativement facile et se fait rapidement.

Ce document ne traitera pas en détail de l'installation des applications, car il y en a trop pour que l'on puisse donner des informations valides pour toutes les applications. Quelques règles générales seront malgré tout données, car elles peuvent s'appliquer pour certaines applications.

Toutes les distributions organisent les différents composants logiciels qu'elles fournissent en paquetages (« package » en anglais). Ainsi, l'installation du système se fait par groupes homogènes de fichiers, et le regroupement dans un paquetage est généralement une dépendance forte (en pratique, ce sont les fichiers d'une même application). En installant un paquetage, on installe finalement un logiciel particulier. Cependant, certains paquetages dépendent d'autres paquetages, par exemple, les paquetages contenant le système de base sont évidemment utilisés par tous les autres paquetages. Les programmes d'installation gèrent relativement bien les dépendances et les conflits entre paquetages, si bien que l'installation peut maintenant se faire sans trop de problèmes.

Afin d'organiser un peu tous ces paquetages, les distributions les trient souvent par « séries ». Une série n'est rien d'autre qu'un ensemble de paquetages regroupés par domaine fonctionnel. Cela signifie que l'on peut facilement retrouver un paquetage donné, en allant le chercher dans la série contenant tous les paquetages fonctionnellement proches. Le regroupement des paquetages en séries ne signifie absolument pas que tous les paquetages de la série doivent être installés pour obtenir une fonctionnalité donnée, mais que les logiciels qui s'y trouvent ont plus ou moins trait à cette fonctionnalité. En fait, il peut même y avoir redondance ou conflit entre deux paquetages d'une même série. Dans ce cas, il faut choisir l'un ou l'autre, selon ses besoins personnels.

Certains paquetages sont indispensables pour le système, d'autres sont purement optionnels. Mais la plupart des paquetages sont simplement les paquetages des applications, et vous devrez faire le tri et choisir ceux qui vous intéressent parce qu'il est impensable d'installer tous les paquetages (une distribution de Linux peut faire 5 ou 6 CD-ROM, en tenant compte du système, des applications et des sources). Les seuls paquetages qu'il faut impérativement installer sont les paquetages de la série de base. En général, cette série porte le nom A, ou AAA, ou quelque chose de similaire, afin qu'elle puisse toujours être en tête de liste dans les programmes d'installation. Cette série comprend au moins les paquetages des commandes Unix de base, du shell, du programme d'installation et de tous les fichiers nécessaires au fonctionnement du système (fichiers de configuration, scripts et bibliothèques partagées). Tant que les programmes de cette série sont intacts et fonctionnels, le système est utilisable. S'il en manque, les problèmes peuvent survenir à tout moment : de l'absence ou l'indisponibilité de la documentation à l'impossibilité complète de démarrer le système.

Le choix des paquetages à installer est crucial mais non définitif. En effet, si vous avez installé un paquetage dont vous n'avez pas ou plus besoin, rien ne vous empêche de le supprimer par la suite. De même, si vous vous apercevez que vous avez oublié d'installer un paquetage dont vous avez besoin, vous pouvez l'installer ultérieurement.

Il n'est pas possible de donner ici la liste des paquetages que vous devez installer, car cette liste dépend beaucoup trop de la distribution que vous possédez. Il est conseillé de lire le manuel de cette distribution ou de bien lire les écrans d'aides du programme d'installation. Cependant, les paquetages dont vous aurez certainement besoin pour poursuivre l'installation sont sans doute les suivants :

Gardez à l'esprit que dans le monde du logiciel libre, les programmes sont souvent distribués sous la forme de fichiers sources et que vous aurez sans doute besoin des outils de développement pour les compiler et les installer. Veillez donc à inclure d'office tous ces outils, même si vous ne désirez pas programmer personnellement. Bien entendu, vous pourrez revenir ultérieurement dans le programme d'installation et réinstaller un paquetage si vous l'avez oublié pendant la phase d'installation.

3.4.7. Configuration du gestionnaire d'amorçage

Lorsque vous aurez installé votre système de base, vous devrez faire en sorte qu'il puisse démarrer. Pour cela, il existe plusieurs possibilités, les principales étant les deux suivantes :

Il va de soi que c'est la deuxième solution qui est recommandée. Cependant, la première solution pourra être utile si d'aventure votre MBR se trouvait être écrasé ou endommagé. Seule l'utilisation des gestionnaires d'amorçage de Linux et de Windows NT/2000/XP sera décrite ici. Le gestionnaire d'amorçage de Windows Vista ne sera pas décrit.

Le gestionnaire d'amorçage le plus utilisé sous Linux se nomme « LILO » (pour « LInux LOader »). LILO permet de démarrer un grand nombre de systèmes, dont DOS, Windows 95/98/Millenium, Windows NT/2000/XP/Vista et OS/2. Linux dispose également d'un autre gestionnaire d'amorçage également très performant : le « GRUB » (abréviation de l'anglais « GRand Unified Bootloader »). Vous êtes libre de choisir celui que vous voulez. Le GRUB est quelque peu plus moderne que LILO, mais le choix du gestionnaire d'amorçage est ici une question de goût. Windows NT, Windows 2000 et Windows XP disposent également d'un gestionnaire d'amorçage nommé « NTLDR », capable de démarrer d'autres systèmes d'exploitation. Vous aurez donc également la possibilité d'utiliser ce gestionnaire à la place de LILO ou du GRUB si un de ces systèmes est installé sur votre machine. En revanche, Windows Vista utilise un nouveau gestionnaire d'amorçage différent de NTLDR, et qui est techniquement beaucoup plus difficile à utiliser que les autres gestionnaires d'amorçage. Ce gestionnaire ne sera donc pas décrit dans ce document, référez vous à la documentation Microsoft si vous voulez installer Linux en marge de Vista, ou utilisez tout simplement l'un des gestionnaires d'amorçage de Linux.

Quel que soit le gestionnaire d'amorçage que vous désirez utiliser, il vous faudra activer la partition sur laquelle il est installé. Cette opération peut être réalisée à l'aide de l'utilitaire fdisk et a déjà été décrite dans la Section 3.2.1. Cela permettra au bootstrap loader de sélectionner le secteur de boot de cette partition et de lancer le gestionnaire d'amorçage qui y est installé. Bien entendu, cela suppose que ce gestionnaire soit installé sur cette partition, ce qui est normalement le cas (rappelons qu'il n'est en général pas conseillé d'installer le gestionnaire d'amorçage directement sur le MBR du disque dur).

3.4.7.1. Réalisation d'un multiboot avec LILO

LILO est un gestionnaire d'amorçage extrêmement performant, puisqu'il permet de démarrer Linux comme tout autre système d'exploitation très simplement, en donnant le nom du système à lancer lors de l'amorçage. Il est bien entendu possible de lancer un système par défaut, et de donner un temps d'attente avant de choisir ce système si l'utilisateur n'intervient pas.

LILO est constitué de deux parties. La première partie peut s'installer sur le secteur d'amorçage principal du disque dur ou sur le secteur de boot de n'importe quelle partition. Comme on l'a déjà indiqué plus haut, il est fortement recommandé d'installer cette partie de LILO sur le secteur de boot de la partition racine de Linux, afin d'éviter qu'elle ne soit écrasée par le DOS ou par une quelconque version de Windows installée ultérieurement. La deuxième partie de LILO est enregistrée directement dans la partition Linux. Elle contient les informations nécessaires pour pouvoir charger les différents systèmes d'exploitation gérés. Bien entendu, la première partie est capable de retrouver directement la deuxième sur le disque dur de manière autonome car, lors de l'amorçage, les systèmes de fichiers de Linux ne sont pas encore chargés.

LILO utilise le fichier de configuration /etc/lilo.conf pour y retrouver tous ses paramètres de configuration. Ce fichier contient la description des différents systèmes d'exploitation que LILO doit proposer au démarrage. Vous pourrez consulter ce fichier avec un des nombreux éditeurs de fichiers texte présents sur toute installation de Linux. Toutefois, si vous installez Linux pour la première fois, il est possible que vous n'en connaissiez aucun et que vous soyez un peu perdu. Cela est normal, et dans ce cas je vous recommande de vous familiariser un peu avec le système et l'environnement utilisateur avant de vous lancer dans l'édition de ce fichier. Il existe bon nombre d'éditeurs graphiques ou en mode texte et il est hors de question de tous les décrire ici. Toutefois, toutes les distributions Linux installent un éditeur historique, j'ai nommé l'affreux « vi ». Cet éditeur n'est pas du tout convivial pour les nouveaux utilisateurs, mais il dépannera toujours quand tous les autres seront inutilisables ou inaccessibles. En fait, on finit même par l'apprécier à l'usage...

La manière d'utiliser vi sera décrite ultérieurement, dans le chapitre donnant les notions de base d'Unix à la Section 5.8. Vous devriez donc jeter un coup d'œil à cette section si vous désirez modifier immédiatement le fichier /etc/lilo.conf, ou revenir ultérieurement à la présente section une fois que vous vous serez familiarisé avec un autre éditeur.

Quoi qu'il en soit, les options les plus importantes du fichier /etc/lilo.conf sont les suivantes :

  • l'option boot, qui permet d'indiquer sur quel secteur d'amorçage LILO doit s'installer. Cette option suit la syntaxe suivante :

    boot = destination
    destination est le nom d'un fichier spécial de périphérique sur lequel LILO va s'installer. Ce nom peut identifier un disque dur (comme par exemple /dev/hda), auquel cas LILO va s'installer sur le MBR de ce disque (c'est-à-dire sur le MBR du premier disque du premier contrôleur de disques IDE dans notre exemple), ou une partition (comme /dev/hda2). Dans ce cas, LILO s'installe sur le secteur de boot de cette partition (la deuxième partition du premier disque dur IDE dans notre exemple). Rappelons qu'il est recommandé d'installer LILO sur le secteur de boot de la partition racine de Linux ;

  • l'option read-only permet de demander au noyau de monter le système de fichiers racine en lecture seule lors du démarrage. Cette option est nécessaire pour que les scripts de démarrage du système puissent effectuer les vérifications du système de fichiers de cette partition si nécessaire. La partition sera remontée en lecture et en écriture une fois ces vérifications réalisées ;

  • l'option prompt, qui permet à LILO de demander le système à lancer à chaque démarrage. Cette option force donc l'apparition du message d'invite de LILO au démarrage : « LILO boot: » auquel on pourra répondre en tapant le nom de la configuration à lancer ;

  • l'option timeout, qui permet de fixer un délai au delà duquel LILO lancera la première configuration définie dans le fichier lilo.conf. La syntaxe de cette option est la suivante :

    timeout = dixièmes
    dixièmes est le nombre de dixièmes de seconde à attendre avant le lancement du système ;

  • l'option keytable, qui donne la possibilité de spécifier un fichier de tradution des codes de caractère envoyés par le BIOS (qui suppose généralement que le clavier utilise la disposition d'un clavier américain) en les codes de caractère qui seraient envoyés par un BIOS localisé. Cette option permet donc de redéfinir la disposition des touches du clavier pour prendre en compte les claviers non-américains. La syntaxe de cette option est la suivante :

    keytable = fichier
    fichier est le chemin sur un fichier de traduction de clavier pour LILO. Un tel fichier peut être généré par le script keytab-lilo.pl à l'aide des fichiers de définition des claviers de Linux (généralement installés dans le répertoire /usr/lib/kbd/keymaps/). La ligne de commande à utiliser pour ce script est la suivante :
    keytab-lilo.pl us local > fichier
    us est le nom du fichier de définition de clavier Linux pour la disposition utilisée par le BIOS (donc, effectivement, la disposition d'un clavier américain en général), local est le nom du fichier de définition de clavier pour la disposition du clavier réellement utilisée, et fichier est le nom du fichier de traduction des codes à générer. Par exemple, la création de ce fichier pour le clavier français se ferait avec la commande suivante :

    keytab-lil.pl us fr-latin1 > /boot/fr-latin1.klt

    Remarquez que cette technique de traduction de clavier souffre d'un inconvénient majeur, puisque les combinaisons de touches qui ne sont pas valides dans la disposition américaine des claviers ne peuvent pas être converties. Si l'une de ces combinaisons doit être utilisée, il faut abandonner l'idée d'utiliser l'option keytable.

La suite du fichier lilo.conf décrit les différentes configurations que LILO peut lancer. Les sections de configuration permettant de charger Linux ont le format suivant :

image = noyau
root = root_device
label = nom
noyau est le chemin complet sur le noyau de Linux à charger, root_device est le nom complet du fichier spécial de périphérique contenant le système de fichier racine et nom est le nom de la configuration tel qu'il devra être saisi à l'invite de LILO. L'exemple donné ci-dessous permet de charger le noyau /boot/vmlinuz en utilisant la partition /dev/hda2 comme partition racine :

image = /boot/vmlinuz
root = /dev/hda2
label = linux

Si vous désirez créer une section de configuration permettant de lancer un autre système d'exploitation que Linux (DOS ou Windows par exemple), vous pouvez utiliser la possibilité de passer le relais au chargeur de ces systèmes, qu'il s'agisse d'un simple secteur de boot ou d'un gestionnaire d'amorçage complet. Cela se fait avec la syntaxe suivante :

other = partition
table = disque
loader = relais
label = nom
partition est la partition sur laquelle le secteur de boot de l'autre système est installé, disque est le disque dur contenant la table des partitions utilisée par ce système, relais est le nom d'un chargeur spécial permettant de simplement passer la main au chargeur du système, et nom est le nom de la configuration. Le chargeur à utiliser pour demander à LILO de passer le relais au chargeur de l'autre système d'exploitation est le chargeur contenu dans le fichier chain.b de LILO. Ce fichier se trouve généralement dans le répertoire /boot/, aussi doit-on spécifier /boot/chain.b pour le champ relais.

Note : Prenez garde au fait que Windows NT/Windows 2000/XP installent NTLDR dans la première partition à laquelle il savent accéder en général. Donc, si un DOS ou Windows 95, Windows 98 ou Millenium est installé en premier, ils installeront NTLDR dans la partition de ces systèmes. Dans ce cas, la configuration permettant de lancer le DOS ou le Windows 95, Windows 98 ou Millenium qui se trouve sur cette partition risque fort de lancer NTLDR qui proposera, à son tour, de lancer les différents systèmes d'exploitation Microsoft installés.

Cela peut être relativement gênant et peut être corrigé en déplaçant NTLDR sur la partition de Windows NT/Windows 2000/XP et en reconstruisant les secteurs de boot des différentes partition pour que leur chargeurs s'occupent de leurs systèmes respectifs, mais il s'agit là d'une opération extrêmement technique d'une part, et qui ne concerne absolument pas Linux d'autre part. Cela ne sera donc pas décrit dans ce document. Il existe toutefois des documents sur Internet qui décrivent la manière de procéder et je vous invite à vous y référer (avec une prudence extrême cependant).

L'exemple donné ci-dessous permet de donner la possibilité de charger Linux ou Windows NT, en lançant Linux par défaut au bout de 10 secondes. Windows NT est installé sur la troisième partition, et Linux utilise la deuxième et la quatrième partition respectivement pour y stocker sa partition racine et la partition des répertoires personnels des utilisateurs. LILO est ici installé sur la partition racine de Linux :

# Exemple de fichier de configuration /etc/lilo.conf :

# Options générales :
boot = /dev/hda2
read-only
prompt
timeout=100
keytable = /boot/fr-latin1.klt

# Première configuration (Linux) :
image = /boot/vmlinuz
root = /dev/hda2
label = linux

# Deuxième configuration (NT) :
other = /dev/hda3
table = /dev/hda
loader = /boot/chain.b
label = NT

L'installation de LILO est très simple une fois que l'on a écrit le fichier lilo.conf. En effet, il suffit tout simplement de taper la commande suivante :

lilo [-L]
L'option -L permet de demander à LILO d'utiliser le mode d'adressage LBA pour accéder au disque dur pendant la phase d'amorçage. Cette option est nécessaire si vous disposez d'un grand disque dur et que certaines partitions disposant de systèmes à lancer sont situées au delà du cylindre 1024. Il est recommandé de l'utiliser systématiquement étant donné les tailles des disques durs actuels.

Note : Comprenez bien que si votre BIOS est incapable d'utiliser le mode LBA ou le si bootstrap loader est incapable d'utiliser ce mode, cette option ne vous sera d'aucune utilité. En effet, dans ce cas, le bootstrap loader ne parviendrait même pas à charger le secteur de boot de la partition Linux. C'est pour cette raison qu'il a été recommandé de placer la partition du système principal en deçà de cette limite des 1024 cylindres. Cette limitation est donc bien une limitation du BIOS, mais vous ne devriez plus rencontrer ce genre de problème que sur de vieilles machines sur lesquelles un nouveau disque dur de grande capacité a été installé.

Si lilo signale une erreur, il vaut mieux ne pas insister et corriger le fichier lilo.conf.

Une fois LILO installé correctement, il affichera l'invite de démarrage lors du démarrage de la machine : LILO boot:

Il attend ici que vous indiquiez le nom du système que vous désirez démarrer. Vous devez ici taper le nom du système à charger et valider : LILO boot:linux

Si vous ne tapez rien, et que vous avez donné un délai d'attente dans le fichier de configuration de LILO, la première configuration sera lancée automatiquement après ce délai.

LILO permet de spécifier des paramètres de démarrage complémentaires pour Linux à la suite du nom de la configuration qui permet de le lancer. Ces paramètres servent principalement à renseigner le noyau sur la configuration matérielle (en particulier les ports d'entrée/sortie et les lignes d'interruption des périphériques non Plug and Play), pour le cas où il ne parviendrait pas à les déterminer automatiquement. L'un des paramètres les plus intéressants est sans doute mem, qui permet d'indiquer au noyau la taille de la mémoire vive dont dispose l'ordinateur. Ce paramètre peut être nécessaire si vous disposez de plus de 64 Mo de mémoire, parce que les fonctions du BIOS ne permettent pas d'indiquer les tailles de mémoire plus grandes (la plupart des BIOS récents n'ont toutefois plus ce problème). Par exemple, si votre ordinateur dispose de 256 Mo de mémoire, vous devrez taper la ligne de paramètres suivante au démarrage : LILO boot:linux mem=256M

Bien entendu, il est possible d'enregistrer ces paramètres dans le fichier de configuration de LILO afin de ne pas avoir à les saisir à chaque démarrage. Pour cela, il suffit d'indiquer le paramètre de démarrage du noyau dans une ligne append de la section de configuration de Linux :

append="paramètre"

Ainsi, la section de configuration de Linux du fichier lilo.conf exemple donné ci-dessus pourrait être remplacée par celle-ci sur une machine disposant de 256 Mo de mémoire :

# Première configuration (Linux) :
image = /boot/vmlinuz
root = /dev/hda2
label = linux
append="mem=256M"

La liste des paramètres que l'on peut fournir au noyau est relativement grande et ne sera pas décrite ici. Les plus utiles seront présentés en temps et en heure, notamment dans le chapitre décrivant la configuration du système.

3.4.7.2. Réalisation d'un multiboot avec le GRUB

Le « GRUB » (abréviation de l'anglais « GRand Unified Bootloader ») est le gestionnaire d'amorçage développé par la Free Software Foundation pour amorcer le noyau Hurd du projet GNU. Il est capable de faire démarrer tous les systèmes utilisant un protocole de démarrage standard initialement défini pour le Hurd. Bien entendu, il sait aussi amorcer les systèmes Linux, qui n'utilisent pas ce protocole, ainsi que la plupart des autres systèmes d'exploitation en passant le relais à leurs propres gestionnaires d'amorçage.

En fait, le GRUB fournit la possibilité de contrôler totalement l'amorçage de son système par l'intermédiaire d'un interpréteur de commandes simplifié. Il est possible, par l'intermédiaire de cet interpréteur de commandes, d'effectuer nombre d'opérations dans le but de charger un noyau de système d'exploitation et de l'amorcer. Bien entendu, ces commandes peuvent être écrites dans un fichier de configuration afin d'automatiser le processus de chargement.

Le GRUB est normalement installé dans le répertoire /boot/grub/. Ce répertoire contient, outre les fichiers binaires du GRUB lui-même, son fichier de configuration. Ce fichier se nomme normalement menu.lst, en raison du fait qu'il permet de définir les différentes configurations correspondantes aux systèmes d'exploitation à charger et qui apparaîtront dans le menu de démarrage lors de l'amorçage de la machine.

Contrairement à LILO, qui enregistre l'emplacement des fichiers des différents noyaux à charger dans une liste de blocs du disque dur, le GRUB sait interpréter les systèmes de fichiers classiques de Linux. En particulier, il est capable de retrouver son fichier de configuration et les fichiers images des noyaux Linux dans les systèmes de fichiers FAT, EXT2/EXT3 et ReiserFS. Cette particularité fait qu'il n'est pas nécessaire, lorsqu'on modifie le fichier de configuration menu.lst, de réinstaller le GRUB.

Tout comme le fichier de configuration de LILO, le fichier menu.lst se compose d'une partie contenant les options globales et d'une ou plusieurs parties contenant la description des différents systèmes d'exploitation à proposer au démarrage. Les options générales les plus utiles sont les suivantes :

  • l'option default, qui permet de spécifier la configuration par défaut à charger. Cette option doit être suivi du numéro de cette configuration. Les configurations sont numérotées à partir de 0, dans leur ordre d'apparition dans le fichier de configuration ;

  • l'option timeout, qui permet de spécifier le délai d'attente avant que la configuration par défaut spécifiée par l'option default ne soit lancée.

Les configurations spécifiques aux systèmes d'exploitation suivent la syntaxe suivante :

title titre
root partition
kernel noyau options
titre est le titre de la configuration tel qu'il doit apparaître dans le menu de démarrage du GRUB, partition est la partition dans laquelle se trouve le noyau à charger, et noyau est le chemin sur le fichier image de ce noyau dans cette partition. Attention, ce chemin est défini dans la partition elle-même et peut donc être différent du chemin utilisé sous Linux. En effet, il faut définir ce chemin par rapport au point de montage de la partition, faute de quoi le GRUB ne retrouverait pas le fichier image du noyau à charger.

Comme le GRUB n'est pas un chargeur spécifique à Linux mais a été écrit au contraire avec comme principal objectif une généricité absolue, la manière de spécifier la partition dans laquelle le noyau se trouve utilise une syntaxe différente de celle utilisée sous Linux. Cette syntaxe, propre au GRUB donc, est la suivante :

(hdn,m)
n est le numéro du disque dans l'ordre énuméré par le BIOS de la machine et m est le numéro de la partition. Ce dernier numéro est facultatif (ainsi que la virgule qui le précède), ce qui permet de référencer un disque complet et non une partition. La numérotation des disques et des partitions commence toujours à 0 dans le GRUB, ce qui fait que la première partition du premier disque est référencée par (hd0,0), la deuxième partition du premier disque par (hd0,1), la première partition du deuxième disque par (hd1,0), etc.

Tout comme avec LILO, il est possible de spécifier des options de démarrage qui devront êtres fournies au noyau. Ces options devront être spécifiées immédiatement après le nom de l'image du noyau. Comme vous pouvez le constater, la définition d'une configuration de démarrage pour un système Linux est très simple, puisqu'il suffit quasiment de donner la ligne de commande pour lancer ce noyau !

Par exemple, pour charger le noyau /boot/vmlinuz d'un système situé sur la deuxième partition du premier disque, la configuration suivante doit être définie :

title Linux
root (hd0,1)
kernel /boot/vmlinuz mem=256M

Cet exemple présente également comment spécifier la taille de la mémoire disponible dans la machine (cela n'est normalement pas nécessaire avec les BIOS récents et avec le GRUB). Il suffit simplement de fournir des options en ligne de commande au noyau pour cela. Beaucoup d'autres options peuvent être fournies de cette manière au noyau. En particulier, des options peuvent être fournies aux pilotes de périphériques si nécessaire (par exemple s'il y a des conflits d'interruptions ou de ressources entre plusieurs périphériques). Ces options seront présentées au fur et à mesure dans la suite de ce document.

Bien entendu, le GRUB est capable de charger le secteur de boot d'une partition afin de passer le relais au gestionnaire d'amorçage d'un autre système d'exploitation. Pour cela, il faut utiliser la commande chainloader, plutôt que la commande kernel, dans la description de la configuration de démarrage de ce système. La forme générale d'une configuration de ce type est donc la suivante :

title titre
root partition
chainloader +1
Le +1 qui suit la commande chainloader indique au GRUB de charger le premier secteur de la partition indiquée par la commande root et d'exécuter le gestionnaire d'amorçage normalement stocké dans ce secteur. Comme pour les configurations Linux, la syntaxe utilisée pour spécifier la partition où ce secteur est situé est la syntaxe du GRUB et non celle utilisée sous Linux.

Le fichier de configuration d'exemple suivant correspond au fichier de configuration de LILO vu dans la section précédente. Il permet de démarrer un Linux installé sur la deuxième partition ou un Windows NT installé sur la troisième partition du premier disque dur de la machine :

# Exemple de fichier de configuration /boot/grub/menu.lst :

# Options générales :
default 0
timeout 10

# Première configuration (Linux) :
title Linux
root (hd0,1)
kernel /boot/vmlinuz root=/dev/hda2 mem=256M

# Deuxième configuration (NT) :
title NT
root (hd0,2)
chainloader +1

L'installation du GRUB sur une nouvelle machine ne pose quant à elle pas de problème particulier. Il suffit de s'assurer que le fichier de configuration menu.lst se situe bien dans le répertoire /boot/grub/, de même que les fichiers binaires du GRUB. Ces fichiers sont respectivement les fichiers stage1, stage2 et tous les fichiers *_stage1_5. S'ils ne s'y trouvent pas, vous pourrez les copier à partir du répertoire /usr/share/grub/i386-pc/, dans lequel le programme d'installation du GRUB les place par défaut.

Lorsque tous les fichiers sont en place, il n'y a plus qu'à lancer le GRUB en mode interactif avec la commande suivante :

grub
et à définir le secteur où il doit installer son fichier d'amorçage principal stage1 (c'est-à-dire dans le secteur de boot d'une partition ou directement sur le MBR du premier disque dur). Pour cela, vous devrez utiliser les deux commandes suivantes :
root source
setup destination
source est ici la partition où est installé le GRUB (il s'agit donc de la partition où se trouvent le répertoire /boot/grub/), et destination est le disque dur ou la partition dont le premier secteur doit recevoir le code d'amorçage du GRUB. Ces deux informations doivent suivre la syntaxe utilisée par le GRUB pour spécifier les disques durs et les partitions. Par exemple, pour installer le GRUB sur le secteur de boot de la deuxième partition du premier disque dur, on utilisera les deux commandes suivantes :

root (hd0,1)
setup (hd0,1)

Cet exemple suppose que le GRUB est également installé dans cette partition. Si ce n'est pas le cas pour vous, vous devrez modifier la partition spécifiée dans la commande root. Vous pourrez quitter le grub avec la commande quit une fois l'installation terminée.

3.4.7.3. Réalisation d'un multiboot avec NTLDR

Le gestionnaire d'amorçage de Windows NT, Windows 2000 et XP se nomme « NTLDR ». Ce gestionnaire d'amorçage permet de démarrer ces systèmes, bien entendu, mais également les autres systèmes d'exploitation les plus courants, dont Linux. Cette section ne traitera bien entendu que de la manière d'utiliser NTLDR pour démarrer Linux, pour de plus amples informations sur la manière d'ajouter les autres systèmes d'exploitation, veuillez consulter la documentation de Microsoft.

Tout comme LILO et le GRUB, NTLDR dispose d'un fichier de configuration qui permet de décrire les différentes options de son menu de démarrage. Il s'agit du fichier boot.ini, qui est normalement placé à la racine du disque où NTLDR est installé. Il s'agit donc généralement du répertoire racine du disque C:\.

Le fichier boot.ini contient la définition du système d'exploitation à lancer par défaut et du délai d'attente à attendre avant de le sélectionner. Ces deux informations sont écrites dans la section [boot loader] du fichier et sont introduites respectivement par les options default et timeout. La valeur de l'option default doit être l'une des entrées de la section [operating systems], qui contient la définition de tous les systèmes d'exploitation que NTLDR devra proposer au démarrage.

La syntaxe des entrées pour les systèmes d'exploitation dans la section [operating systems] est la suivante :

emplacement = "Nom"
emplacement est la description de l'emplacement où se trouve le système d'exploitation, et Nom est le nom avec lequel ce système devra apparaître dans le menu de démarrage de NTLDR. Cette syntaxe est très simple, mais pour les systèmes NT4, Windows 2000 et XP, la définition de l'emplacement du système est assez compliquée. En effet, elle nécessite de définir complètement le disque physique et sa partition, ainsi que le répertoire du système. Pour les autres systèmes d'exploitation, le plus simple est de spécifier un fichier contenant l'image du secteur de boot de leur partition, et de laisser leur chargeur prendre en charge leur amorçage.

Pour cela, il faut bien entendu disposer d'un tel fichier. Il faut donc copier le premier secteur de la partition du système dans un fichier accessible à NTLDR, donc, en pratique, situé dans le répertoire C:\. Vous pourrez extraire le contenu du secteur de boot de votre partition Linux avec la commande suivante sous Linux :

dd if=/dev/hda3 of=linux.sec bs=512 count=1
Cette commande suppose que LILO ait été installé sur la partition /dev/hda3. Elle permet de lire un bloc de 512 octets de la troisième partition du premier disque dur et de l'enregistrer dans le fichier linux.sec. Vous pourrez ensuite transférer ce fichier dans le répertoire C:\ de Windows, soit en passant par une partition FAT, soit tout simplement à l'aide d'une disquette (rappelons que le système de fichiers NTFS n'est utilisable qu'en lecture seule sous Linux).

Une fois ce fichier obtenu, vous pourrez simplement ajouter la ligne suivante dans votre fichier boot.ini :

C:\linux.sec="Linux"
Le contenu de votre fichier boot.ini devrait alors ressembler à ceci :
[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(2)\WINNT

[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000 Professionnel" /fastdetect
C:\linux.sec="Linux"

Vous devriez alors pouvoir démarrer Linux directement à partir du menu de démarrage de NTLDR.

Note : Prenez soin à utiliser un nom court pour le fichier contenant le secteur de Linux (c'est-à-dire un nom ne comprenant pas plus de huit caractères et une extension d'au plus trois caractères). En effet, Windows, même dans ses versions les plus récentes, a toujours du mal à prendre en charge les noms longs et il se peut que le gestionnaire d'amorçage NTLDR ne puisse pas localiser le fichier si vous ne respectez pas cette règle.