web-dev-qa-db-fra.com

Comment désinstaller GRUB?

Un disque dur que j'utilise uniquement pour le stockage de données contient toujours GRUB d'anciennes installations Ubuntu.

Comment puis-je supprimer GRUB sans endommager le reste des données du lecteur?

Contexte

Je déplace de temps en temps le disque de données entre des ordinateurs avec différentes configurations d'ordre de démarrage, je voudrais donc qu'il soit non amorçable afin d'éviter de devoir le prendre en charge dans les paramètres BIOS de chaque ordinateur.

Lorsque j'allume un ordinateur alors que seul le lecteur de données est connecté, les éléments suivants apparaissent:

error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue> 

Je peux confirmer à partir d'anciennes sauvegardes de /etc/fstab qu'il s'agissait de l'UUID d'une partition racine que j'ai récemment reformatée et que n'existe plus . Voici le lecteur de données table de partition et raw enregistrement de démarrage principal .

Veuillez noter que les solutions de rechange qui ne répondent pas à ma question principale ne m'intéressent pas. Je peux penser à plusieurs façons de contourner ce problème, mais cela me dérange en principe de ne pas savoir comment le résoudre directement. Chaque procédure d'installation doit avoir une procédure de désinstallation équivalente.

19
ændrük

Vous pouvez rendre le périphérique non amorçable en rendant simplement les premiers octets du disque 0x00.

Typiquement (et ceci est vrai pour grub, grub2 et ntldr iirc), le tout premier octet de votre lecteur sera une instruction x86 jmp. Cela se produit avant même l'étiquette du disque, car lors du transfert de l'exécution du périphérique à bootstrap it, il configure simplement le processeur pour qu'il englobe les informations du périphérique sous forme de code. S'il contient un code non valide, il déclenche une interruption. Le BIOS traite l'exception et passe au périphérique amorçable suivant.

Par exemple, le début de mon disque commence par:

00000000  eb 63 90 d0 bc 00 7c fb  50 07 50 1f fc be 1b 7c  |.c....|.P.P....||

La première partie est eb 63, qui correspond au décalage de l'adresse IP actuelle par 0x63 (donc de 0x65).

00000060  00 00 00 00 ff fa 90 90  f6 c2 80 74 05 f6 c2 70  |...........t...p|
00000070  74 02 b2 80 ea 79 7c 00  00 31 c0 8e d8 8e d0 bc  |t....y|..1......|

L'exécution continue à partir d'ici.

La fin du secteur ressemble à ceci:

000001b0  cd 10 ac 3c 00 75 f4 c3  ed db 96 d6 00 00 80 01  |...<.u..........|
000001c0  01 00 83 fe ff ff 3f 00  00 00 c1 07 a6 0e 00 fe  |......?.........|
000001d0  ff ff 83 fe ff ff 00 60  00 11 00 00 38 29 00 fe  |.......`....8)..|
000001e0  ff ff 82 fe ff ff 00 08  a6 0e 00 58 5a 02 00 00  |...........XZ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|

Si votre disque est formaté en tant que table de partition MBR, il ne manque plus que deux éléments: la table de partition qui se trouve à offset 0x1be et la signature MBR, 55aa qui apparaît à la toute fin du secteur à offset 0x1fe. 0x1be est 446 décimal.

Ce qui suit va (bien sûr) rendre le périphérique non amorçable. Mais c'est ce que tu veux. Si vous ne voulez pas que votre périphérique ne puisse plus être démarré, ne le faites pas, mmm-kay? Je suppose que votre appareil est /dev/sdz, tout simplement parce que peu de gens ont un /dev/sdz et que cela réduit le risque qu'un débutant idiot copie les commandes en aveugle en les collant.

Commencez par copier le MBR dans un fichier pour une sauvegarde.

Sudo dd if=/dev/sdz of=/some/where/safe/preferably/not/on/dev/sdz/backup.mbr bs=512 count=1

Ensuite, faites une copie de ce fichier:

cp backup.mbr backup.mbr.test

Ensuite, nous devons créer un périphérique de bouclage (afin que le contenu ne soit pas tronqué.) Et appliquer les modifications sur notre faux secteur 0 à titre de test:

Sudo losetup /dev/loop7 backup.mbr.test
Sudo dd if=/dev/zero of=/dev/loop7 bs=446 count=1
Sudo losetup -d /dev/loop7

hexdump le fichier et assurez-vous que la table de partition entière est intacte:

Sudo hexdump -C backup.mbr.test

Vous devriez voir quelque chose comme:

00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 01  |................|
000001c0  01 00 83 fe ff ff 3f 00  00 00 c1 07 a6 0e 00 fe  |......?.........|
000001d0  ff ff 83 fe ff ff 00 60  00 11 00 00 38 29 00 fe  |.......`....8)..|
000001e0  ff ff 82 fe ff ff 00 08  a6 0e 00 58 5a 02 00 00  |...........XZ...|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

