GRUB, PATA et SATA

Gazette Linux n°141 — Août 2007

Deny

Adaptation française

Joëlle Cornavin

Relecture de la version française

Article paru dans le n°141 de la Gazette Linux d'août 2007.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

1. Le problème
2. Accéder à l'enregistrement d'amorçage GRUB
3. Terminologie
4. Méthode A
5. Méthode B
6. La carte des périphériques correcte
7. État de la Nation

1. Le problème

Démarrez votre moteur de recherche et recherchez les mots-clés suivants à la fois sur le Web et dans les groupes de discussion :

GRUB SATA confused

Vous obtiendrez de nombreux rapports selon lesquels GRUB ne fonctionne pas avec SATA et échoue le plus souvent lorsqu'il se trouve en présence d'un mélange de disques IDE (PATA) anciens et SATA récents. Je l'affirme à titre de preuve, bien que personnellement je n'en aie pas besoin, puisque GRUB me coûte environ dix heures de labeur dans ce contexte précisément.

Vous trouverez moins de preuves pour Lilo (Linux Loader, gestionnaire de démarrage pour Linux), mais Lilo échouera également. Xandros 4.0, qui repose sur Lilo, m'a posé des problèmes. De plus, Lilo est sur le déclin ; les principales distributions utilisent GRUB.

Ainsi, que doit-on faire si l'on a un mélange de PATA et de SATA, qu'on veut avoir quelques distributions GNU/Linux prêtes à démarrer et qu'on a de toute façon besoin de Windows ? Répétez après moi : ne pas installer GRUB sur le Master Boot Record, (enregistrement d'amorçage maître) du disque contenant la partition C Windows.

On part du principe que le problème ne vient pas du matériel, parce qu'il y a en effet des cartes mères (mobos, abrégé de « mother boards ») comportant à la fois SATA et PATA et qui sont capables de les prendre en charge conjointement.

2. Accéder à l'enregistrement d'amorçage GRUB

Si l'on écrit un enregistrement d'amorçage GRUB sur une partition, comment l'activer ? Pas depuis le MBR (Master Boot Record, enregistrement d'amorçage maître) de GRUB ; nous n'en avons pas, étant donné notre décision précédente. Les options sont les suivantes :

  1. Depuis le MBR de Windows ;

  2. Depuis une disquette réelle, un cédérom (émulation de disquette DOS) ou depuis une clé USB (émulation de disquette DOS).

Bien que fréquemment recommandée, (i) n'est pas une solution. Vous échouerez si vous installez GRUB sur un secteur d'amorçage, extrayez ce secteur d'amorçage dans un fichier et ajoutez une ligne pour ce fichier à la fin de boot.ini : cela ne fonctionnera pas avec un mélange de PATA et de SATA. Il faut autre chose.

Peut-être faites-vous partie des chanceux qui n'ont jamais eu de problèmes avec GRUB. Autrement, suivez ici les solutions A et B avec attention. Elles fonctionneront dans la plupart des cas, mais il pourrait y avoir quelques assemblages de matériel pour lesquels elles échoueront. Il y a trop de variantes à examiner, et je n'ai effectivement pas accès au matériel.

Les instructions fournies ici conviennent à Windows XP. Elles peuvent probablement être adaptées à Vista.

3. Terminologie

Un peu de terminologie, pour commencer. Sous Windows, le lecteur de démarrage est celui qui contient boot.ini et le chargeur, ntldr. Le lecteur système est celui qui contient le répertoire Windows. Ils peuvent être différents, bien que souvent ce ne soit pas le cas. On dit « répertoire de démarrage » pour désigner le répertoire contenant boot.ini. Pour Windows XP, la partition de démarrage doit être la première que voit le système d'exploitation — avec la lettre C du lecteur inscrite dessus. Apparemment, Vista accepte n'importe quelle partition et réorganise simplement les lettres des lecteurs.

