Uaktualnienie systemu Windows 10 doprowadziło do uratowania gruba

75

Uruchamiałem system Windows 7 i Linux Ubuntu z podwójnym uruchomieniem na moim komputerze i dziś jest dzień, w którym rozdali bezpłatne aktualizacje systemu Windows 10. Ależ ekscytujące! Dostałem aktualizację, która była instalowana i wyszedłem, żeby zrobić 30-minutową drzemkę. Jednak gdy wróciłem do komputera, pojawiło się polecenie ratowania gruba.

error: no such partition.
Entering rescue mode...
grub rescue>

Podczas pisania otrzymuję następujące informacje ls:

grub rescue> ls
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

Po szybkim przejrzeniu osób, które spotkały się z monitem ratowania gruba, napisałem seti otrzymałem następujące

grub rescue> set
cmdpath=(hd0)
prefix=(hd0,msdos6)/boot/grub
root=hd0,msdos6

Nadal byłem trochę zagubiony po stwierdzeniu, że niektóre polecenia, takie normaljak, nie działały, a następnie znalazłem samouczek wideo, w którym uruchamiasz z dysku CD z obrazem systemu Linux i uruchamiasz niektóre polecenia na terminalu. Na szczęście miałem ze sobą swoją płytę CD i stamtąd wystartowałem. sudo fdisk -lJednak po wpisaniu do terminalu otrzymałem:

ubuntu@ubuntu:~$ sudo fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc03ede74

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
/dev/sda2          206848  1547022335   773407744    7  HPFS/NTFS/exFAT
/dev/sda3      1547022336  1547943935      460800   27  Hidden NTFS WinRE
/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Mówi się tutaj, że żadne z moich urządzeń nie ma systemu Linux! Poza tym nie mogłem śledzić samouczka wideo ...

Trochę drażniłem swój mózg i stwierdziłem, że sda2 zawiera mój system Windows (ponieważ pamiętam, że mój dysk C: ma około 700-GB przestrzeni). Po przemyśleniu trochę więcej, pamiętam, że przydzieliłem około 200-GB GB miejsca na dysku twardym na coś, co jest związane z Ubuntu podczas instalacji Ubuntu. Nie pamiętam dokładnie, ale myślę, że było to po prostu „miejsce na dysku twardym” Ubuntu i nie było w nim żadnych plików rozruchowych. Przypisałem dwie inne rzeczy dla Linuksa, ale były one bardzo małe (jeszcze nie przekraczając znaku 1 GB).

Czy więc ktoś może mi pomóc odzyskać uaktualnienie na właściwe tory? Nie będę miał nic przeciwko, jeśli w końcu będę musiał całkowicie usunąć partycje z Linuksem.