Maintenant, 0x1be est l'endroit où vous voyez 80 sur la sortie hexdumpée. Cela peut également être 00 et être toujours valide. (C'est le drapeau "bootable" dans la table de partition, vous pouvez le laisser seul, car il est complètement ignoré par la plupart des BIOS modernes ...) L'octet à 0x1bf va presque jamais être 0x00 (c'est le plus généralement 0x01 mais cela peut prendre d’autres valeurs), vous pouvez comparer cela à votre backup.mbr pour vous assurer que rien n’a été modifié après 0x1be.

Une fois que vous êtes satisfait d'avoir appliqué correctement la modification, vous pouvez directement copier le fichier sur la première partie du disque. La raison pour laquelle vous souhaitez créer le fichier plutôt que /dev/zero est pour des raisons de sécurité contre les fautes de frappe. Si vous omettez accidentellement count=1, vous passerez un mauvais moment. Par contre, copier un fichier ne passera jamais au-delà de l'EOF. Donc c'est plus sûr.

Sudo dd if=backup.mbr.test of=/dev/sdz

Suivant hexdump votre disque pour vous assurer que les modifications ont été prises comme prévu.

hexdump -C /dev/sdz | head

Comparez jusqu'à 0x200 avec backup.mbr.test pour vous assurer que c'est ce que vous voulez.

Enfin, si quelque chose se passe mal pour une raison quelconque, vous pouvez simplement copier la sauvegarde du MBR sur le lecteur via:

Sudo dd if=backup.mbr of=/dev/sdz

J'espère que cela t'aides.

25
OmnipotentEntity

AVERTISSEMENT: EXTREMEMENT DANGEREUX

Vous pouvez utiliser la commande dd sous Linux même (cela supprime la table de partition):

 # dd if=/dev/null of=/dev/sdX bs=512 count=1

Supprimez simplement le MBR, sans la table de partition (voir le commentaire ci-dessous):

# dd if=/dev/null of=/dev/sdX bs=446 count=1

Remplacez /dev/hdX par votre nom de périphérique actuel, par exemple /dev/hda. Utilisez la commande fdisk -l pour trouver le nom du périphérique:

# fdisk -l

Source

  1. http://www.cyberciti.biz/faq/linux-how-to-uninstall-grub/
2
Tachyons

Après avoir lu le article Wikipedia sur le sujet, j'aimerais proposer quelques solutions supplémentaires:

  1. Changer l'ordre de démarrage dans le BIOS :)

  2. Le meilleur et le plus sûr: utilisez fdisk pour supprimer l’indicateur "bootable" de toutes les partitions de ce lecteur. La plupart des MBR recherchent une partition "amorçable" à partir de laquelle charger en chaîne. Je m'attendrais donc à ce que GRUB ne fasse rien s'il n'y a pas de telles partitions. Je n'ai pas testé cependant.

    Si cela ne résout pas le problème, essayez d'installer un clone gratuit de code MBR standard:

  3. Installez le package mbr et utilisez la commande install-mbr comme ceci:

    Sudo apt-get install mbr
    Sudo install-mbr -i n -p D -t 0 /dev/sda
    

Crédits: COMMENT FAIRE: Récupérer Windows MBR à l'aide du CD Ubuntu LIVE

En lisant l'article de Wikipedia, j'ai l'impression que la seule chose qui identifie le MBR est sa signature qui se trouve à la toute fin du secteur (octets 510 et 511). Les 446 premiers octets de MBR sont supposés contenir des instructions machine. Le BIOS est supposé transférer le contrôle au chargeur de démarrage quel que soit le contenu réel des 446 premiers octets, à condition que la signature MBR soit présente:

Sur les ordinateurs compatibles IBM PC, le micrologiciel d'amorçage contenu dans le ROM BIOS charge et exécute l'enregistrement de démarrage principal. [14] ... Ainsi, le début du MBR devrait contenir le langage machine en mode réel. instructions. [14] Le BIOS lit le MBR du périphérique de stockage dans la mémoire physique, puis dirige le microprocesseur au début du code de démarrage.