Lorsque vous installez, restaurez ou mettez à jour votre distribution Linux, assurez-vous que le MBR (Master Boot Record) du lecteur de démarrage de Windows n'est pas affecté. S'il l'est, vous devrez procéder à quelques opérations de secours. Ce MBR est réservé à Windows — et GRUB devra se garder d'y toucher. Laissez-le installer un enregistrement d'amorçage sur le secteur d'amorçage dans les partitions —par exemple, dans /dev/hda4 — mais jamais dans /dev/hda.

Soyez conscient que la routine d'installation peut sembler se conformer à vos instructions, mais elle peut anticiper et modifier le MBR de toute façon. Il est difficile de dire s'il faut en blâmer GRUB directement ou la routine d'installation, mais cela arrive. Soyez vigilant, soyez prêt à intervenir en urgence. Vous pourriez même envisager d'essayer l'astuce suivante : laissez le secteur d'amorçage être installé sur une disquette, puis faites tout le reste manuellement. L'astuce fonctionne même s'il n'y a aucune disquette physique.

La difficulté provient d'un fait simple : quand GRUB démarre depuis le MBR et affiche son menu, il voit les périphériques disponibles dans un ordre qui peut différer de celui qu'il voit après avoir lancé initrd et ensuite le noyau. En d'autres termes, sa carte des périphériques modifie votre système sans avertissements ni félicitations. Après avoir activé l'élément requis depuis le menu, tout s'effondre parce que des fichiers essentiels ne sont pas trouvés, c'est-à-dire, une erreur système kernel panic (panique du noyau).

Ubuntu essaie de résoudre le problème en employant des UUID (Universal Unique Identifier, identifiants uniques universels) pour les disques durs. L'UUID est destiné à être la pierre angulaire du gestionnaire de démarrage, d'initrd et du noyau. Ainsi, vous verrez le fichier de configuration GRUB d'Ubuntu afficher des lignes telles que :

kernel /vmlinuz root=UUID=f0bfe866-2449-4d75-8222-b444ff564876

Pour conclure — je n'en ai retiré aucune aide. C'est ma conclusion empirique. Voici une certaine théorie de Linus Torvalds lui-même :

http://lwn.net/Articles/65209/

4. Méthode A

La méthode A emploie la fonctionnalité cacher/afficher (hide/unhide) de GRUB, pour masquer toutes les partitions d'amorçage qui entretiennent la confusion — dans le cas extrême, toutes les partitions d'amorçage hormis celle qui contient un système d'exploitation spécifique. À ce moment, il ne peut y avoir de confusion dans la carte des périphériques, puisqu'il ne reste qu'un seul élément.

Cette démarche est décrite ici :

http://www.justlinux.com/forum/showthread.php?t=143973

Elle repose sur une disquette GRUB sous la forme d'une disquette réelle ou d'une image de disquette gravée sur un cédérom. Elle n'est pas rapide à mettre en œuvre, puisqu'elle requiert un essai complet mais — pour être juste — l'autre méthode n'est pas beaucoup plus rapide.

Notez qu'avec cette méthode, lorsque vous exécutez une distribution, Windows peut être masqué. Si vous voulez transférer des fichiers depuis les distributions vers Windows, vous devrez avoir une partition FAT (File Allocation Table, table d'allocation de fichier) accessible à tout moment — ou avoir accès aux systèmes de fichiers Linux à partir de Windows (disponible seulement pour ext2/ext3, d'après ce que j'en sais).

5. Méthode B

Téléchargez une version modifiée de GRUB comprenant grldr (mnémonique : GRub LoaDeR, chargeur de GRUB). Placez grldr dans c:\ et ajoutez les lignes suivantes dans boot.ini :

	
c:\grldr = "sundry distros"

Il vous faudra également le fichier menu.lst de GRUB dans le même répertoire. Modifiez-le comme approprié pour chacune de vos distributions, et vous avez terminé.

Qu'est-ce que grldr et où peut-on l'obtenir ? grldr est une console GRUB qui permet à Windows de démarrer et qui pèse moins de 190 ko. Il fait partie d'un projet de logiciel libre au nom surprenant :

http://grub4dos.sourceforge.net/

Vous n'aurez réellement besoin que d'un fichier, grldr .

6. La carte des périphériques correcte

