TL; DR, dodane w edycji:
Pytanie brzmi:
Jak sprawić, aby BIOS wolał GRUBa niż Windows Boot Manager na tej samej partycji rozruchowej UEFI?
Problem nie dotyczy Grub; Grub robi właściwą rzecz, kiedy uruchamia go BIOS. Problem nie polega na tym, że „dysk nie jest bootowalny”, ponieważ zarówno bootstrap UEFI systemu Windows, jak i bootstrap Grub UEFI są uruchamialne. Problem polega na tym, z którego bootowania UEFI BIOS wybiera rozruch.
Konfiguruję nowy komputer i chcę, aby domyślnie uruchamiał się w systemie Ubuntu, ale mam opcję wyboru systemu Windows podczas uruchamiania. Jest to szczególnie ważne, gdy moc gaśnie i wraca; Nie będzie mnie nawet w domu.
Zacząłem od zainstalowania Ubuntu 17.04 na moim wewnętrznym dysku NVMe, podzielonym na partycje za pomocą GPT, aby użyć połowy dysku i osobnej partycji rozruchowej UEFI. GRUB uruchamia się tak dobrze, a po uruchomieniu widzę menu rozruchowe GRUB, w którym mogę wybrać wszystkie elementy, o których wie GRUB.
Następnie zainstalowałem system Windows 10 Pro z ostatnio pobranego pliku ISO. Zainstalował Windows Boot Manager na tej samej partycji UEFI i pozostawił Ubuntu nienaruszony (świetnie!), Co dobrze wpasowuje się w Windows 10.
Jednak zrobił „coś”, co powoduje, że oprogramowanie układowe UEFI natychmiast wybiera Menedżera rozruchu systemu Windows, a nie GRUB po włączeniu. Jedynym sposobem na uruchomienie systemu Linux jest teraz użycie menedżera rozruchu systemu BIOS (F11 w moim systemie BIOS) i ręczne wybranie modułu ładującego GRUB. UEFI BIOS wie, że na partycji UEFI istnieje wiele instalacji rozruchowych, ponieważ mogę wybierać między nimi w menedżerze rozruchu. Jednak gdy jestem w menu ustawień w BIOS UEFI, pozwala mi to po prostu wybrać „UEFI uruchom mój dysk wewnętrzny” w wyborze priorytetu rozruchu - nie pozwala mi wybrać, który konkretny moduł ładujący na tej partycji ma użyć . I domyślnie wybiera Windows, a nie GRUB.
Witryny internetowe (i ta strona) sugerują, że starym sposobem naprawienia tego jest uruchomienie update-grub
(aby GRUB rozpoznał system Windows), a następnie grub-install
(aby ponownie umieścić GRUB na urządzeniu). Zrobiłem to, ale niestety nadal zachowuje się tak, jak opisane powyżej, w którym BIOS domyślnie wybiera Menedżera rozruchu systemu Windows. ( update-grub
odnajduje instalację Menedżera rozruchu systemu Windows i dodaje ją do menu, a ten element menu działa, gdy ręcznie wybieram partycję GRUB w menedżerze rozruchu UEFI).
Co mogę zrobić, aby GRUB był „domyślnym” uruchomieniem na mojej partycji rozruchowej UEFI?
Korzystanie z płyty głównej MSI X399 Carbon.
Druga edycja: Ponieważ poprawna odpowiedź ostatecznie pojawia się w komentarzu do odpowiedzi, powtórzę ją tutaj:
"BCDEDIT" in an admin shell on Windows is the working solution. The others don't work.
źródło
Odpowiedzi:
Można to zrobić na kilka różnych sposobów, w tym:
ubuntu
, biorąc pod uwagę, że zainstalowałeś go z tej dystrybucji).bcfg
polecenia w powłoce EFI w wersji 2, zgodnie z opisem na wiki Arch Linux. Jeśli twój system nie jest jeszcze skonfigurowany z łatwo dostępną powłoką, to podejście będzie prawdopodobnie trudniejsze w użyciu niż inne, ale jest niezależne od systemu operacyjnego.ubuntu
pozycję na liście EasyUEFI i przenieść ją na górę.bcdedit
- Polecenie Windowsbcdedit
może zmienić kolejność uruchamiania opartą na NVRAM. W szczególności otwarcie okna wiersza polecenia administratora i pisaniebcdedit /set "{bootmgr}" path \EFI\ubuntu\shimx64.efi
(opcjonalnie po nim,bcdedit /set "{bootmgr}" description "ubuntu"
aby opis był rozsądny) powinno załatwić sprawę.efibootmgr
- To narzędzie Linux może dostosować kolejność rozruchu. Rozpocznij odsudo efibootmgr
samodzielnego pisania , aby wyświetlić opcje. Zanotuj liczbę (Boot####
) związaną zubuntu
wpisem i bieżącą kolejność rozruchu (wBootOrder
wierszu). Następnie możesz wprowadzić nową kolejność rozruchu zubuntu
wpisem u góry, korzystając z-o
opcji. Na przykład, jeśli bieżąca kolejność rozruchu to 0000ubuntu
0003 0007,0004 i 0007, należy wpisaćsudo efibootmgr -o 0007,0000,0003,0004
kolejność rozruchu.refind-mkdefault
- Ten skrypt zawiera rEFInd i jest sposobem na zautomatyzowanie poprzedniej procedury. Jeśli nie używasz rEFInd, musisz pobrać skrypt tutaj i ustawić go jako wykonywalny (chmod a+x refind-mkdefault
). Następnie uruchom go jakosudo ./refind-mkdefault -L ubuntu
lub,sudo ./refind-mkdefault -L shimx64
aby GRUB był domyślnym wpisem rozruchowym.Z każdą z tych opcji wiążą się potencjalne problemy i komplikacje. Najbardziej prawdopodobnym czynnikiem komplikującym jest to, że istnieją stare lub alternatywne
ubuntu
wpisy rozruchu. Ważne jest, aby przenieść prawidłową pozycję do najwyższej pozycji w kolejności rozruchu; jeśli przesuniesz niewłaściwy, skończysz albo bez zmian w zachowaniu, albo z niefunkcjonalnym uruchomieniem, co utrudniłoby uruchomienie. Jeśli używaszefibootmgr
,BootCurrent
linia może pomóc ci określić, którą opcję powinieneś ustawić jako domyślną.Istnieją inne sposoby, aby to zrobić, które są przesadne. Ponowna instalacja GRUB-a (za pośrednictwem Boot Repair lub
grub-install
) powinna załatwić sprawę, na przykład. Podejścia te wiążą się jednak z ryzykiem uszkodzenia znanej konfiguracji GRUB.Zauważ też, że niektóre EFI są błędne i istnieją inne problemy, które mogą utrudnić niezawodne uruchomienie GRUB-a. Jeśli napotkasz takie problemy, możesz sprawdzić następujące pytania i odpowiedzi w AskUbuntu:
źródło
sudo efibootmgr -n 0002
jest znacznie lepsze niż modyfikowanie bieżącego porządku SO. Zmienia sięBootNext: 0001
i wychodziBootCurrent: 0002
na następny raz, pozostawiając bieżące wpisy GRUB-a nietknięte. Po prostu dodaj bashchmod +x
i zawiń to polecenie przy ponownym uruchomieniu.Miałem dokładnie ten problem w ciągu ostatnich kilku tygodni. Zorientowałem się, korzystając z tych opcji. Przed wykonaniem którejkolwiek z tych czynności zalecam przejście do BIOS / UEFI i sprawdzenie kolejności rozruchu oraz upewnienie się, gdzie najpierw instalowany jest grub.
Więc widzę, że masz dwie opcje.
opcja 1
Polecam wam najpierw instalację systemu Windows 10 . Następnie zainstaluj ubuntu. Ale wiem, że to trochę tabu, mówiąc po prostu „zainstaluj ponownie oprogramowanie”, więc zaoferuję również alternatywę.
Opcja 2
Przy obecnej konfiguracji zalecam uruchomienie komputera z dyskiem CD / flash Live Ubuntu oraz instalację i uruchomienie
boot-repair
. Kliknij opcję „Zalecana naprawa” i postępuj zgodnie z podanymi instrukcjami. Przejrzyj go uważnie i przeczytaj wszystkie polecenia przed wykonaniem. Spowoduje to zastąpienie bieżącej instalacji gruba nową, która, mam nadzieję, powinna to naprawić.źródło
Widzę kilka rozwiązań:
efibootmgr
. W systemie Windows nie jestem pewien, ale myślę, że możesz uruchomić opcję odzyskiwania, która pozwala skonfigurować UEFI. Lub może wolisz zainstalować coś takiego jak rEFInd.boot
.źródło
efibootmgr
nie działa, wiem, że nie kupię MSI.Właśnie wymieniłem płytę główną w laptopie i grub zniknął całkowicie.
Wiem, że jest to oznaczone jako naprawione, ale pomyślałem, że może ci się przydać.
Aby grub pojawił się jako opcja rozruchu. Musiałem dodać EFI do bios.
Poszedłem do „opcji listy rozruchowej” w moim biosie. Kliknął „Dodaj opcję rozruchu” (jestem świadomy, że jest to specyficzne dla systemu BIOS). To dało mi opcję nazwy pliku, która w moim przypadku była
\EFI\ubuntu\grubx64.efi
i nadała mu nazwęgrub
Następnie przesunąłem
grub
wpis na początek sekwencji rozruchowej, a teraz pokazuje się jako wpis domyślny.To znaczy mówię, że może być konieczne zlokalizowanie poprawnego pliku EFI i przeniesienie go na początek sekwencji / kolejności rozruchu.
źródło
Możliwym rozwiązaniem byłoby ręczne edytowanie pliku / etc / default / grub.
sudo vim /etc/default/grub
Domyślny wpis jest określony przez
GRUB_DEFAULT=
ustawienie w / etc / default / grub. Pierwsza „pozycja menu” ma wartość „0”. Jeśli Ubuntu jest drugim wpisem na ekranie rozruchowym, ustaw GRUB_DEFAULT = 1.Następnie musisz uruchomić polecenie, aby zaktualizować grub config:
update-grub
Inną opcją byłoby instalowanie grub-customizera i użycie jego GUI do skonfigurowania priorytetu rozruchu.
źródło