Un disque dur que j'utilise uniquement pour le stockage de données a toujours GRUB des anciennes installations Ubuntu.
Comment puis-je en supprimer GRUB sans nuire au reste des données du disque?
Contexte
Je déplace occasionnellement le lecteur de données entre des ordinateurs avec différentes configurations d'ordre de démarrage, donc je voudrais qu'il ne soit pas amorçable afin d'éviter d'avoir à l'adapter dans les paramètres BIOS de chaque ordinateur.
Lorsque j'allume un ordinateur alors que seul le lecteur de données est connecté, le message suivant s'affiche:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Je peux confirmer à partir d'anciennes sauvegardes /etc/fstab
que c'était l'UUID d'une partition racine que j'ai récemment reformaté et qui n'existe plus . Voici la table de partition du lecteur de données et l' enregistrement de démarrage principal brut .
Veuillez noter que je ne suis pas intéressé par les solutions de contournement qui ne répondent pas à ma question principale. Je peux penser à plusieurs façons de contourner ce problème, mais cela me dérange par principe de ne pas savoir comment le résoudre directement. Chaque procédure d'installation doit avoir une procédure de désinstallation homologue.
sfdisk -d /dev/sdb > sdb.out
.Réponses:
Vous pouvez rendre le périphérique non amorçable simplement en faisant les premiers octets du disque 0x00.
En règle générale (et cela est vrai pour grub, grub2 et ntldr iirc), le tout premier octet de votre lecteur sera une instruction jmp x86. Cela se produit avant même le disklabel, car lors du passage de l'exécution au périphérique pour l'amorcer, il définit simplement le CPU pour aspirer les informations du périphérique sous forme de code. S'il a un code non valide, il déclenche une interruption et le BIOS gère l'exception et passe au périphérique de démarrage suivant.
Par exemple, le début de mon disque commence par:
La première partie est
eb 63
celle de Jump to offset 0x63 from the current IP (so to 0x65).L'exécution se poursuit à partir d'ici.
La fin du secteur ressemble à ceci:
Si votre disque est formaté en tant que table de partition MBR, il n'a besoin que de deux éléments pour être présent, la table de partition qui est à l'offset
0x1be
et la signature MBR,55aa
qui se produit à la toute fin du secteur à l'offset0x1fe
.0x1be
est décimal 446.Les éléments suivants rendront (bien sûr) le périphérique non amorçable. Mais c'est ce que tu veux. Si vous ne voulez pas rendre votre appareil impossible à démarrer, ne le faites pas, mmm-kay? Je suppose que votre appareil l'est
/dev/sdz
, tout simplement parce que peu de gens en ont un/dev/sdz
, et cela réduit le risque qu'un idiot novice copie aveuglément les commandes de collage.Tout d'abord, copiez le MBR dans un fichier pour une sauvegarde.
Ensuite, faites une copie de ce fichier:
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 comme test:
hexdump
le fichier et assurez-vous que la table de partition entière est intacte:Vous devriez voir quelque chose comme:
Maintenant,
0x1be
c'est là que vous voyez80
sur la sortie hexadumped, cela peut également être00
et être toujours valide. (Il est le drapeau « de démarrage » 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
bien sera presque jamais être0x00
(ce qui est le plus souvent ,0x01
mais cela peut prendre d' autres valeurs) vous pouvez comparer cela à votrebackup.mbr
pour vous assurer que rien du passé0x1be
n'est changé.Une fois que vous êtes convaincu que vous avez correctement appliqué la modification, vous pouvez copier directement le fichier sur la première partie du disque. La raison pour laquelle vous voulez faire le fichier plutôt que de
/dev/zero
nouveau est pour la sécurité contre les fautes de frappe. Si vous omettez accidentellementcount=1
que vous allez avoir un mauvais moment, la copie d'un fichier ne se déroulera jamais au-delà de l'EOF. C'est donc plus sûr.À côté de
hexdump
votre disque, assurez-vous que les modifications ont pris comme prévu.Comparez
0x200
contrebackup.mbr.test
pour vous assurer que c'est ce que vous voulez.Enfin, si quelque chose se déroule pour une raison quelconque, vous pouvez simplement copier la sauvegarde du MBR sur le lecteur via:
J'espère que cela t'aides.
la source
count
oubli, ne pas utiliser directement un nom de périphérique de bloc commun, en spécifiant que le fichier de sauvegarde doit être créé hors de l'appareil en cours de changement, un exemple de ce à quoi ressemble une compensation réussie, comment annuler si vous visser. Je suppose que si vous êtes assez bien informé pour savoir ce que je veux dire, vous pouvez passer à travers les étapes de bébé et faire tout cela en une seule commande. Mais je ne vais pas vous donner cette commande si vous apprenez encore. ;)AVERTISSEMENT: EXTRÊMEMENT DANGEREUX
Vous pouvez utiliser la commande dd de Linux lui-même (il supprime la table de partition):
Supprimez simplement MBR, sans la table de partition (voir le commentaire ci-dessous):
Remplacez
/dev/hdX
par le nom réel de votre appareil tel que/dev/hda
. Utilisez lafdisk -l
commande pour connaître le nom du périphérique:La source
la source
touch testfile
,dd if=/dev/urandom of=testfile bs=512 count=1
,sudo losetup /dev/loop7 testfile
,sudo dd if=/dev/null of=/dev/loop7 bs=446 count=1
,sudo hexdump -Cv /dev/loop7
. Comme vous pouvez le voir, ce/dev/null
n'est pas une source 0, c'est une source EOF.dd
ne peut pas et ne copiera rien de ce que/dev/null
vous devez utiliser/dev/zero
. Deuxième @Breakthrough, aucun comportement indéfini n'est possible si le premier octet du secteur 0 est0x00
. Je ne sais pas pourquoi tu penses ça.Mon expérience avec
est qu'il a réussi à désinstaller grub2 de
/dev/sda
(où mon Windows 7 est installé), donc la première partie de la question "Comment supprimer grub de / dev / sda?" a été répondu.Cependant, la 2ème partie de la question, qui est "Comment restaurer le MBR de / dev / sda?" n'a pas reçu de réponse car la
install-mbr
commande n'a pas pu restaurer le MBR. Par conséquent, 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.la source
Après avoir lu l'article Wikipédia sur le sujet, je voudrais proposer quelques solutions supplémentaires:
Changer l'ordre de démarrage dans le BIOS :)
Le meilleur et le plus sûr: utilisez
fdisk
pour supprimer l'indicateur "bootable" de toutes les partitions sur ce disque. La plupart des MBR recherchent une partition "bootable" à partir de laquelle charger en chaîne, donc je m'attends à ce que GRUB ne fasse rien s'il n'y a pas de telles partitions. N'ont cependant pas été testés.Si ce qui précède ne vous aide pas, essayez d'installer un clone gratuit de code MBR standard:
Installez le
mbr
package et utilisez lainstall-mbr
commande comme ceci:Crédits: COMMENT FAIRE: Récupérer Windows MBR en utilisant Ubuntu LIVE CD
En lisant l'article de Wikipédia, j'ai l'impression que la seule chose qui identifie le MBR est sa signature qui est à la toute fin du secteur (octets 510 et 511). Les 446 premiers octets de MBR censés contenir des instructions machine. Le BIOS est censé 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:
Donc, je crois comprendre que MBR est toujours censé contenir un chargeur de démarrage, et la remise à zéro des 446 premiers octets de celui-ci n'empêcherait pas le BIOS d'essayer de démarrer à partir du disque - mais il est probable que l'ordinateur se bloque tout en essayant d'exécuter du code non valide.
MISE À JOUR: En outre, cet article suggère que pour que le disque semble "non amorçable" pour le BIOS, vous devez réellement modifier la signature MBR au niveau du secteur (en utilisant n'importe quel éditeur de disque). Je ne sais pas si cela va affecter le système d'exploitation en voyant la table de partition sur le disque ... mais au moins, vous pouvez toujours modifier ces octets en arrière ...
la source
Une autre solution plus simple.
Dans mon cas, j'avais Debian Linux mais je voulais utiliser Mandriva, cela fonctionnera aussi pour les autres
Éteignez votre PC, puis retirez le disque qui démarre que vous ne voulez pas démarrer (qui a grub)
Mettez simplement une clé USB amorçable à partir de l'iso Mandriva ou d'une autre variante que vous souhaitez installer.Il existe des outils pour créer des clés USB amorçables à partir de fichiers ISO, utilisez Google (ou vous pouvez nous utiliser un programme d'installation gravé à partir du CD-ROM)
Maintenant, la plupart des installateurs Linux vous donnent le choix de quoi faire, essayez de jouer / utiliser pour l'évaluation ou Linux portable ou exécutez 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 ou cliquez avec la souris).
Rappelez-vous simplement qu'à ce stade, votre USB / ou / CDRom a démarré et est en cours d'exécution. maintenant il est temps de rebrancher le disque dur que nous avons temporairement retiré attendez une minute (certains bios nécessitent une petite attente une minute est plus que suffisant)
Continuez le processus de configuration car la plupart des installateurs contiennent des outils de partition, vous pouvez faire ce que vous voulez. Eh bien, c'est une solution simple, je me suis débarrassé d'une ancienne configuration Linux simplement en tant que débutant
la source
Vieille question, mais comme cela m'est arrivé hier, je l'ai résolu comme ceci: j'ai éteint l'ordinateur, déconnecté physiquement le disque dur incriminé, redémarré l'ordinateur, puis
Cela fait, j'ai éteint l'ordinateur, reconnecté le disque dur et mon ancienne partition Windows 7, qui n'existait plus depuis il y a 2 ans, ne s'est pas présentée - enfin.
Je comprends que c'est une solution terre à terre, mais cela fonctionne. Un jour, j'effacerai complètement ce disque dur et toute trace restante de GRUB disparaîtra.
la source