LChaos2
źródło
1
Jeśli partycja LInux jest logiczna, system Windows nie przepisuje z nią tabeli partycji. Użyj testdisk. Niektórzy użyli testdisk, aby go przywrócić i ponownie zainstalować gruba do MBR i wszystko wróciło do normy. Aby jednak działało, musisz poprawnie uwzględnić wszystkie partycje jako Podstawowe i logiczne. cgsecurity.org/wiki/TestDisk_Step_By_Step
oldfred
W powyższym układzie wygląda na to, że na końcu dysku pozostało tylko 3505 sektorów po nowej /dev/sda5lub (hd0,msdos5)partycji, co wyniósłoby zaledwie 1,7 MB, więc partycja Linuksa prawie się tam nie ukrywała. Domyślam się, że wpis partycji Linuksa został w jakiś sposób przeniesiony w to miejsce (# 5 zamiast # 6) i że jego typ został niewytłumaczalnie zmieniony. Pierwszą rzeczą do wypróbowania będzie ls (hd0,msdos5)/polecenie ratunkowe GRUB.
Josip Rodin
1
jeszcze jeden powód, aby nie używać okien, taki nieświadomy system operacyjny
Aydin K.

Odpowiedzi:

64

Mój komputer został fabrycznie zainstalowany, więc zmniejszyłem partycję Windows, aby zrobić miejsce dla Ubuntu. Tak to działało przez ostatni rok. Po drugim ponownym uruchomieniu systemu Windows 10 komputer nie uruchomił się już. GRUB wyświetlał tylko wiersz grub rescuepolecenia. Później dowiedziałem się, że problem wystąpił, ponieważ system Windows w jakiś sposób zmienił schemat partycji. Partycja rozruchowa (zawierająca normalne dane GRUB) nie była już tam, gdzie oczekiwał tego GRUB. Nie wiem jak i dlaczego tak się stało.

Pierwszą rzeczą, którą możesz zrobić w trybie ratunkowym, jest zobaczenie partycji za pomocą lspolecenia. Moje były:

  • (hd0, gpt1),
  • (hd0, gpt2),
  • itp.

Spróbuj dowiedzieć się, która partycja jest partycją rozruchową. Nie ma Tabukończenia, musisz go całkowicie wpisać. Próbowałem następujących poleceń, dopóki nie znalazłem właściwej partycji:

ls (hd0,gpt1)/
ls (hd0,gpt1)/boot
ls (hd0,gpt2)/

itp.

Następnie wpisz setten sam monit. Wyświetli się, gdzie GRUB szuka swoich plików. W moim przypadku (hd0, gpt6) przeniósł się do (hd0, gpt7). Wyświetlone polecenie set:

prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6

Aby wrócić do normalnego GRUB-a, zacznij od zmiany prefixustawienia, aby wskazywało właściwą partycję. W moim przypadku polecenie brzmiało:

set prefix=(hd0,gpt7)/boot/grub

Następnie możesz przejść z trybu ratunkowego do trybu normalnego:

insmod normal
normal

Można również naprawić rootustawienie za pomocą:

set root=(hd0,gpt7)

Ale nie jest to absolutnie konieczne, ponieważ nie ma znaczenia dla wpisów obciążenia systemu Windows. W normalnym menu GRUB-a możesz uruchomić system Windows i dokończyć aktualizację systemu Windows. Problem polega na tym, że przy każdym ponownym uruchomieniu musisz poinformować gruba o właściwych partycjach. Tak to zrobiłem. Problem GRUB-a zostawiłem na później, ponieważ nie byłem pewien, czy Windows wprowadzi jakieś zmiany w partycjach, czy uruchomi się.

Kiedy Windows skończył, zacząłem rozwiązywać problemy GRUB. Naciśnij, eaby edytować opcje uruchamiania dla Ubuntu. Zmieniłem wszystko (hd0,gpt6)na (hd0,gpt7)i Ubuntu uruchomiło się.

Używam jednak zaszyfrowanej partycji i zamiany cryptswap. Podczas uruchamiania Ubuntu poprosił mnie o hasło. Na szczęście zapisałem go podczas instalacji Ubuntu i wprowadziłem przy starcie systemu. Ubuntu uruchomiło się bez problemów.

Potem poprawił /boot/grub/grub.cfgplik gdzie otrzymuje (hd0,gpt6)się (hd0,gpt7)i wykonał:

sudo grub-install

W tym momencie jedynym problemem pozostało szyfrowanie. Ponieważ główny numer partycji Ubuntu został zwiększony o jeden (7 zamiast 6), partycja wymiany uległa podobnej zmianie. Musiałem zmienić /etc/crypttabplik, aby wskazywał /dev/sda8zamiast /dev/sda7.

Używam tylko dwóch partycji dla Ubuntu (root i swap). Jeśli inne systemy operacyjne współistniejące z systemem Windows używają większej liczby partycji, mogą być wymagane dalsze zmiany. Zwłaszcza jeśli partycje są montowane zgodnie z ich numerami, a nie według ich identyfikatorów UUID. Spójrz na swoje /etc/fstab. Jeśli partycje są identyfikowane przez UUID, nie powinno być problemów. Ale jeśli są /dev/...wiersze, numer powinien zostać poprawiony, jeśli numeracja tych partycji została zmieniona.

nikt
źródło
2
To była dla mnie świetna odpowiedź. Nie miałem płyty z Ubuntu i aktualizowałem system Windows z wersji 8.1 na 10 i miałem ten sam problem. Tak więc ta odpowiedź zyskuje ode mnie dodatkowe uznanie, ponieważ mogłem po prostu ją wpisać i kontynuować aż do zakończenia aktualizacji. Dzięki za uratowanie mojego boczku.
dibs
2
To rozwiązanie działało dla mnie idealnie, gdy Win 10 zdecydował się na aktualizację i zepsuł rekordy rozruchowe (moja aktualizacja z 7 do 10 poszła bez żadnych
problemów
9
Próbowałem ls (hd0,msdos1)/ ls (hd0,msdos1)/boot ls (hd0,msdos2)/ etc.wszystkich wpisów z lspolecenia i za każdym razem, gdy to wymyśli error: unkown filesystem.
Jacques MALAPRADE
2
Dziękuję, że pomogło. Jedną z rzeczy, które nie były dla mnie jasne (ponieważ jestem nowy zarówno w Ubuntu, jak i Grubu) było to, że edytowanie konfiguracji Grub musiało zostać wykonane po uruchomieniu w Ubuntu (a nie w mini Emacsie, który nie obsługuje zapisywania plik najwyraźniej.) Więc uruchomiłem, potem edytowałem konfigurację sudo nano /boot/grub/grub.cfgi uruchomiłem sudo grub-install /dev/sda(z jakiegoś powodu wywołanie bez parametru nie powiodło się dla mnie). I dopiero wtedy trwałe zmiany zadziałały.
Nikita G.
1
Próbowałem ls (hdo, msdos1) itp. Dla wszystkich wpisów. Uzyskaj błąd nieznany system plików
Ashley G
13

Instalowanie systemu Windows (lub uaktualnianie go) wraz z linuksem może być problematyczne.

Spróbuj tego: https://help.ubuntu.com/community/Boot-Repair



Użyłem go do rozwiązania problemu po zainstalowaniu podglądu technologii Windows 10 i zadziałało. Zasadniczo, to co robi, to ponownie zainstalować grub, aby działał ze wszystkimi obecnie zainstalowanymi systemami operacyjnymi. Pamiętaj, aby powiedzieć mu, aby zainstalował grub na partycji linux (sd #).

Powodzenia!

Patrick
źródło
Cześć! Dziękujemy za poświęcenie czasu na pomoc! Nie jestem do końca pewny, która to partycja! Ale będę się trochę bawił, żeby zobaczyć, czy to zadziała.
LChaos2
Nie ma problemu! Zawsze chętnie pomogę.
Patrick,
Cześć! Uruchomiłem więc dysk naprawczy i użyłem zalecanej naprawy. Zrobiłem to i ponownie uruchomiłem komputer, ale zabiera mnie do menedżera rozruchu systemu Windows i mówi, że ostatnia zmiana sprzętu lub oprogramowania mogła spowodować zainstalowanie pliku, który jest podpisany niepoprawnie lub uszkodzony. Plik ma nazwę \ Windows \ system32 \ winload.exe, status 0xc0000428. Naciśnięcie klawisza enter zabiera mnie do menedżera rozruchu, aby wybrać system operacyjny do uruchomienia, pokazując tylko system Windows 7. Naciśnięcie klawisza enter w systemie Windows 7 powoduje powrót do tego samego ekranu błędu, co powoduje powstanie pętli.
LChaos2,
Po przeprowadzeniu niektórych badań wydaje się, że kod błędu (0xc000428) jest powiązany z brakiem weryfikacji pliku winload.exe za pomocą podpisu cyfrowego. Czy coś o tym mówi?
Patrick
1
Jakaś aktualizacja sytuacji @ LChaos2?
hg8
10

Przed zmianą partycji wykonaj kopię zapasową i zapisz na innym urządzeniu. Jeśli nie, zmień dysk na poprawny. Następnie możesz zacząć od nowa, jeśli przywrócisz niepoprawny zestaw za pomocą testdisk. Chcesz tylko wszystkie bieżące plus brakujące logiczne podczas przywracania za pomocą testdisk.

sudo sfdisk -d /dev/sda > parts.txt

Brakująca partycja jest tutaj lub pomiędzy początkiem partycji rozszerzonej o 1547 ... a pierwszą partycją pokazaną o 1915 ...:

/dev/sda4      1547945982  1953521663   202787841    f  W95 Ext'd (LBA)
/dev/sda5      1915731968  1953521663    18894848    7  HPFS/NTFS/exFAT

Możesz użyć testdisk, ale używa CHS. Musisz wybrać wszystkie istniejące partycje i brakującą partycję jako logiczne. Może wyświetlać wiele wersji w zależności od tego, ile razy zmieniłeś partycje. Wybierz rozmiar pasujący do brakującego bez nakładania się na inne bieżące partycje. Niektóre, które poprawnie przywróciły, mogły się po prostu uruchomić, inne muszą ponownie zainstalować grub. Niektóre nie mogły poprawić partycji przywracania.

http://www.cgsecurity.org/wiki/TestDisk_Step_By_Step

Kolejnym narzędziem przywracania jest częściowe ratowanie. Używa sektorów, ale podany zakres musi znajdować się poza brakującą partycją bez nakładania się na bieżące partycje. Najlepiej, jeśli znasz dokładny początek i koniec. Zobacz, jak mężczyzna się rozstał

http://www.gnu.org/software/parted/manual/html_node/rescue.html

Użytkownik, który użył ratowania częściowego:

http://ubuntuforums.org/showthread.php?t=1775331&p=10905969#post10905969

oldfred
źródło
3
Spotkałem dokładnie ten sam problem i rozdzieliłem pokazy „wolnej przestrzeni” tam, gdzie był Linux. Uruchom ratowanie z / do „wolnej przestrzeni”, a ext4 powraca!
speedogoo
3
Chcę tylko powiedzieć, że gparted pokazał wolne miejsce tam, gdzie kiedyś był ext4. Ran parted, ustawiany na sektory, drukuj partycje, ratuj z / do „wolnego miejsca” (nie zapomnij dodać s dla sektorów do swoich wartości) i ext4 powrócił, dokładnie tak samo jak @speedogoo. W ogóle nie trzeba majstrować przy grub.
Amedee Van Gasse,
2
Ponieważ więcej osób nie ma partycji, co do cholery robi Windows 10 z tabelą partycji? W moim przypadku ext4 był na partycji logicznej.
Amedee Van Gasse,
Dzięki za tę bułkę tartą. Udało mi się odzyskać utraconą partycję Linuksa mojej żony za pomocą ratowania częściowego. Później instalowaliśmy gruba, wróciliśmy do akcji.
bheeshmar
7

To paskudny błąd w partycjonerze Windows, a nie specyficzny dla Linuksa. Ironicznie usunęło partycję NTFS w moim przypadku.

Instalator Windows 10 tworzy nową partycję (twoją /dev/sda3) wyciętą na końcu głównej partycji Windows, sda2jeśli partycja rozruchowa Windows sda1jest zbyt mała, aby pomieścić środowisko odzyskiwania systemu Windows 10.

Gdy przepisuje tablicę partycji, aby to zrobić, dla każdej partycji logicznej w rozszerzonej tablicy partycji sda4, jeśli znajduje się na dysku przed poprzednim numerem partycji, poddaje się.

W twoim przypadku partycje Linuksa znajdowały się na twoim dysku przed nową sda5, ale miały wyższe numery partycji niż sda5przed partycjonowaniem.

Jeśli przejrzysz ogromne dzienniki uaktualnień systemu Windows 10, zobaczysz komunikat „6 przed 5, nic nie robić”, wraz ze starymi i nowymi tabelami partycji.

System Windows nie zastępuje zawartości usuwanych partycji, więc można je odzyskać, jeśli można znaleźć ich lokalizację. W moim przypadku miałem kopie zapasowe tabeli partycji, ale użycie testdisk, jak wyjaśniono w odpowiedzi oldfreda, ma doskonałą szansę na znalezienie ich wszystkich. Parted ratowanie będzie trudne w użyciu, ponieważ w twoim przypadku usunięto więcej niż jedną partycję.

Aby użyć testdisk z Live CD Ubuntu, w typie terminala, sudo apt-get install testdiskaby go zainstalować i sudo testdiskuruchomić.

Po naprawieniu tablicy partycji partycja Linux zawierająca GRUB może mieć teraz inny numer niż poprzednio, więc nadal możesz skończyć po wyświetleniu monitu ratunkowego GRUB. Jeśli tak, Naprawa rozruchu będzie teraz mogła naprawić GRUB.

Ponownie, korzystając z Live CD Ubuntu, wpisz:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

zainstalować i uruchomić.

Teraz system Windows może ukończyć aktualizację.

Martin Thornton
źródło
Dzięki za jasne wyjaśnienie, na czym polega problem, bardzo mi to pomogło. Byłem w takiej samej sytuacji, jak opisano w pytaniu. Jednak testdisk nie mógł znaleźć usuniętej partycji linux. Dla mnie Parted ratunkowy wystarczyły i byłem w stanie kontynuować okna 10 uaktualnienie potem
toby
„System Windows nie zastępuje zawartości usuwanych partycji”. Jak to możliwe? Nowa partycja, którą dla mnie stworzyła (po zabiciu moich partycji linuksowych) zajęła cały dysk. Czy to nie znaczy, że zapisy mogą iść gdziekolwiek.
Greg Bell
Nie potrafię wyrazić, jak bardzo cię kocham
aviggiano,
1

Aby skorzystać z naprawy rozruchu, musisz ustawić w BIOS:

  • Włącz UEFI (w moim BIOSie jest :)

    Obsługa starszych wersji WYŁĄCZ

  • Wyłącz bezpieczny rozruch

Prawdopodobnie masz włączony Bezpieczny rozruch, więc pojawia się błąd „niepoprawnie podpisanego pliku”.

iacobus
źródło