Zainstalowałem system Windows 7, który zjadł plik rozruchowy Ubuntu. Podczas uruchamiania komputera przechodzi teraz bezpośrednio do systemu Windows, nie dając mi opcji uruchamiania Ubuntu.
Jak mogę odzyskać Ubuntu?
Zainstalowałem system Windows 7, który zjadł plik rozruchowy Ubuntu. Podczas uruchamiania komputera przechodzi teraz bezpośrednio do systemu Windows, nie dając mi opcji uruchamiania Ubuntu.
Jak mogę odzyskać Ubuntu?
Odpowiedzi:
Podczas instalacji systemu Windows zakłada, że jest to jedyny system operacyjny (OS) na komputerze lub przynajmniej nie obsługuje on systemu Linux. Zastępuje GRUB własnym programem ładującym. Musisz tylko wymienić moduł ładujący Windows na GRUB. Widziałem różne instrukcje na temat zastępowania GRUB-a za pomocą komend GRUB lub podobnych, ale dla mnie najprostszym sposobem jest po prostu chroot
instalacja i uruchomienie update-grub
. chroot
jest świetny, ponieważ pozwala pracować nad faktyczną instalacją, zamiast przekierowywać rzeczy tu i tam. To jest naprawdę czyste.
Oto jak:
Określ numer partycji głównej partycji. sudo fdisk -l
, sudo blkid
Lub GParted (który powinien być już zainstalowany domyślnie w sesji live) może pomóc tutaj. W tej odpowiedzi założę, że tak /dev/sda2
, ale upewnij się, że używasz poprawnego numeru partycji dla twojego systemu!
Jeśli twoja główna partycja znajduje się w LVM , urządzenie zamiast tego będzie zlokalizowane w /dev/mapper/
, najprawdopodobniej, /dev/mapper/{volume}--{os}-root
gdzie {volume}
jest nazwa woluminu LVM i {os}
jest to system operacyjny. Wykonaj ls /dev/mapper
dla dokładnej nazwy.
Zamontuj partycję:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Jeśli masz osobny /boot
, /var
lub /usr
partycje , powtórz kroki 2 i 3 zamontować te partycje na /mnt/boot
, /mnt/var
i /mnt/usr
odpowiednio. Na przykład,
sudo mount /dev/sdXW /mnt/boot
sudo mount /dev/sdXY /mnt/var
sudo mount /dev/sdXZ /mnt/usr
zastępując sdXW
, sdXY
oraz sdXZ
odpowiednimi numerami partycji.
Bind montuje inne niezbędne rzeczy:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Jeśli Ubuntu jest zainstalowany w trybie EFI (w razie wątpliwości zapoznaj się z tą odpowiedzią ), użyj sudo fdisk -l | grep -i efi
lub GParted, aby znaleźć swoją partycję EFI. Będzie miał etykietę EFI
. Zamontuj tę partycję, zastępując sdXY
ją faktycznym numerem partycji dla twojego systemu:
sudo mount /dev/sdXY /mnt/boot/efi
chroot
do instalacji Ubuntu:
sudo chroot /mnt
W tym momencie jesteś w instalacji, a nie w sesji na żywo i działasz jako root. Zaktualizuj grub:
update-grub
Jeśli wystąpią błędy lub przejście do kroku 7 nie rozwiązało problemu, przejdź do kroku 8. (W przeciwnym razie jest to opcjonalne).
W zależności od sytuacji może być konieczna ponowna instalacja grub:
grub-install /dev/sda
update-grub # In order to find and add windows to grub menu.
Jeśli Ubuntu jest zainstalowany w trybie EFI, a identyfikator UUID partycji EFI zmienił się, być może trzeba go zaktualizować /etc/fstab
. Porównaj to:
blkid | grep -i efi
grep -i efi /etc/fstab
Jeśli bieżący UUID partycji EFI (od blkid
) różni się od tego w /etc/fstab
, zaktualizuj /etc/fstab
przy użyciu bieżącego UUID.
Jeśli wszystko działało bezbłędnie, wszystko gotowe:
exit
sudo reboot
W tym momencie powinieneś być w stanie uruchomić normalnie.
Jeśli nie możesz uruchomić się normalnie i nie zrobiłeś kroku 8, ponieważ nie było komunikatów o błędach, spróbuj ponownie w kroku 8.
grub-efi-amd64
a jeśli korzystasz z bezpiecznego rozruchu, którego chcesz użyć grub-install --uefi-secure-boot
. Jest to również szczegółowo opisane w superuser.com/a/376471/197980
Instalator Windows nie dba o inny system operacyjny w systemie. Zapisuje więc własny kod nad głównym rekordem rozruchowym. Na szczęście rozwiązanie jest również łatwe.
Musisz naprawić MBR. Wykonaj następujące czynności
Uruchom przy użyciu usb / cd na żywo z Ubuntu. Użyj, boot-repair
aby rozwiązać problem.
Po uruchomieniu z Live USB / CD, uruchom następującą komendę w terminalu:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Użyj Recomended Repair
.
Więcej informacji - https://help.ubuntu.com/community/Boot-Repair
Uruchom z pendrivea USB lub CD z Ubuntu na żywo i
zainstaluj Boot-Repair na Ubuntu, wykonując następujące czynności
Otwórz terminal i uruchom następujące polecenia
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install boot-repair
Po zakończeniu instalacji możesz uruchomić go z menu System-> Administracja-> Boot-Repair, jeśli używasz Gnome, lub wyszukaj „boot-repair” w desce rozdzielczej, jeśli używasz Unity. Następnie wykonaj następujące zrzuty ekranu:
Metoda 1
Naciśnij Zastosuj i zrestartuj system
Metoda 2
Wystarczy zainstalować easyBCD
w systemie Windows 7 i zrobić
Dodaj nowy wpis> Linux / BSD> (wybierz) Grub2> (push) Dodaj wpis
Następnie możesz wybrać Ubuntu w bootloaderze Windows 7, aby przejść do Grub2 (poprzedni bootloader).
W systemach opartych na EFI (takich jak większość systemów dostarczanych z Windows 8 lub nowszym), Windows czasami aktualizuje moduł ładujący lub resetuje go do domyślnego modułu ładującego. Jest to szczególnie powszechne podczas ponownej instalacji systemu operacyjnego lub przeprowadzania ważnej aktualizacji systemu (na przykład aktualizacji do najnowszej wersji systemu Windows). Zauważ, że Windows raczej nie usunie żadnych plików GRUB na komputerze z EFI. Wszystko, co jest potrzebne do uruchomienia Ubuntu, jest nadal dostępne; jest tylko omijany. W takich przypadkach kompletna ponowna instalacja GRUB-a jest przesadą, aw rzeczywistości ma (małą) szansę, że spowoduje nowe problemy.
Dlatego zamiast ponownie instalować GRUB w tych przypadkach, zalecam zresetowanie GRUB (lub innego programu ładującego lub menedżera rozruchu, który wolisz), aby był domyślny. Można to zrobić na kilka sposobów, w tym:
ubuntu
pozycję na liście opcji rozruchu i przenieś ją na górę listy. Przy następnym uruchomieniu, GRUB powinien się pojawić. (Jeśli używasz czegoś innego niż GRUB, musisz zlokalizować jego wpis.)bcdedit
- Za pomocą bcdedit
narzędzia Windows można ustawić domyślną kolejność uruchamiania GRUB-a. Wykona to polecenie bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
wpisane w oknie Wiersz polecenia administratora ; jednak jeśli komputer uruchomi się przy aktywnym Bezpiecznym rozruchu, bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
będzie to konieczne. W rzeczywistości to drugie polecenie zwykle działa, nawet jeśli Bezpieczny rozruch nie jest używany, więc najpierw użyłbym tego polecenia. Zauważ, że istnieje bardziej zaawansowane narzędzie powłoki systemu Windows, które wymaga nieco innej składni niż przedstawiłem, ale nie pamiętam szczegółów.ubuntu
wpis w celu uruchomienia Ubuntu pojawi się w tym menu menedżera rozruchu, umożliwiając uruchomienie w Ubuntu. Alternatywnie możesz uruchomić system z awaryjnego nośnika systemu Ubuntu, takiego jak instalator uruchomiony w trybie „wypróbuj przed instalacją”. Tak czy inaczej, możesz użyć efibootmgr
do dostosowania kolejności rozruchu:
sudo efibootmgr
aby zobaczyć wpisy rozruchu.BootOrder
linię.ubuntu
i zanotuj jego Boot####
numer.sudo efibootmgr -o xxxx[,yyyy,zzzz,....]
aby zmienić kolejność rozruchu, xxxx
ustawiając numer dla Ubuntu. To, co nastąpi po tym, najprawdopodobniej nie jest bardzo ważne, chociaż zauważyłem, że Windows prawdopodobnie powróci do początku kolejności rozruchu, jeśli nie ma go na liście. Dlatego prawdopodobnie powinieneś upewnić się, że Windows znajduje się na liście, i może być bezpieczniej zmienić kolejność na liście, tak aby wszystkie oryginalne wpisy były na liście, tylko z tym, że ubuntu
pozycja została przeniesiona na górę listy.Istnieją inne warianty tych procedur, takie jak używanie bcfg
w powłoce EFI, używanie bless
w macOS, używanie mojego rEFInd do jednorazowego rozruchu itp. Jednak zacznę od EasyUEFI; prawdopodobnie będzie to najprostsze rozwiązanie. Czasami jednak Windows nalega na ustawienie się domyślnie przy każdym uruchomieniu, a raporty wskazują, że bcdedit
lepiej poradzi sobie z tym problemem.
Zauważ, że żaden z powyższych nie dotyczy instalacji w trybie BIOS; Ponieważ jednak większość komputerów dostarczanych z systemem Windows 8 lub nowszym uruchamia się w trybie EFI, instalacje w trybie BIOS stają się coraz rzadsze, dlatego w wielu przypadkach lepiej jest rozwiązać ten problem w sposób EFI, niż przez ślepą ponowną instalację GRUB-a.
efibootmgr
do ponownego zamówienia kolejności rozruchu (zgodnie z opisem Rod -> dzięki!), który został pomieszany przez win10 aktualizacja. Następnie pojawia się GRUB-bootmanager, tak jak kiedyś przed aktualizacją, więc mogę potwierdzić, że dostarczone rozwiązanie działało dla mnie. Nie mogłem znaleźć podstawowej wersji EasyUEFI, a jedynie oferowaną wersję próbną niewolnej wersji pro.
Istnieje teraz prostsze rozwiązanie:
Zostało to przetestowane na laptopie Samsung Series 7 Chronos z podwójnym uruchamianiem Windows 8 i Ubuntu 13.10, wyłączonym bezpiecznym uruchamianiem, włączonym UEFI i starszym uruchomieniem.
Boot-Repair działał dla mnie. Jest to bardzo, bardzo łatwa w użyciu aplikacja graficzna, nie trzeba korzystać z wiersza poleceń, wystarczy kliknąć przycisk :)
Wszystkie dostępne opcje naprawy są opisane w dokumentacji Ubuntu, a osobna strona wyjaśnia, jak uruchomić Boot-Repair (poprzez utworzenie dysku rozruchowego lub instalację na istniejącym dysku Ubuntu) i jak z niego korzystać.
Po prostu uruchom Live CD Ubuntu, zainstaluj Boot-Repair i uruchom go.
chroot
naprawę niż w Google, aby zainstalować inne narzędzie.
Gdy GRUB jest zepsuty, użytkownik zasadniczo nie ma dostępu do systemów, więc naprawa musi być wykonana z sesji na żywo (live-CD lub live-USB).
Istnieje wiele możliwych przyczyn zerwania GRUB-a: pisanie w systemie Windows na MBR, DRM uniemożliwiający poprawną instalację GRUB, błąd instalatora, zmiana sprzętu ... Aktualizacja GRUB-a zaproponowana początkowo przez Scotta zasadniczo nie jest wystarczająca, ponowna instalacja GRUB-a zaproponowana przez Marco jest wydajniejsze, ale wciąż istnieją różne sytuacje wymagające innych poprawek (dodawanie opcji do jądra, odkrywanie menu GRUB, zmiana opcji GRUB, wybór odpowiedniej architektury hosta ...). Inne trudności w naprawie GRUB-a to użycie chroot i wybór odpowiednich partycji / dysków.
Wszystko to zostało ułatwione w małym graficznym narzędziu: Boot-Repair . Zostanie zintegrowany z Ubuntu 12.04 CD dla łatwiejszego użycia, ale dla osób, które go teraz potrzebują, istnieją już pewne systemy go integrujące: Ubuntu-Secured-Remix (Ubuntu CD integrujący Boot-Repair), Boot-Repair-Disk (CD z bootem -Naprawa przy uruchomieniu), ...
Mam nadzieję że to pomoże.
Odpowiedzi udzielone przez Scotta i Web-E są wystarczająco dobre i wiele razy pomogły. Ale wiele razy narzędzie do naprawy rozruchu nie jest w stanie naprawić gruba z powodu problemów związanych z platformą i386 i amd64 lub takim, w którym grub nie może znaleźć efi
katalogu.
To, co rozwiązało mój problem ponad 10 razy, to ręczne wyczyszczenie starych instalacji gruba i zainstalowanie nowej.
Najpierw wykonaj pierwsze 6 kroków od odpowiedzi Scotta, w której możesz pominąć piąty krok, jeśli wystąpi błąd:
- Uruchom komputer z Live CD lub Live USB w trybie „Try Ubuntu”.
Określ numer partycji głównej partycji.
sudo fdisk -l
,sudo blkid
Lub GParted (który powinien być już zainstalowany domyślnie w sesji live) może pomóc tutaj. W tej odpowiedzi założę, że tak/dev/sda2
, ale upewnij się, że używasz poprawnego numeru partycji dla twojego systemu!Jeśli twoja główna partycja znajduje się w LVM , urządzenie zamiast tego będzie zlokalizowane w
/dev/mapper/
, najprawdopodobniej,/dev/mapper/{volume}--{os}-root
gdzie{volume}
jest nazwa woluminu LVM i{os}
jest to system operacyjny. Wykonajls /dev/mapper
dla dokładnej nazwy.Zamontuj partycję:
sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
Jeśli masz osobny
/boot
,/var
lub/usr
partycje , powtórz kroki 2 i 3 zamontować te partycje na/mnt/boot
,/mnt/var
i/mnt/usr
odpowiednio. Na przykład,sudo mount /dev/sdXW /mnt/boot sudo mount /dev/sdXY /mnt/var sudo mount /dev/sdXZ /mnt/usr
zastępując
sdXW
,sdXY
orazsdXZ
odpowiednimi numerami partycji.Bind montuje inne niezbędne rzeczy:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
Jeśli Ubuntu jest zainstalowany w trybie EFI ([zobacz tę odpowiedź, jeśli nie masz pewności] [efi]), użyj
sudo fdisk -l | grep -i efi
lub GParted, aby znaleźć swoją partycję EFI. Będzie miał etykietęEFI
. Zamontuj tę partycję, zastępującsdXY
ją faktycznym numerem partycji dla twojego systemu:sudo mount /dev/sdXY /mnt/boot/efi
chroot
do instalacji Ubuntu:sudo chroot /mnt
Następnie wykonaj następujące kroki:
sudo dpkg --configure -a
sudo apt install -fy
sudo apt purge -y grub*-common grub-common:i386 shim-signed
sudo apt install -y grub-pc
sdXY
aby zainstalować bootloader. Znajdź, gdzie jest zainstalowany obecny system operacyjny za pomocą sudo fdisk -l
polecenia. Będzie oznaczony jako Linux
. Nawiguj w tym oknie za pomocą Tabklawisza i wybierz opcję za pomocą Spaceklawisza.sudo grub-update
podwójną kontrolę.Jeśli problem nadal występuje, możesz przeczytać wiki Archa, aby dowiedzieć się więcej o jedzeniu gruba w celu rozwiązania wielu innych problemów. (Tak, pomaga również Ubuntu!).
System Windows nie widzi partycji sformatowanych w systemie Linux. Musisz użyć gparted z LiveCD i utworzyć partycję podstawową sformatowaną NTFS z flagą boot.
Niektórzy mieli problemy, jeśli nowa partycja podstawowa jest za partycją rozszerzoną, ponieważ system Windows nie zawsze poprawnie resetuje tabelę partycji. Najlepiej mieć dobre kopie zapasowe i osobną kopię zapasową tabeli partycji.
Utwórz kopię zapasową tabeli partycji do pliku tekstowego i zapisz na urządzeniu zewnętrznym.
sudo sfdisk -d /dev/sda > PTsda.txt
Dotyczy to tylko systemów MBR (msdos). Jeśli Twoja instalacja Ubuntu jest na dysku partycji GPT, możesz zainstalować system Windows tylko w trybie UEFI lub przekonwertować dysk z powrotem na MBR (msdos).
Tylko fsck
polecenie naprawiło grub-rescue
dla mnie ekran.
Użyj Boot-Repair, aby uruchomić z Live-CD, a następnie otwórz Terminal
Uzyskaj odpowiednie urządzenie:
sudo fdisk -l
Musisz znaleźć urządzenie rozruchowe, urządzenie rozruchowe ma *
w kategorii Boot jak tutaj:
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2000895 1998848 976M 82 Linux swap / Solaris
/dev/sda2 * 2000896 943716351 941715456 449G 83 Linux
Teraz napraw dysk za pomocą:
sudo fsck /dev/sda2 -y
Uwaga: w tym przykładzie / dev / sda2 jest urządzeniem rozruchowym.
Uruchom ponownie po zakończeniu. Gotowy.
Odpowiedź Scotta Severance jest poprawna i szczegółowa, ale istnieje rozdzielczość, która nie wymaga zewnętrznego urządzenia rozruchowego, więc nie ma potrzeby identyfikowania i ręcznego montowania wszystkich partycji Ubuntu prowadzących do chroot
.
W systemie Windows 10 możesz użyć Advanced Recovery
urządzenia (partycji?) Do uruchomienia.
Idź do Settings
i wybierz Update & Security
:
Idź do Recovery
:
Z Advanced Startup
wybierzRestart Now
Następnie wybierz Use a Device
i wszystkie opcje uruchamiania powinny być przedstawione. Wybierz partycję „ubuntu”, a komputer powinien następnie uruchomić się z tej partycji.
Po uruchomieniu w moim zwykłym środowisku Ubuntu próbowałem właśnie uruchomić, grub-update
ale to nic nie zmieniło.
I wtedy okazało moją /boot/efi
partycję, która była /dev/nvme0n1p1
i uciekł sudo grub-install /dev/nvme0n1p1
, a potem sudo update-grub
.
To wielokrotnie przywracało mój główny rekord rozruchowy, ponieważ wydaje się, że istnieje nowa zasada Windows 10 nadpisywania MBR w przypadku drobnych aktualizacji .
Miałem inny problem, spowodowany (prawdopodobnie) przez boot-repair
wyczyszczenie moich /etc/grub.d/
szablonów, opisanych w moim pytaniu tutaj: Ubuntu 18.04 nie uruchamia się po instalacji systemu Windows 10
Jak wskazał komentarz @karels, konfiguracja grub jest generowana przy użyciu plików w /etc/grub.d
. Mój katalog zawierał tylko te /etc/grub.d/25_custom
, które zawierały dziwne pozycje menu wskazujące na nieistniejące obrazy .efi. Wyglądało na to, że moje /etc/grub.d
szablony zostały ukryte boot-repair
.
Naprawiłem to przez:
sudo mount /dev/sdxx /mnt
sudo cp /etc/grub.d/* /mnt/etc/grub.d/
sudo update-grub