Comment vérifier sur quels disques grub2 a effectivement installé un MBR?

17

Je suis sur un système Debian / Squeeze (avec un historique remontant au moins à Woody) qui a été mis à niveau vers grub2 dans le cadre de la mise à niveau de Squeeze. Tout fonctionne bien, mais je suis sur le point de jouer avec la configuration du disque.

Actuellement, la machine utilise 2 disques de 80 Go avec des partitions RAID1-ed /, / home et / boot (il y a une autre paire de disques avec un "/ data" RAID1-ed et quelques swaps, au cas où quelqu'un se demanderait où le swap est , mais je ne les touche pas).

J'ai ajouté 2 SSD de 130 Go, les ai partitionnés pour être au moins aussi grands que les partitions sur les disques de 80 Go, et j'ai l'intention de passer aux nouveaux disques SSD en augmentant les RAID1 pour les inclure, en attendant la synchronisation, puis en supprimant l'ancien les disques des baies de sorte qu'il ne reste que les SSD (puis en augmentant les systèmes de fichiers). Mais la querelle mdadm / ext3 n'est pas le sujet de cette question ...

Cela me laissera 2 disques obsolètes de 80 Go (IDE) que je veux retirer de la machine. Mon inquiétude est que leur suppression prendra un MBR crucial avec eux. Comment puis-je m'assurer que la machine reste amorçable?

Plus précisement:

  • Quand j'ai fait la mise à niveau de Squeeze, je me souviens qu'il y avait un choix présenté sur les disques sur lesquels grub2 devrait installer (je suis allé avec la valeur par défaut, qui était tous les disques). Les SSD n'étaient pas dans la machine à l'époque cependant; comment puis-je relancer ceci pour que grub s'installe sur les MBR SSD? (Je suppose que c'est une reconfiguration dpkg d'un paquet).

  • Comment puis-je trouver sur quels disques grub2 pense qu'il est installé? Bon sang, il y a près de 200 fichiers sous / boot / grub / ces jours-ci! Où regarder ? En outre, il semble un peu étrange que /boot/grub/device.map.auto ne répertorie actuellement que 3 disques (2 des 80 Go mais seulement l'un de l'autre paire de disques et aucun des SSD). Comment puis-je le mettre à jour? ( Mise à jour: c'était un hareng rouge; device.map.auto semble être une relique d'il y a des années; device.map semblait raisonnable sur une mise à jour de grub-mkdevicemap. Je pense que ma paranoïa dans ce domaine provient d'un ancien BIOS de mobo qui réorganiser l'ordre des appareils vu par GRUB sur un coup de tête).

Résultat: tout s'est bien passé et j'ai maintenant les deux anciens disques IDE de 80 Go prêts à l'emploi, et un système de démarrage rapide et rapide fonctionnant avec des SSD RAID1 avec tous les systèmes de fichiers redimensionnés jusqu'à leur nouvelle taille de partition. L'autre "pièce manquante du puzzle Grub" que je cherchais était celle dpkg-reconfigure grub-pcqui demandait sur quels disques maintenir un MBR. La réponse d'Aaron a en fait le plus pour me rassurer que cela fonctionnait comme prévu, acceptant ainsi cette réponse.

timday
la source

Réponses:

17

Le MBR est de 512 octets, donc un moyen rapide de voir si GRUB est là ...

dd if=/dev/sda bs=512 count=1 | xxd

Cela vide le MBR, je vois "GRUB" dans le mien à l'octet 0x17F = 383.

dd if=/dev/sda bs=1 count=4 skip=383

Quand je fais cela, il imprime ' GRUB' suivi de la ddsortie.

Vous pouvez envelopper cela dans une forboucle bash ou quelque chose pour parcourir plusieurs lecteurs. si vous ne voulez pas le faire manuellement.

Aaron D. Marasco
la source
4
Juste un ajout mineur - car la position du GRUB est susceptible de changer de version en version, on peut l'utiliser dd if=/dev/sda bs=1 count=512 | grep -aob GRUB. Cela renverra la position du marqueur dans le secteur de démarrage.
Alessandro Santini
16

Il y a plusieurs étapes dans le processus de démarrage (je décris un BIOS PC traditionnel):

  1. Le BIOS lit le premier secteur (512 octets) du disque de démarrage.
  2. Le code de ce premier secteur lit des données et du code supplémentaires à un emplacement fixe via l'interface du BIOS. Cette interface du BIOS n'expose que deux disques durs: le disque 0 est l'endroit où le premier secteur a été lu et le disque 1 est un autre disque qui n'est pas facilement prévisible si vous en avez plus de deux. Le secteur de démarrage contient un octet qui indique sur quel disque dur se trouvent les données supplémentaires; c'est le disque contenant/boot/grub .
  3. Le code chargé à l'étape précédente comprend les partitions, les systèmes de fichiers et d'autres notions de haut niveau. Les données incluent un emplacement du système de fichiers (c'est-à-dire une chaîne comme (hd0)/boot/grub) qui détermine où trouvergrub.cfg et poursuivre les modules Grub.
  4. grub.cfg est exécuté, généralement pour afficher un menu et démarrer un système d'exploitation.

Le secteur de démarrage est généré par grub-setup, normalement appelé via grub-install. Le secteur de démarrage se retrouve sur le disque que vous avez spécifié (dans la syntaxe Linux) sur la ligne de commande grub-installou grub-setup. Vous pouvez vérifier que vous avez un secteur de démarrage sur un disque en exécutant file -s /dev/sda. Puisque vous ajoutez un nouveau disque et que vous souhaitez démarrer à partir de celui-ci, vous devez exécuter grub-installle nouveau disque. Exécuter grub-installplusieurs fois sur le même disque est inoffensif.

La partie difficile est à l'étape 2 ci-dessus. Si possible, placez Grub (c'est-à-dire le /boot/grubrépertoire) sur le disque de démarrage du BIOS (ou, en s'approchant de l'autre sens, dites à votre BIOS de démarrer à partir du disque où il se /boot/grubtrouve). C'est là device.mapqu'entre en jeu. Assurez-vous qu'il (hd0)est mappé sur le disque qui contient /boot/grub, puis exécutez-le grub-installsur ce disque.

Si vos deux disques sont dans une configuration logicielle RAID-1, vous aurez des secteurs de démarrage identiques. C'est le comportement souhaitable: si l'un des disques qui est le disque de démarrage du BIOS échoue, le démarrage à partir de l'autre fonctionnera simplement (car ils contiennent les mêmes octets aux mêmes emplacements pertinents). Si vous n'avez mis en miroir que certaines partitions, l'installation d'un secteur de démarrage n'affecte que l'un des disques. Vous devez réexécuter grub-installsur le deuxième disque, après avoir modifié device.mappour associer (hd0)au disque contenant la deuxième copie miroir de /boot/grub.

L'étape 3 est assez complexe, mais fonctionne généralement hors de la boîte. À l'étape 4, Grub localise les systèmes de fichiers par UUID ou recherche les fichiers nommés, vous n'avez donc plus à vous soucier des différentes façons de désigner les disques.

Gilles 'SO- arrête d'être méchant'
la source