Grub nie wyświetla opcji Windows 8 po podwójnym uruchomieniu

25

Tak więc z powodzeniem uruchomiłem podwójnie mój system Windows 8 z Ubuntu 12.04. Jednak nadal nie mam wygodnej metody wyboru systemu operacyjnego do załadowania podczas uruchamiania.

Po zainstalowaniu Ubuntu mój komputer nadal ładuje system Windows 8 bezpośrednio. Następnie dodałem grubx64.efido białej listy mojego programu ładującego. Ale potem moja maszyna ładuje Ubuntu bezpośrednio, nawet bez cienia GRUBa!

Użyłem naprawy rozruchu i otrzymałem ten adres URL paste.ubuntu : paste.ubuntu.com/1326074 . Po uruchomieniu naprawy rozruchu (i ponownym wyświetleniu grubx64.efipliku na biało ) GRUB pokazuje się teraz, ale bez żadnej opcji Windows 8!

Wreszcie pobiegłem sudo fdisk -li dało mi to:

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 750.2 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x6396389f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  1465149167   732574583+  ee  GPT
Partition 1 does not start on physical sector boundary.

Zgaduję, że mój problem ma coś wspólnego z ostrzeżeniem z fdiskgóry, ale nie wiem, co z tym zrobić. Jak mam teraz postępować?

Edytować

Mój etc/default/grubjest następujący:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Dla przypomnienia, właśnie tego użyłem podczas instalacji mojego podwójnego rozruchu. Samouczek (który wykorzystuje 11.10, muszę zauważyć), nie wspomina nic o tym problemie. Czy jest coś, czego nie powinienem był robić?

skytreader
źródło
Przeczytaj tę odpowiedź, która może ci pomóc: askubuntu.com/questions/84501/...
NickTux,
Aby uzyskać informacje: ubuntuforums.org/showpost.php?p=12342042&postcount=613
LovinBuntu

Odpowiedzi:

17

Po pierwsze, twój fdisk -lwynik nie stanowi problemu; który po prostu identyfikuje dysk jako system partycjonowania GUID Partition Table (GPT) . Aby wyświetlić partycje, należy użyć narzędzia zamiast GPT-włączone, takich jak gdiskalbo partedzamiast fdisk, który nie rozumie GPT.

Po drugie, możesz być w stanie uzyskać GRUB, aby ładował system Windows, dodając odpowiedni wpis, /etc/grub.d/40_customa następnie wykonując polecenie sudo update-grub. Wpis może wyglądać mniej więcej tak:

menuentry "Windows 8" {
    set root='(hd0,gpt1)'
    chainloader /EFI/microsoft/BOOT/bootmgfw.efi
}

Szczegóły mogą jednak zależeć od instalacji.

Po trzecie, jeśli uważasz, że REFInd jest brzydki, zawsze możesz wypróbować inny motyw REFInd lub utworzyć własny, jak opisano w dokumentacji rEFInd. Alternatywnie, jeśli wolisz moduł ładujący w trybie tekstowym, możesz ustawić tę textonlyopcję w refind.conf. Możesz osiągnąć podobny koniec, przechodząc na Gummiboot.

Po czwarte, jeśli rEFInd okresowo zgłasza błędy, zapisz je lub zrób zdjęcie aparatu cyfrowego i zgłoś je mi. (Jestem opiekunem rEFInd). Błędy nie mogą zostać naprawione, jeśli nikt ich nie zgłosi; lub jeśli nie są błędami w rEFInd, komunikaty mogą zawierać wskazówki, jak rozwiązać problem.

Wreszcie, możliwe jest uruchomienie Linuksa przez rEFInd (lub gummiboot) bez użycia GRUB; potrzebujesz tylko innego programu ładującego EFI. Moje osobiste preferencje to skrót EFI jądra Linuksa . Jest to jednak dostępne tylko w jądrach 3.3.0 i nowszych. Ponieważ Ubuntu 12.04 jest dostarczany z jądrem 3.2.0, musisz albo znaleźć gotową wersję 3.3.0 dla Ubuntu 12.04 (słyszałem o takich rzeczach, ale nie mam pod ręką żadnych linków) lub zbudować swój własne z kodu źródłowego. (Możesz także zainstalować Ubuntu 12.10, który jest dostarczany z odpowiednim jądrem, ale prawdopodobnie potrzebujesz wersji LTS, więc może to nie być optymalne.) Zobacz stronę dokumentacji rEFInd na temat uruchamiania Linuksaaby uzyskać dodatkowe informacje na temat konfiguracji. Możesz także użyć ELILO lub GRUB Legacy. Jeśli sprzeciwisz się opóźnieniu, możesz zmniejszyć wartość limitu czasu GRUB 2 i ustawić, aby menu nie wyświetlało się domyślnie.