Comme indiqué ci-dessus, le problème posé à GRUB par un mélange de PATA et de SATA est que sa carte des périphériques change au cours du processus d'amorçage. Ainsi, si vous optez pour la méthode B, quelle carte des périphériques allez-vous employer ? Aucune : vous n'avez pas besoin de fichier device.map pour la méthode B. Cependant, vous devrez encore modifier le fichier menu.lst et vous devrez donc savoir comment nommer vos disques disponibles selon les conventions de GRUB et du noyau.

Démarrez avec un fichier menu.lst que l'on supposera correct. Quand le menu GRUB apparaît, rendez-vous dans la ligne de commande de GRUB et saisissez :

root (

en appuyant sur la touche Tab pour obtenir une liste de tous les complétements possibles, telles que GRUB les affiche ici et à présent. C'est la liste des périphériques disponibles. Pour chacun d'entre eux, répétez l'astuce, c'est-à-dire :

root (hd0,

et appuyez sur la touche Tab, ce qui listera toutes les partitions de hd0. De cette façon, vous obtiendrez une liste de toutes les partitions de tous les disques avec la dénomination GRUB et le type de partition corrects. Les partitions issues du monde Unix seront reconnues, les partitions FAT aussi. Les partitions NTFS ne seront pas vues en théorie par GRUB, mais grub4dos peut les gérer. Ce devrait être suffisant pour que vous puissiez identifier le matériel.

La partie difficile de l'exercice est de donner aux périphériques des noms corrects selon les conventions du noyau. hd0 équivaudrait-il à /dev/hda ou bien non ? Le décalage dans la carte des périphériques se produit ici et vous pouvez miser sur des erreurs et des essais. Lorsque vous avez le mappage de périphériques correct, le mappage des partitions est très facile.

7. État de la Nation

Tout ce travail semble être harassant — ce qui est le cas. Installer un système d'exploitation ne devrait pas affecter les systèmes d'exploitation déjà installés. Windows a de mauvaises manières pour les respecter, mais cela signifie-t-il que GRUB doive faire de même ? Certainement pas ; en réalité, il est censé être convivial et coopératif.

Si vous allez sur le site web de GRUB (http://www.gnu.org/software/grub/), vous apprendrez qu'il y a une version de GRUB abandonnée (0.97) et une nouvelle version (1.95, au moment où j'écris). L'ancienne est appelée legacy GRUB ; la dernière se nomme GRUB-2 et est en développement depuis 4 à 5 ans. La FAQ (foire aux questions) de la nouvelle version de GRUB demande immédiatement pourquoi on a besoin d'une nouvelle réécriture de GRUB. Voici un extrait de la réponse :

Because GRUB Legacy has become unmaintainable,
due to messy code and design failures.

ce que l'on peut traduire par : « parce que GRUB Legacy est devenu incontrôlable, en raison d'une mauvaise programmation et d'erreurs de conception ».

Il y est également dit que la nouvelle version est « utilisable ». Évidemment, ce n'est pas le cas, puisque les distributions principales reposent sur legacy GRUB (adapté pour leurs propres besoins) et ignorent la nouvelle version — je n'ai pas pu trouver une seule distribution qui l'emploie.

Espérons que GRUB-2 sera mis en application très prochainement et qu'on n'assistera pas à une répétition de la saga Hurd. La situation est insupportable. Tandis qu'une installation Windows prend le contrôle du MBR et empêche d'amorcer d'autres systèmes, Windows parvient toujours à se tirer d'affaire grâce à ses routines d'amorçage. Avec un mélange de PATA et de SATA, installer SuSE® ou Ubuntu détruit le MBR de Windows et échoue ensuite à faire démarrer N'IMPORTE QUEL système d'exploitation !

A. N. Onymous écrit pour LG depuis le début — généralement en s'introduisant furtivement de nuit et en laissant divers articles sur le bureau du rédacteur en chef. Un homme ou une femme mystérieux(se), ne demandant aucun remerciement et se cachant dans l'obscurité...

Adaptation française de la Gazette Linux

L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.

Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.

Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.