En raison de la taille limitée de la section de code du MBR, celui-ci ne contient généralement qu'un petit programme qui copie du code supplémentaire (tel qu'un chargeur de démarrage) du périphérique de stockage dans la mémoire. Le contrôle est ensuite passé à ce code, qui est responsable du chargement du système d'exploitation réel.

...

La séquence bootstrap du BIOS charge le premier MBR valide trouvé dans la mémoire physique de l'ordinateur à l'adresse 0x7C00. La dernière instruction exécutée dans le code du BIOS sera un "saut" vers cette adresse, pour diriger l'exécution au début de la copie du MBR. La validation principale pour la plupart des BIOS est la signature 0xAA55 à la fin, bien qu'un implémenteur de BIOS puisse choisir d'inclure d'autres vérifications, par exemple en vérifiant que le MBR contient une table de partition valide sans entrées faisant référence à des secteurs dépassant la capacité indiquée du disque.

Donc, si j'ai bien compris, le MBR est toujours supposé contenir un chargeur de démarrage, et la remise à zéro de ses 446 premiers octets n'empêcherait pas le BIOS d'essayer de démarrer à partir du disque - mais il est probable que l'ordinateur se bloque lors de l'exécution d'un code non valide.

UPDATE: En outre, cet article suggère que, pour que le disque ait l’air "non amorçable", vous devriez réellement éditer la signature MBR sur le et du secteur (en utilisant n'importe quel éditeur de disque). Je ne sais pas si cela affectera le système d'exploitation quand il verra la table de partition sur le disque ... mais au moins, vous pourrez toujours modifier ces octets en arrière ...

1
Sergey

Mon expérience avec

Sudo install-mbr -i n -p D -t 0 /dev/sda

c’est-à-dire qu’il a correctement désinstallé grub2 de /dev/sda (où est installé Windows 7), de sorte que la première partie de la question "Comment supprimer grub de/dev/sda?" a été répondu.

Cependant, la deuxième partie de la question, qui est "Comment restaurer le MBR de/dev/sda?" n'a pas reçu de réponse depuis que la commande install-mbr n'a pas pu restaurer le MBR. En conséquence, Windows ne démarre plus et le gestionnaire de démarrage Windows signale une erreur concernant un MBR endommagé et demande à l'utilisateur de réparer à partir d'un CD de réparation Windows.

1
ubuntu-13.10 user

Vieille question, mais comme cela m’est arrivé hier, j’ai résolu le problème de la manière suivante: j’ai éteint l’ordinateur, déconnecté physiquement le disque dur incriminé, remis en marche l’ordinateur, puis

~ $ Sudo update-grub

Cela fait, j’ai éteint l’ordinateur, reconnecté le disque dur et mon ancienne partition Windows 7, qui n’existait plus il ya 2 ans, ne s’est pas affichée - enfin.

Je comprends que cette solution est réaliste, mais que cela fonctionne. Un jour, je vais effacer totalement le disque dur et toute trace de GRUB disparaîtra.

0
ElStellino

Une autre solution plus simple.

Dans mon cas, j’avais Debian Linux mais je voulais utiliser Mandriva, cela fonctionnera aussi pour d’autres

Eteignez votre ordinateur, puis retirez le disque qui démarre que vous ne voulez pas démarrer (qui a grub)

Il suffit de placer un usb amorçable à partir de la mandriva iso ou d’une autre variante que vous souhaitez installer; il existe des outils permettant de créer des clés USB amorçables à partir de fichiers iso, utilisez Google (ou vous pouvez utiliser un programme d’installation gravé à partir d’un CD-ROM).

Maintenant, la plupart des installateurs Linux vous donnent le choix de ce qu’il faut faire, essayer de jouer/utiliser pour l’évaluation ou Linux portable ou exécuter le programme d’installation pour l’installer. À ce stade, nous attendons simplement (déplacez le curseur vers le bas pour que l'écran attende, mais n'appuyez pas sur Entrée ni cliquez avec la souris).

Rappelez-vous qu’à ce stade, votre lecteur USB/ou/CDRom a démarré et est en cours d’exécution. il est maintenant temps de brancher le disque dur que nous avons temporairement enlevé, attendez une minute (certains bios nécessitent une petite attente, une minute suffit)

Continuez le processus d’installation car la plupart des programmes d’installation contiennent des outils de partitionnement, vous pouvez faire ce que vous voulez. Eh bien, c'est une solution simple, je me suis débarrassé d'une ancienne configuration de Linux simplement en tant que débutant

0
peter