Utilisateur:Wam31fr

Aller à : navigation, rechercher

Page personnelle de Wam31fr

[[Les bugs grub (Bugs/Grub )Page en cours de traduction depuis [[[1]]

Comment rapporter les bugs grub

Wam31fr 14/08/2008</nowik>i

Avant toutes choses: il n'y a pas de bugs grub ;) Habituellement, il y a un BIOS endommagé ou les disques ont été mal partitionnés, ou un setup inapplicable a été choisi. Il y a aussi les cas où le matériel vidéo ou le BIOS vidéo perturbe les opérations de l'interface graphique Suse lors du chargement du lanceur, qui se situe dans un autre package. 

Cet article (et ici cette traduction NdT) existe pour vous donner un aperçu du démarrage d'un PC, et vous rendre capable de cibler vos problèmes de boot, afin que vous puissiez résoudre des problèmes mineurs de configuration, ou que vous signaliez un bug d'une manière qui permettra sa résolution.


== Phrases les plus communes ==


'''"Mais j'ai juste accepté les propositions par défaut"'''

les bugs et les architectures que les fabricants ont dans leur machines sont nombreux; il est difficile de déterminer génériquement "la bonne méthode" pour booter Linux. La seule chose sure est que le système d'exploitation sur la première partition d'un disque unique démarrera très bien, si la partition est déclarée "primary", physiquement la première sur le disque, et pas trop "volumineuse" ( ceci dépend de l'age du BIOS ).


'''"Mais windows peut booter sans problème"'''

Depuis que la plupart des ordinateurs ont windows pré-installé, il est installé sur la première partition du seul disque et donc démarre bien.C'est du gâteau. De plus, les vendeurs de matériel test si leur machine peuvent démarrer sous windows ( certains donnent même l'impression que c'est la seule chose qu'ils testent).Cela devient plus embêtant lorsque vous avez plus d'un système d'exploitation sur votre ordinateur, et que certains d'entre eux doivent être capable de démarrer à partir d'une place moins favorable sur le disque.  En outre, vous voudrez sûrement choisir à un moment lors de chaque démarrage quel systeme d'exploitation vous préférez lancer alors. Cela crée une difficulté supplémentaire si la fonction "suspend-to-disk power saving" (fonction pour l'économie d'énergie des disques) est activée sur les ordinateurs portables.

'''"Mais ça marche quand j'utilise LILO"'''

Grub a été écrit avec l'hypothèse naïve que les fabricants de BIOS finiront par adhérer aux standards et aux pratiques communes. Grub détermines beaucoup de moteur d'exécution pendant le démarrage, questionnant le BIOS sur ses fonctions. Il est un cas étonnamment courant que le BIOS possède certaines fonctions mais le mécanisme de requête correspondant est cassé. Les support LBA et A20 gate en sont les derniers exemples en date. Certaines  fonctions peuvent ne pas être fiables ou ne pas fonctionner de la manière attendue. Une fois que le BIOS à induit en erreur GRUB, on ne peut revenir en arrière; le démarrage plante de manière plus ou moins mystérieuse.  

LILO à été écrit dans une défiance totale du BIOS et attend les pires performances et les plus pauvres possibilités. Il prend autant d'informations que possible durant l'installation depuis le noyau Linux, et ne questionne jamais le BIOS sur ses fonctions. Il les utilise, et enregistre pour lui-même  si elles fonctionnent ou non.  Par conséquent, il existe certains cas ou basculer sur LILO aidera. 

De toute façon, lorsque que vous incorporez des parties du disque dans le processus de démarrage qui ne sont pas accessible par le BIOS, ou que l'installeur LINUX aura collecté de mauvaises informations, alors LILO ne pourra pas vous aider. De la même manière, un carte vidéo buggée endommage autant le démarrage LILO, au travers du code commun gfxboot.  "OTOH" (? NdT) vous pouvez aussi forcer grub à utiliser LBA, indépendamment des réponses que renvoie le BIOS, et vous pouvez forcer l'emploi de certains disques. 

'''"Quand je lance grub-install ..."'''

grub-install est un simple script inclus dans le package grub et il est mentionné dans beaucoup de documents en ligne, donc nous ne pouvons pas le retirer comme nous le souhaiterions. Il n'est pas si mal si vous n'avez rien d'autre, mais il est heuristique et ses actions restent loin derrière ce que Yast peut faire pendant une installation. Après toutes les conclusions et les entrées utilisateur, Yast écrira le device.map et /etc/grub.conf. Utilisez les! La commande est 

   grub --batch < /etc/grub.conf

Avec grub-install, vous êtes livré à vous même pour installer le boot loader.

A partir de openSUSE 10.3, l'original grub-install sera dorénavant renommé en grub-install.unsupported pour limiter cette confusion. Les nouvelle commande de grub-install lanceront plutot des actions plus pertinente pour SUSE Linux, i.e. lancer "grub --batch", ou appeler Yast2 pour créer d'abord un fichier de configuration, si nécessaire. [modifier]

==  Disk Layout ==
[modifier]
== Combien y a t il de disques, et comment le BIOS les voit-il ?  ==

Dans le cas le plus trivial, il y a seulement un disque sur le système. Ce disque sera identifié par le BIOS comme disque numéro 0x80, et sera le disque dur de boot. De la même manière, vous saurez que le disque est appelé dans Linux en regardant dans /etc/fstab ou un équivalent, et en scrutant toutes les entrées /dev/hda* ou respectivement /dev/sda*.

Quand il y a plus d'un disque, les choses se compliquent, d'autant qu'il n'y a pas de relation facile entre les périphériques Linux et les numéros des disques du BIOS. Si vous avez de la chance, votre BIOS supporte "Enhanced Drive Diagnostics", ou EDD en abrégé. Pour contourner certains appels du BIOS, Linux peut enregistrer des informations sur les disques, contenues dans le BIOS, avant que le noyau Linux ne démarre réellement. Ces informations peuvent être obtenues plus tard sous /sys/firmware/edd/int13_dev8?/ , peut-être après le chargement du module "edd" dans le noyau. Si tous vos fichiers  /sys/firmware/edd/int13_dev8?/mbr_signature sont différents, vous avez résolu le problème, et ces valeurs peuvent maintenant facilement être assorties au premier bloc sur votre périphérique Linux. Sinon, vous pourrez prendre les indications sur la taille des disques, comme montré dans chaque fichier "sectors".

Dans tous les cas, la correspondance périphérique Linux et nunéro BIOS doit être enregistré dans le fichier /boot/grub/device.map. Vous trouverez un ligne comme :

 (hd0)   /dev/hda

qui signifie Linux' /dev/hda est ce que le  BIOS pense être le disque dur 0, numéroté 0x80 (0x00 doit être le premier floppy drive). Vérifiez, si vous le pouvez, que cette cartographie est correcte. YAST aura généré ce fichier avec les meilleures estimation, mais il est préférable de vérifier. 

De suite après arrive ce que nous appellerons RAID simulé, plusieurs disques SATA fondus dans un système pour formé un unique périphérique BIOS utilisant seulement (BIOS) software. Linux voit juste une grappe de disques identiques et indépendant, comme l'est réellement le matériel, mais le BIOS sait que ce "RAID" est seulement constituer de moins de numéro de disques. Yast essaie désespérément de regarder dans la table des disques et d'initialiser un RAID Linux qui corresponde exactement au périphériques BIOS, mais de nouveau ça ne peut être parfait à cause des multiples sorties présentes.

Les réels contrôleurs RAID, qui masquent proprement plusieurs disques derrière une seule interface de contrôleur de disque, fournissent un seul disque boot tant à Linux qu'au BIOS,et ne pose aucun problème à la configuration du boot loader.

 
== comment les disques sont-ils partitionnés ? ==

Le premier bloc sur un disque est appellé le "master boot record", ou MBR en abrégé. Tous les BIOS charge fidelement les 0x80 premiers bloc du disque en mémoire et saute dedans. Le MBR contient aussi la première partie de la traditionnelle table de partition DOS, qui consiste en 4 entrées. Elle sont appellées "partitions primaires " ("primary partitions"). Quand il devint évident que le nombre de 4 partitions était devenu un peu court, les partitions "étendues" furent créées. Il y a des partitions primaires avec un numéro de type spécial, qui peuvent contenir des sous-partitions supplémentaires. C'est purement conventionnel entre les systèmes d'exploitation. Les partitions étendues Linux sont reconnues par le nombre ( la classe type ) 0x85, les partitions étendues windows à ce jour, portent le type 0x0f. Le noyau Linux découvrira deux types de partition étendues. Les sous -partitions sans tout ceci sont appellées "logiques". Linux attachera un nombre au nom du disque lorsqu'il se référera à ces partitions. Les quatres premières seront toujours assignées en tant que partitions primaires, aussi les partitions logiques démarreront toujouirs avec le numero 5.

<pre>
Disk /dev/hde: 163.9 GB, 163928604672 bytes
255 heads, 63 sectors/track, 19929 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hde1   *           1         997     8008371   83  Linux
/dev/hde2             998        1994     8008402+  83  Linux
/dev/hde3            1995        2991     8008402+  a9  NetBSD
/dev/hde4            2992       19929   136054485   85  Linux extended
/dev/hde5            2992       15150    97667136   83  Linux
/dev/hde6           15151       15649     4008186   83  Linux
/dev/hde7           15650       19929    34379068+  83  Linux
</pre>

Ici, les quatres premières partitions sont 2x 8GB Linux (type 0x83), 8GB NetBSD (type 0xa9), et le reste du disque est couvert par le container  "Linux extended" hde4 (type 0x85). Celui ci est divisé en au moins 3 partitions Linux, parmi lesquelles hde6 et hde7 sont certainement hord de questin pour bouter quoi que ce soit, au moins via grub.

Indépendamment de ces schémas, les systèmes d'exploitations dérivés de BSD utilisent leur propre données de partionnement sur PC, appellé "label du disque" ("disk label"). Linux peut être configuré pour le détecter, aussi, et intégrera les partions BSD comme des partitions logiques. Dans l'exemple précédent, le noyau n'est pas configuré pour reconnaitre le label NetBSD. S'il l'était, les partitons BSD aparaitraient comme hde5 et au-delà, remplaçant les noms des partitions logiques, sans la hde4 au-dessus. Grub fait clairement la distinction entre les partitons étendues et les labels disques BSD, aussi il est plus judicieux de masquer les partitions BSD vis à vis de  Linux. Rapportez un bug yast si vous suspectez que votre label de disque BSD n'est pas monté correctement avec le switch de configuration du noyau CONFIG_BSD_DISKLABEL turned on.

Intel a inventé un tout nouveau schéma de partitions, appellé GPT. La table de partitions réelles réside à la fin du disque, mais une table de compatibilité est intriduite dans le premier bloc, et le BIOS continue de le charger pour démarrer. Linux touvera une table de partitions GPT, et la palcera au dessus de la partition primaire définie dans le MBR. Les disques avec des restants de GPT générent de "droles" d'effets lors de la configurations du boot loader.


== Limitations ==

En fonction de l'age et des bugs du BIOS, il se peut que l'on ne puisse pas charger tous les blocs disques en mémoire. Et ceci poiur plusieurs raisons. 

* 1024 cylindres
*:cette limite historique apparait lorsque le mode LBA n'est pas supporté, où déclarécomme ne pouvant être supporté. C'est rarement encore le cas de nos jours, mais ce n'est pas encore tout à fait éteint. Les vieux BIOS atteignent cette limite à '''504MB'''.

* 8GB
*:C'est la limite du cylindre 1024 lorsque l'on utilise "Xlated" C/H/S geometry (''XCHS''). Le plus espace adressable supportée par une géometrie cylindre/tete/secteur est 1024*255*64 soit environ '''8GB''' d'espace disque.

Lorsque LBA est pleinement supporté, la limite BIOS est supérieure à '''120GB'''. C'est le maximum que grub supporte courament. En fonction de l'actuelle géométrie utilisé, et des potentiels add-on du BIOS en vigueur, le disque du systeme peut avoir des limites différentes sur lesquelles une part peut-être utilisée pour booter. 

Nous avons aussi vu des BIOS, particulièrement sur des portabeles IBM, qui rapportaient et accédaient à des disques plus petits que ceux installés, à cause d'espace réservé à la récuperations des données. 

Lorque ''chaque'' partie du setup de boot ment au delà de la limite du BIOS concerné, le démarrage plantera. La limite se trouve-t- elle sans partition et celà devient le jeux de la chance si le programme de démarrage se termine correctement avant ou partiellement après cette limite.