Rod Smith
źródło
1
Po pierwsze, wow, nie zdawałem sobie sprawy, że jesteś opiekunem rEFInd. Następnie, odnośnie menu GRUB ... Próbowałem tego, ale to nie działa. Wśród innych ujęć w ciemności próbowałem ustawić moją partycję ESP, ale bezskutecznie. Próbowałem nawet użyć jednego z tych graficznych edytorów GRUB (zapomniałem nazwy). Wreszcie, w odniesieniu do rEFInd, błędy, które zgłasza, nie są krytyczne (zmodyfikuje mój post, aby to zauważyć) --- podczas uruchamiania po prostu mówi mi, że nie może znaleźć niektórych plików .efi. Nie mam pojęcia, skąd pochodzą.
skytreader
Sprawdź obecność określonego pliku na ESP. Upewnij się również, czy wielkość liter nazwy pliku jest prawidłowa. (Nie powinno to mieć znaczenia, ale znam jeden błędny EFI, w którym działa!) Jeśli to nie pomoże, jaki komunikat o błędzie (jeśli w ogóle) powraca, gdy GRUB próbuje uruchomić system Windows za pomocą tego wpisu?
Rod Smith
8

Uruchom system Ubuntu za pomocą płyty CD,
wybierz „Wypróbuj Ubuntu”,
Połącz się z Internetem,
Otwórz okno terminala za pomocą Ctrl- Alt-, ta następnie uruchomboot-repair

Jeśli naprawa rozruchu nie zostanie znaleziona, zainstaluj ją:

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

Kliknij opcję Zalecana naprawa. Napisz na papierze nowy adres URL, który się pojawi. Uruchom ponownie komputer, powinieneś dostać menu GRUB z dostępem zarówno do Ubuntu, jak i Windows. W razie problemów wskaż nowy adres URL.

Scott Stensland
źródło
7

Obie odpowiedzi /EFI/Microsoft/Boot/bootmgfw.efiprzydałyby się. Jednak hakowałem jak diabli, aby uzyskać odpowiednie ustawienia set root='(hd0,gpt1)'. Jeśli wiesz, to bardzo proste

Kiedy GRUB się c uruchomi : naciśnij dać polecenie lsw wierszu polecenia.
Otrzymasz listę partycji na dyskach twardych, takich jak (hd0, gpt1) itp.
Wpisz ls(hd0, gpt1) i wypróbuj inne.
Spójrz na etykietę, a jeśli mówi EFI, wiesz, że masz hit.

Ostrzeżenie: może być więcej partycji oznaczonych EFI, w zależności od sposobu instalacji Ubuntu. Wypróbuj je wszystkie.

Jørgen
źródło
6

Spróbuj uruchomić sudo update-grub. Mam nadzieję, że powinno to automatycznie rozpoznać Windows 8 i dodać go do GRUB-a i ponownie skonfigurować menu.

Jeśli to się nie powiedzie, udostępnij swój /etc/default/grubplik tutaj, a my popatrzymy.

Tom Klino
źródło
1
Cześć. sudo update-grubnie załatwił sprawy. Zredagowałem swoje pytanie, aby uwzględnić moje /etc/default/grub. Tymczasem studiuję odpowiedź, do której podał NikTh.
skytreader
3

Spróbuj utworzyć plik o nazwie, /etc/grub.d/30_windowsktóry zawiera:

