49 votes

Comment puis-je savoir si grub est installé sur un appareil ?

Comment puis-je savoir si grub est installé sur un disque, et si c'est le cas, quelles sont ses paramètres (notamment, ce qu'il a pour le paramètre root)

J'ai besoin de vérifier beaucoup de disques dans des arrays RAID1 logiciels pour m'assurer que les deux disques ont grub installé, avec le grub sur chaque disque ayant la valeur root appropriée.

64voto

Peter Smit Points 5655

Méthode alternative

file -s n'a pas fonctionné pour moi sous Ubuntu Lucid parce que les fichiers magiques de ma commande file étaient obsolètes. Une autre façon de faire cela si vos fichiers magiques n'ont pas rattrapé les changements de GRUB est d'examiner les premiers 512 octets du périphérique en utilisant la commande dd de cette manière :

utilisateur@hôte:~$ sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Disque dur
Lecture
 Erreur

Cela envoie la sortie de la commande dd à travers la commande strings en supprimant ainsi les caractères non imprimables (les statistiques de transfert sont jetées vers /dev/null).

Si vous voyez des messages que GRUB afficherait en cas d'échec alors vous avez bien installé grub.

Remerciements à louib sur ubuntuforums.org pour avoir répondu dans ce post protégé par mot de passe : http://ubuntuforums.org/showthread.php?t=363372

Pour les curieux, voici ce que j'ai obtenu avec file -s :

utilisateur@hôte:~$ sudo file -s /dev/sda
/dev/sda: secteur de démarrage x86 ; partition 1 : ID=0x83, active, tête de lecture 32, début du secteur 20
48, 337211392 secteurs ; partition 2 : ID=0x5, tête de lecture 254, début du secteur 337215486, 1434214
6 secteurs, décalage de code 0x63

Il n'y a rien de spécifiquement sur GRUB là-dedans.

30voto

cas Points 6563

Ceci est une manière simple de vérifier si GRUB est installé. Si cela ne fonctionne pas, la base de données de votre commande file est probablement obsolète et vous pouvez soit mettre à jour sa base de données, soit utiliser une méthode alternative provenant d'une autre réponse.

Vous pouvez utiliser file pour identifier GRUB dans un MBR. par exemple

# file -s /dev/sda
/dev/sda: secteur d'amorçage x86 ; Chargeur d'amorçage unifié GRand, version de l'étape 1 0x3
, adresse de l'étape 2 0x2000, segment de l'étape 2 0x200; partition 1 :
ID=0xfd, tête de lecture 1, secteur de démarrage 63, 1044162 secteurs; partition
2 : ID=0x82, tête de lecture 0, secteur de démarrage 1044225, 1028160 secteurs;
partition 3 : ID=0xfd, tête de lecture 0, secteur de démarrage 2072385,
1951447680 secteurs, décalage de code 0x48

Le paramètre root= n'est pas stocké dans la MBR, il est stocké dans le fichier menu.lst de GRUB qui est stocké sur un système de fichiers (typiquement dans le répertoire /boot/grub de la racine du système de fichiers ou dans le répertoire grub du système de fichiers /boot - mais pas toujours, il pourrait se trouver n'importe où).

Vous devrez analyser la sortie du fichier ci-dessus, déterminer sur quel disque/partition se trouve le fichier menu.lst, le monter, le lire et l'analyser. Vous voudrez également lire le fichier grub/default pour déterminer quel entrée du menu grub est la par défaut, car c'est probablement celle qui contient le paramètre root= qui vous intéresse le plus.

11voto

joeytwiddle Points 474

Vous pouvez utiliser grub-emu pour voir le menu que grub affichera lors du prochain redémarrage de la machine.

$ sudo apt-get install grub-emu
$ sudo grub-emu

Sur mon ordinateur de bureau, le menu s'est affiché comme prévu, bien que si je faisais semblant de démarrer un noyau, j'obtenais une erreur "no such device". Je pense que c'est un comportement attendu.

Sur mon VPS DigitalOcean, aucune entrée n'était affichée dans le menu grub, bien que le serveur redémarre correctement. (Il s'agit d'un VPS de 2013, donc vos résultats peuvent varier.)

Quelques notes lors de l'exécution de grub-emu:

  • Sous X-windows, si vous voulez interagir avec grub, vous devez avoir votre focus clavier sur le terminal à partir duquel vous avez exécuté grub-emu, et non sur la fenêtre qui s'est ouverte.
  • Vous pouvez quitter l'émulateur en appuyant sur c, puis en tapant exit.
  • Après avoir quitté, votre émulateur de terminal peut être dans un in bon état (par exemple, Entrée ne s'affichera pas sur une nouvelle ligne). Corrigez cela en tapant reset. (Ne vous inquiétez pas, cela ne redémarrera pas votre machine. Cela nettoiera simplement votre terminal.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X