Auf einer Festplatte, die ich nur für die Datenspeicherung verwende, befindet sich noch GRUB aus früheren Ubuntu-Installationen.
Wie kann ich GRUB entfernen, ohne die restlichen Daten des Laufwerks zu beschädigen?
Hintergrund
Ich verschiebe das Datenlaufwerk gelegentlich zwischen Computern mit verschiedenen Startreihenfolgekonfigurationen. Daher möchte ich, dass es nicht bootfähig ist , damit es nicht in den BIOS-Einstellungen der einzelnen Computer berücksichtigt werden muss.
Wenn ich einen Computer einschalte, während nur das Datenlaufwerk angeschlossen ist, wird Folgendes angezeigt:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Ich kann aus alten Sicherungen bestätigen, /etc/fstab
dass dies die UUID einer Root-Partition war, die ich kürzlich neu formatiert habe und die nicht mehr existiert . Hier ist die Partitionstabelle und der Raw- Master-Boot-Datensatz des Datenlaufwerks .
Bitte beachten Sie, dass ich nicht an Problemumgehungen interessiert bin, die meine Hauptfrage nicht beantworten. Ich kann mir verschiedene Möglichkeiten vorstellen, um dieses Problem zu umgehen, aber es stört mich grundsätzlich, dass ich nicht weiß, wie ich es direkt lösen kann. Jede Installationsprozedur sollte eine entsprechende Deinstallationsprozedur haben.
sfdisk -d /dev/sdb > sdb.out
.Antworten:
Sie können das Gerät nicht bootfähig machen, indem Sie die ersten Bytes der Festplatte auf 0x00 setzen.
Normalerweise (und dies gilt sowohl für grub, grub2 als auch für ntldr iirc) ist das allererste Byte Ihres Laufwerks eine x86-JMP-Anweisung. Dies geschieht bereits vor dem Disklabel, da die CPU beim Übergeben der Ausführung an das Gerät zum Bootstrap lediglich die Geräteinformationen als Code einsaugt. Wenn der Code ungültig ist, wird ein Interrupt ausgelöst, und das BIOS behandelt die Ausnahme und geht zum nächsten bootfähigen Gerät.
Zum Beispiel beginnt der Anfang meiner Festplatte mit:
Der erste Teil ist
eb 63
Jump to Offset 0x63 von der aktuellen IP (also zu 0x65).Die Ausführung wird von hier aus fortgesetzt.
Das Ende des Sektors sieht folgendermaßen aus:
Wenn Ihre Festplatte als MBR-Partitionstabelle formatiert ist, müssen nur zwei Dinge vorhanden sein: die Partitionstabelle mit Offset
0x1be
und die MBR-Signatur,55aa
die ganz am Ende des Sektors mit Offset auftritt0x1fe
.0x1be
ist dezimal 446.Das Folgende macht das Gerät (natürlich) nicht mehr bootfähig. Aber das ist was du willst. Wenn Sie nicht möchten, dass Ihr Gerät nicht mehr gebootet werden kann, tun Sie dies nicht, mmm-kay? Ich gehe davon aus, dass es sich bei Ihrem Gerät
/dev/sdz
nur um ein Gerät handelt , weil nicht viele Leute ein Gerät haben/dev/sdz
, und dies senkt das Risiko, dass ein Idiot-Neuling blind Befehle zum Einfügen kopiert.Kopieren Sie zuerst den MBR in eine Datei für eine Sicherung.
Erstellen Sie als Nächstes eine Kopie dieser Datei:
Als nächstes müssen wir ein Loopback-Gerät erstellen (damit der Inhalt nicht abgeschnitten wird) und die Änderungen als Test auf unseren gefälschten Sektor 0 anwenden:
hexdump
die Datei und stellen Sie sicher, dass die gesamte Partitionstabelle intakt ist:Sie sollten etwas sehen wie:
Nun
0x1be
können Sie sehen80
auf dem hexdumped Ausgang, kann dies auch sein00
und immer noch gültig sein. (Es ist das „bootable“ Flag in der Partitionstabelle, können Sie es in Ruhe lassen, weil es völlig von den meisten modernen BIOS - Versionen ... ignoriert wird ) das Byte an ,0x1bf
obwohl fast nie sein0x00
(es ist am häufigsten ,0x01
aber es kann auch andere Werte annehmen) Sie Vergleichen Sie dies mit Ihrerbackup.mbr
, um sicherzustellen, dass sich nichts an der Vergangenheit0x1be
ändert.Wenn Sie zufrieden sind, dass Sie die Änderung korrekt angewendet haben, können Sie die Datei direkt über den ersten Teil der Festplatte kopieren. Der Grund, warum Sie die Datei lieber als
/dev/zero
erneut ausführen möchten, dient der Sicherheit vor Tippfehlern. Wenn Sie versehentlich auslassencount=1
, wird das Kopieren einer Datei niemals erfolgreich sein. So ist es sicherer.hexdump
Vergewissern Sie sich als Nächstes , dass die Änderungen wie erwartet durchgeführt wurden.Vergleichen Sie bis
0x200
gegenbackup.mbr.test
, um sicherzustellen, dass es ist, was Sie wollen.Wenn irgendetwas aus irgendeinem Grund schief geht, können Sie die Sicherung des MBR einfach wieder auf das Laufwerk kopieren:
Hoffe das hilft.
quelle
count
vergessen wird, nicht direkt unter Verwendung eines allgemeinen Block-Gerätenamens, wobei angegeben wird, dass die Sicherungsdatei erstellt werden soll ein Beispiel dafür, wie ein erfolgreiches Löschen aussieht, wie Sie es rückgängig machen können, wenn Sie es vermasseln. Ich denke, wenn Sie sich auskennen, um zu wissen, was ich vorhabe, können Sie die kleinen Schritte durchkreuzen und dies alles in einem einzigen Befehl erledigen. Aber ich werde dir diesen Befehl nicht geben, wenn du noch lernst. ;)WARNUNG: EXTREM GEFÄHRLICH
Sie können den Befehl dd unter Linux selbst verwenden (er entfernt die Partitionstabelle):
Entfernen Sie einfach den MBR ohne die Partitionstabelle (siehe Kommentar unten):
Ersetzen Sie
/dev/hdX
durch Ihren tatsächlichen Gerätenamen, z/dev/hda
. Verwenden Sie denfdisk -l
Befehl, um den Gerätenamen herauszufinden:Quelle
quelle
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
. Wie Sie sehen,/dev/null
handelt es sich nicht um eine 0-Quelle, sondern um eine EOF-Quelle.dd
kann und will nichts von dem kopieren, was/dev/null
du verwenden musst/dev/zero
. Beim zweiten Durchbruch ist kein undefiniertes Verhalten möglich, wenn das erste Byte des Sektors 0 ist0x00
. Ich weiß nicht, warum du das denkst.Meine Erfahrung mit
ist, dass es grub2 erfolgreich deinstalliert hat
/dev/sda
(wo mein Windows 7 installiert ist), also der erste Teil der Frage "Wie entferne ich grub aus / dev / sda?" wurde beantwortet.Der zweite Teil der Frage lautet jedoch "Wie stelle ich den MBR von / dev / sda wieder her?" wurde nicht beantwortet, da der
install-mbr
Befehl den MBR nicht wiederherstellen konnte. Infolgedessen startet Windows nicht mehr und der Windows-Start-Manager meldet einen Fehler bezüglich eines beschädigten MBR und fordert den Benutzer auf, die Reparatur von einer Windows-Reparatur-CD durchzuführen.quelle
Nachdem ich den Wikipedia-Artikel zu diesem Thema gelesen habe, möchte ich ein paar zusätzliche Lösungen vorschlagen:
Bootreihenfolge im BIOS ändern :)
Das beste und sicherste: Mit dieser
fdisk
Option können Sie das "bootfähige" Flag von allen Partitionen auf diesem Laufwerk entfernen. Die meisten MBRs suchen nach einer "bootfähigen" Partition, von der aus eine Kette geladen werden kann. Daher würde ich erwarten, dass GRUB einfach nichts unternimmt, wenn es keine solchen Partitionen gibt. Nicht getestet.Wenn dies nicht hilft, installieren Sie einen kostenlosen Klon des Standard-MBR-Codes:
Installiere das
mbr
Paket und benutze den folgendeninstall-mbr
Befehl:Credits: SO WIRD'S GEMACHT: Windows MBR mit Ubuntu LIVE-CD wiederherstellen
Beim Lesen des Wikipedia-Artikels habe ich den Eindruck, dass das einzige, was den MBR identifiziert, seine Signatur ist, die sich ganz am Ende des Sektors befindet (Bytes 510 und 511). Die ersten 446 MBR-Bytes sollen Maschinenanweisungen enthalten. Das BIOS soll die Steuerung unabhängig vom tatsächlichen Inhalt der ersten 446 Bytes an den Bootloader übertragen, vorausgesetzt, die MBR-Signatur ist vorhanden:
Ich verstehe also, dass MBR immer einen Bootloader enthalten soll, und das Nullsetzen der ersten 446 Bytes würde das BIOS nicht davon abhalten, von der Festplatte zu booten - aber es ist wahrscheinlich, dass der Computer beim Versuch, ungültigen Code auszuführen, hängen bleibt.
UPDATE: In diesem Artikel wird außerdem empfohlen, die MBR-Signatur im und des Sektors (mit einem beliebigen Festplatten-Editor) zu bearbeiten, damit die Festplatte für das BIOS als "nicht bootfähig" angezeigt wird. Ich bin mir nicht sicher, ob es das Betriebssystem beeinflussen wird, wenn man die Partitionstabelle auf der Festplatte sieht ... aber zumindest kann man diese Bytes immer wieder ändern ...
quelle
Noch eine einfachere Lösung.
In meinem Fall hatte ich Debian Linux, wollte aber Mandriva verwenden, wird auch für andere funktionieren
Schalten Sie Ihren PC aus, und entfernen Sie die Festplatte, die bootet, die Sie nicht booten möchten (die Grub hat).
Geben Sie einfach einen bootfähigen USB-Stick ein, der aus der Mandriva-ISO-Datei oder einer anderen zu installierenden Variante erstellt wurde. Es gibt Tools, mit denen Sie bootfähige USB-Sticks aus ISO-Dateien mithilfe von Google erstellen können.
Jetzt können Sie bei den meisten Linux-Installationsprogrammen auswählen, was Sie tun möchten, was Sie zur Evaluierung oder für portables Linux verwenden möchten, oder das Setup ausführen, um es zu installieren. An diesem Punkt warten wir nur (bewegen Sie den Cursor nach oben und unten, damit der Bildschirm wartet, drücken Sie jedoch nicht die Eingabetaste oder klicken Sie mit der Maus).
Denken Sie an dieser Stelle daran, dass Ihre USB- / oder / CD-ROM gestartet wurde und ausgeführt wird. Jetzt ist es an der Zeit, die Festplatte, die wir vorübergehend entfernt haben, wieder einzustecken. Warte eine Minute.
Fahren Sie mit dem Installationsprozess fort, da die meisten Installationsprogramme Partitionstools enthalten, mit denen Sie nach Belieben arbeiten können. Nun, es ist eine einfache Lösung, ich habe ein altes Linux-Setup einfach als Anfänger losgeworden
quelle
Alte Frage, aber als es mir gestern passiert ist, habe ich es so gelöst: Ich habe den Computer ausgeschaltet, die belastete Festplatte physisch abgeklemmt, den Computer dann neu gestartet
Nachdem ich dies getan hatte, schaltete ich den Computer aus, steckte die Festplatte wieder ein und meine alte Windows 7-Partition, die seit 2 Jahren nicht mehr vorhanden war, tauchte nicht mehr auf - endlich.
Ich verstehe, dass dies eine bodenständige Lösung ist, aber es funktioniert. Eines Tages werde ich die Festplatte komplett löschen, und alle verbleibenden Spuren von GRUB werden verschwinden.
quelle