Dysk twardy, którego używam tylko do przechowywania danych, nadal ma GRUB z poprzednich instalacji Ubuntu.
Jak mogę usunąć z niego GRUB bez szkody dla reszty danych na dysku?
tło
Czasami przenoszę dysk danych między komputerami z różnymi konfiguracjami kolejności rozruchu, więc chciałbym, aby nie można go było uruchomić , aby uniknąć konieczności dostosowania go do ustawień BIOS każdego komputera.
Po włączeniu komputera, gdy podłączony jest tylko dysk danych, pojawia się następujący komunikat:
error: no such device: fdf38dd4-9e9d-479d-b830-2a6989958503.
grub rescue>
Mogę potwierdzić ze starych kopii zapasowych, /etc/fstab
że był to UUID partycji root, którą niedawno sformatowałem i która już nie istnieje . Oto tabela partycji dysku danych i surowy rekord rozruchowy .
Pamiętaj, że nie interesują mnie obejścia, które nie odpowiadają na moje podstawowe pytanie. Mogę wymyślić kilka sposobów obejścia tego problemu, ale zasadniczo przeszkadza mi to, że nie wiem, jak go bezpośrednio rozwiązać. Każda procedura instalacji powinna zawierać procedurę odinstalowania odpowiednika.
sfdisk -d /dev/sdb > sdb.out
.Odpowiedzi:
Możesz sprawić, że urządzenie nie będzie bootowalne, po prostu tworząc pierwsze bajty na dysku 0x00.
Zazwyczaj (i dotyczy to zarówno grub, grub2, jak i ntldr iirc) pierwszym bajtem dysku będzie instrukcja jmp x86. Dzieje się tak nawet przed etykietą dysku, ponieważ przekazując wykonanie do urządzenia w celu uruchomienia go, po prostu ustawia procesor tak, aby zasysał informacje o urządzeniu jako kod. Jeśli ma niepoprawny kod, wyzwala przerwanie, a BIOS obsługuje wyjątek i przechodzi do następnego urządzenia rozruchowego.
Na przykład początek mojego dysku zaczyna się od:
Pierwszą częścią jest
eb 63
Jump to offset 0x63 od bieżącego adresu IP (czyli do 0x65).Wykonanie trwa odtąd.
Koniec sektora wygląda następująco:
Jeśli dysk jest sformatowany jako tablica partycji MBR, potrzebne są tylko dwie rzeczy: tablica partycji z przesunięciem
0x1be
i sygnatura MBR,55aa
która występuje na samym końcu sektora z przesunięciem0x1fe
.0x1be
ma wartość dziesiętną 446.Następujące (oczywiście) uniemożliwi uruchomienie urządzenia. Ale tego właśnie chcesz. Jeśli nie chcesz, aby urządzenie nie mogło zostać uruchomione, nie rób tego, mmm-kay? Zakładam, że twoje urządzenie jest
/dev/sdz
po prostu dlatego, że niewiele osób ma/dev/sdz
, a to zmniejsza ryzyko, że jakiś idiota nowicjusz ślepo kopiuje polecenia wklejania.Najpierw skopiuj MBR do pliku w celu utworzenia kopii zapasowej.
Następnie wykonaj kopię tego pliku:
Następnie musimy utworzyć urządzenie sprzężenia zwrotnego (aby zawartość nie została obcięta.) I zastosuj zmiany w naszym fałszywym sektorze 0 jako test:
hexdump
plik i upewnij się, że cała tabela partycji jest nienaruszona:Powinieneś zobaczyć coś takiego:
Teraz
0x1be
jest to miejsce, w którym widzisz80
na zrzucie szesnastkowym, może to być również00
i nadal być poprawne. (Jest to flaga „bootowalna” w tablicy partycji, możesz ją zostawić w spokoju, ponieważ jest ona całkowicie ignorowana przez większość współczesnych BIOS-ów). Bajt na0x1bf
prawie nigdy nie będzie0x00
(najczęściej,0x01
ale może przyjmować inne wartości) możesz porównać to z twoim,backup.mbr
aby upewnić się, że nic przeszłego się nie0x1be
zmieniło.Po upewnieniu się, że zmiana została poprawnie zastosowana, możesz bezpośrednio skopiować plik na pierwszą część dysku. Powodem, dla którego chcesz zrobić plik, a nie
/dev/zero
ponownie, jest bezpieczeństwo przed literówkami. Jeśli przypadkowo zapomnisz,count=1
że będziesz miał zły czas, kopiowanie pliku z drugiej strony nigdy nie będzie przebiegać poza EOF. Więc jest bezpieczniej.Następnie
hexdump
dysk, aby upewnić się, że zmiany zostały wykonane zgodnie z oczekiwaniami.Porównaj w porównaniu
0x200
z,backup.mbr.test
aby upewnić się, że to, czego chcesz.Wreszcie, jeśli coś zepsuje z jakiegokolwiek powodu, możesz po prostu skopiować kopię zapasową MBR z powrotem na dysk za pomocą:
Mam nadzieję że to pomoże.
źródło
count
zapomnienia, nie używanie bezpośrednio wspólnej nazwy urządzenia blokowego, określając, że plik kopii zapasowej powinien zostać utworzony po zmianie urządzenia, przykład tego, jak wygląda udane czyszczenie, jak cofnąć, jeśli coś spieprzysz. Sądzę, że jeśli masz wystarczającą wiedzę, aby wiedzieć, o co mi chodzi, możesz przebić się przez kroki dziecka i po prostu zrobić to wszystko za pomocą jednego polecenia. Ale nie dam ci tego polecenia, jeśli nadal się uczysz. ;)OSTRZEŻENIE: NIEZWYKLE NIEBEZPIECZNE
Możesz użyć polecenia dd z samego systemu Linux (usuwa tablicę partycji):
Po prostu usuń MBR bez tablicy partycji (patrz komentarz poniżej):
Zastąp
/dev/hdX
rzeczywistą nazwą urządzenia, np/dev/hda
. Użyjfdisk -l
polecenia, aby znaleźć nazwę urządzenia:Źródło
źródło
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
. Jak widać,/dev/null
nie jest to źródło 0, to źródło EOF.dd
nie można i nie będzie kopiować niczego,/dev/null
czego potrzebujesz/dev/zero
. Po drugie @Przełomowe zachowanie nie jest możliwe, jeśli pierwszy bajt sektora 0 to0x00
. Nie wiem, dlaczego tak myślisz.Moje doświadczenie z
jest to, że pomyślnie odinstalował grub2 z
/dev/sda
(gdzie jest zainstalowany mój Windows 7), więc pierwsza część pytania „Jak usunąć grub z / dev / sda?” zostało odebrane.Jednak druga część pytania, czyli „Jak przywrócić MBR z / dev / sda?” nie udzielono odpowiedzi, ponieważ
install-mbr
polecenie nie przywróciło MBR. W rezultacie system Windows już się nie uruchamia, a menedżer rozruchu systemu Windows zgłasza błąd dotyczący uszkodzonego MBR i prosi użytkownika o naprawę z dysku CD naprawy systemu Windows.źródło
Po przeczytaniu artykułu w Wikipedii na ten temat chciałbym zaproponować kilka dodatkowych rozwiązań:
Zmień kolejność rozruchu w systemie BIOS :)
Najlepsza i najbezpieczniejsza: służy
fdisk
do usuwania flagi „bootowalnej” z dowolnej partycji na tym dysku. Większość MBR szuka „rozruchowej” partycji, z której można załadować łańcuch, więc spodziewałbym się, że GRUB nic nie zrobi, jeśli takich partycji nie będzie. Jednak nie testowałem.Jeśli powyższe nie pomoże, spróbuj zainstalować bezpłatny klon standardowego kodu MBR:
Zainstaluj
mbr
pakiet i użyj następującegoinstall-mbr
polecenia:Kredyty: W JAKI SPOSÓB: Odzyskiwać MBR systemu Windows za pomocą płyty Ubuntu LIVE CD
Po przeczytaniu artykułu z Wikipedii mam wrażenie, że jedyną rzeczą, która identyfikuje MBR, jest jego podpis znajdujący się na samym końcu sektora (bajty 510 i 511). Pierwsze 446 bajtów MBR powinno zawierać instrukcje maszynowe. BIOS powinien przekazać kontrolę do bootloadera bez względu na faktyczną zawartość pierwszych 446 bajtów, pod warunkiem obecności sygnatury MBR:
Rozumiem więc, że MBR zawsze powinien zawierać program ładujący, a wyzerowanie pierwszych 446 bajtów nie powstrzyma BIOS-u przed próbą uruchomienia z dysku - ale prawdopodobnie zawiesi komputer podczas próby wykonania nieprawidłowego kodu.
AKTUALIZACJA: Ponadto w tym artykule sugeruje się, że aby dysk wyglądał na „niemożliwy do rozruchu” w systemie BIOS, należy właściwie edytować podpis MBR w sektorze i (za pomocą dowolnego edytora dysku). Nie jestem pewien, czy to wpłynie na system operacyjny, widząc tablicę partycji na dysku ... ale przynajmniej zawsze możesz zmodyfikować te bajty z powrotem ...
źródło
Kolejne prostsze rozwiązanie.
W moim przypadku miałem Debiana na Linuksie, ale chciałem używać Mandrivy, będę również działał dla innych
Wyłącz komputer, a następnie wyjmij dysk, którego rozruchu nie chcesz uruchamiać (który ma gruba)
Po prostu włóż bootowalną pamięć USB wykonaną z Mandriva ISO lub innego wariantu, który chcesz zainstalować. Są narzędzia do tworzenia bootowalnych pamięci USB z plików ISO za pomocą Google (lub możesz nam wypalonego instalatora z CD ROM)
Teraz większość instalatorów linuxa daje ci wybór, co robić, spróbuj grać / używać do oceny lub przenośnego linuxa lub uruchomić instalację, aby go zainstalować. W tym momencie po prostu czekamy (przesuń kursor w górę, aby ekran poczekał, ale nie naciskaj enter lub klikaj myszą).
Przypomnij, że w tym momencie urządzenie USB / lub / CDRom zostało uruchomione i działa. teraz nadszedł czas, aby ponownie podłączyć dysk twardy, który tymczasowo usunęliśmy, poczekaj minutę (niektóre biografie wymagają krótkiego odczekania minuty, to więcej niż wystarcza)
Kontynuuj proces instalacji, ponieważ większość instalatorów zawiera narzędzia do partycji, które możesz zrobić, co chcesz. Cóż, to proste rozwiązanie, pozbyłem się starej konfiguracji Linuksa po prostu jako początkujący
źródło
Stare pytanie, ale jak mi się zdarzyło wczoraj, rozwiązałem to w następujący sposób: wyłączyłem komputer, fizycznie odłączyłem obciążony dysk twardy, uruchomiłem ponownie komputer, a następnie
Zrobiłem to, wyłączyłem komputer, ponownie podłączyłem dysk twardy i moja stara partycja Windows 7, która nie istnieje już od 2 lat temu, nie pojawiła się - w końcu.
Rozumiem, że to praktyczne rozwiązanie, ale działa. Pewnego dnia całkowicie wyczyszczę ten dysk twardy, a wszelkie pozostałe ślady GRUB znikną.
źródło