#! /bin/bash
cat << EOF
menuentry "Windows 8" {
    insmod part_gpt
    insmod chain
    set root='(hd0,gpt1)'
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
EOF
Następnie uruchom sudo update-grubi uruchom ponownie.

Pełny samouczek

tradeJmark
źródło
1
  1. Pobierz super Grub i postępuj zgodnie ze wskazówkami. Bez tego nigdy nie wychodzę z domu. Bardzo pomocne, gdy menu grub nie jest wyświetlane.

  2. Musisz załadować na dysk CD i uruchomić go. Postępuj zgodnie z instrukcjami, które są z nim związane.

  3. Można go również użyć do naprawy systemu Windows. Ponieważ możesz uruchomić tylko system Windows 8, wybierz poprawkę dla systemu Linux.

Baw się z tym, ale przeczytaj instrukcje. Po chwili poczujesz się jak ekspert. RS

Lis
źródło
0

Moje najlepsze obejście

(* Ponieważ Tom nie działał, a link NikTha jest zbyt skomplikowany. Ale hej, dziękuję za kłopot!)

Zainstaluj REFInd .


Akceptuję własną odpowiedź, dopóki ktoś nie wskaże możliwej wady i poprawki lub nie rozwiązuje moich problemów (co niestety po prostu zadaje pytanie „Jak łatwo umieścić Windows 8 w GRUB ?”).

( Edytuj 8/6/17: Ostatecznie użyłem rEFInd, aby rozwiązać ten problem (patrz zaakceptowana odpowiedź powyżej).)

Daleko od idealnego rozwiązania, użycie rEFInd wydaje się bardzo hackingiem. Po pierwsze, wygląda brzydko (przepraszam, REFInd) i mówi mi, że odmówiono dostępu do niektórych plików .efi ({ext2_x64, hfs_x64, iso9660_x64, reiserfs_x64} .efi) przy uruchomieniu --- jednak nic krytycznego i odchodzi z przyciskiem naciśnij*. I na koniec, wybór Ubuntu efi wciąż ładuje GRUB, co jest całkowicie niepotrzebnym krokiem, przynajmniej ponieważ nie będę zawracał sobie głowy utrzymywaniem wielu wersji jądra.

W podsumowaniu...

Plusy: mój system działa teraz mniej więcej tak, jak moje podwójne buty przed UEFI. Minusy: wygląda brzydko plus dłuższy czas uruchamiania.

* Muszę zauważyć, że ten REFInd został zainstalowany za pośrednictwem install.shmojej partycji Ubuntu. Poprzednie doświadczenia z rEFInd (konfiguracja przez Windows) nie miały tego problemu.

skytreader
źródło
Jeśli poprzednia instalacja REEFInd za pośrednictwem systemu Windows nie powodowała błędów dotyczących plików, których nie można znaleźć, ale obecna instalacja z Linuksa, to przeczuwam, że dzieje się jedna z dwóch rzeczy: 1) Masz płytę główną z błąd w rozróżnianiu wielkości liter, w którym to przypadku poprawianie zawartości plików lub katalogów może poprawić sytuację; lub 2) Jest coś dziwnego w twoim ESP (na przykład FAT16 vs. FAT32 lub jakieś niewielkie uszkodzenie systemu plików). Niektóre EFI wydają się być bardzo wybredne na temat systemów plików na swoich ESP. Dokładne nazwy plików mogą być pomocne w zawężeniu problemu.
Rod Smith
Dobrze. Mój błąd. Nie oznacza to, że nie może znaleźć niektórych efis, po prostu odmówiono dostępu dla niektórych efis (więc zakładam, że wspomniane efi są tam, po prostu niedostępne?). Zauważyłem teraz te pliki, choć wciąż nie mam pojęcia, skąd pochodzą.
skytreader
„Odmowa dostępu” jest moim zdaniem niezwykłym błędem na EFI. AFAIK, EFI nie obsługuje własności ani uprawnień, podobnie jak Linux, więc nie ma sensu, chyba że wystąpił błąd odczytu dysku. Widziałem dziwne błędy zapisu dysku pod EFI, które wyparowały przy następnym restarcie. Jeśli ten problem będzie się powtarzał, możesz rozważyć uruchomienie testu SMART na dysku w przypadku awarii sprzętu, a także wykonać kopię zapasową i ponownie napisać ESP w przypadku wystąpienia dziwnych uszkodzeń systemu plików, których dosfsck nie może naprawić. Poza tym przydatne może być raportowanie, które pliki powodują problemy.
Rod Smith
1
Komunikat „odmowa dostępu” prawie na pewno dotyczy Bezpiecznego rozruchu. Taki komunikat pojawia się, jeśli rEFInd próbuje załadować niepodpisany plik binarny EFI w trybie bezpiecznego rozruchu. Zastanawiające jest w tym, że możesz w ogóle uruchomić rEFInd, ponieważ sam nie jest podpisany. Mam przeczucie, że masz w swoim oprogramowaniu jakieś dziwne błędne, częściowo aktywowane ustawienie Bezpiecznego rozruchu. W tej chwili najłatwiejszym rozwiązaniem jest całkowite wyłączenie Bezpiecznego rozruchu, ale są też inne. Więcej informacji można znaleźć na mojej stronie internetowej w witrynie rodsbooks.com/efi-bootloaders/secureboot.html .
Rod Smith
Na laptopie hp muszę nacisnąć klawisz F9, a następnie grub uruchamia się, w przeciwnym razie ładuje się system Windows. Istnieje również opcja uruchomienia systemu Windows z GRUB-a, chociaż nigdy go nie używam. Jeśli nudzę się w systemie Windows, po prostu go włączam i czekam na system Windows. Jeśli planuję uruchomić Ubuntu, po prostu wciskam F9, jak tylko się włączę.
geoffmcc