Podczas naprawy systemu utworzono zbyt wiele pozycji menu grub dla systemu Windows

11

Niedawno zainstalowałem Ubuntu podczas podwójnego rozruchu wraz z Windows 10 na laptopie HP. Początkowo nie mogłem uruchomić systemu Windows za pomocą grub, ponieważ wybranie opcji systemu Windows po prostu zapętliłoby się z powrotem do grub.

Następnie wykonałem naprawę rozruchu i wszystkie te dodatkowe opcje pojawiły się w menu grub.

Jestem w stanie otworzyć system Windows przy użyciu opcji „Windows UEFI bootmgfw.efi”, ale nie przy użyciu standardowej opcji „Windows Boot Manager (on / dev / sda1).

Jak zmniejszyć te wpisy i dlaczego nie mogę uruchomić systemu Windows za pomocą tej drugiej opcji?

Oto obraz gruba. Pierwsza opcja to Ubuntu:

grub - pierwszą opcją jest Ubuntu

Abhay
źródło
3
To nie jest tak naprawdę duplikat tego. Mój nie wyświetla wpisów jądra Linuksa. Plus fakt, że nie jestem w stanie uruchomić systemu Windows za pomocą opcji menedżera rozruchu.
Abhay
1
Wow, jesteś szybki! Powinieneś zaakceptować dopiero po wypróbowaniu odpowiedzi, ale ta z pewnością pomoże !!! ;-) Ponadto, czy wspominałem, że naprawdę powinieneś zrobić kopię zapasową przed rozpoczęciem lub być naprawdę bardzo ostrożnym w kwestii tego, co usuniesz ?!
Fabby
1
Korzystanie z GRUB Customizer, jak sugeruje Fabby, prawdopodobnie pomoże. Jeśli jedna z opcji działa, a inna nie, musimy zobaczyć /boot/grub/grub.cfgplik z twojego systemu. Podejrzewam, że niedziałający wpis jest przeznaczony dla systemów opartych na BIOS-ie, ale twój jest wyraźnie oparty na EFI, więc opcja trybu BIOS to (dosłownie) non-starter.
Rod Smith

Odpowiedzi:

5

Windows jest tutaj nie na temat, ale odpowiedź jest taka, że ​​jest to bardzo stara technologia, a sektor rozruchowy ma tylko 512 bajtów, więc nie jest wystarczająco duży, aby pomieścić wszystko, co chcielibyśmy mieć.

Aby łatwo dodawać i usuwać wpisy z GRUB-a we własnym zakresie:

  1. Wykonaj pełną kopię zapasową systemu całego komputera, w tym innych systemów operacyjnych, korzystając z CloneZilla Live
  2. Nie, nie żartowałem! Najpierw wykonaj pełną kopię zapasową systemu ! :-)
  3. Ilekroć ktoś powie Ci, aby zainstalować PPA, bądź bardzo ostrożny, zrób własne badania, jeśli tego naprawdę chcesz, i dopiero wtedy kontynuuj
  4. Zainstaluj grub-customizer , wykonując następujące polecenia:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    
  5. Zacznij grub-customizeri dostosuj do diabła: wprowadź opis zdjęcia tutaj

  6. W przypadku poważnych problemów przywróć kopię zapasową systemu.

Fabby
źródło
1
Masz delikatny styl w odpowiedziach, a nawet w swoich komentarzach. Naprawdę zastanawiam się, dlaczego nie wszyscy zaznaczają poprawną i przydatną odpowiedź jako odpowiedź, frustrują mnie, ale nigdy o nią nie prosiłem. Mogę skopiować twoje komentarze i wkleić je po moich odpowiedziach 😂
Haitham A. El-Ghareeb
Właśnie dałem ci plus na inne grubpytanie dotyczące ukrywania menu rozruchu. Jednak w tym przypadku „jestem względnie pewien” odpowiedź, którą właśnie opublikowałem w tym wątku, jest poprawna. Zdarzyło mi się to teraz dwa razy i za każdym razem metoda naprawy jest bezbłędna.
WinEunuuchs2Unix
FTR Poparłem również tę odpowiedź. Komentarz z zeszłego roku mógł zostać źle zinterpretowany.
WinEunuuchs2Unix
12

Za każdym razem, gdy uruchamiam boot-repair, dodaje 5 dodatkowych opcji rozruchu systemu Windows do mojego grubmenu głównego , które nie działają. W twoim przypadku dodano 11 dodatkowych wpisów!

grub.cfg pokazuje problem

Sekret można znaleźć w /etc/grub/grub.cfgpliku:

### BEGIN /etc/grub.d/25_custom ###
    menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi
### END /etc/grub.d/25_custom ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p2)' --class windows --class os $menuentry_id_option 'osprober-efi-D656-F2A8' {
    savedefault
    insmod part_gpt
    insmod fat
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  D656-F2A8
    else
      search --no-floppy --fs-uuid --set=root D656-F2A8
    fi
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-9478-B6E2' {
    savedefault
    insmod part_gpt
    insmod fat
    set root='hd0,gpt1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  9478-B6E2
    else
      search --no-floppy --fs-uuid --set=root 9478-B6E2
    fi
    chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
### END /etc/grub.d/30_os-prober ###

Ta sekcja 30_os-proberzawiera „dobre” grubpozycje menu Windows, które chcesz zachować. Sekcja 25_customzawiera fałszywe wpisy utworzone przez boot-repair. Nie można edytować pliku konfiguracyjnego grub, ponieważ zostanie on po prostu nadpisany przy następnym update-gruburuchomieniu.


Sekcja 25_customzostała utworzona przez Boot Repair

W moim systemie:

$ locate 25_custom
/boot/efi/boot-repair/log/20171111_224241/nvme0n1p5/25_custom
/boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
/etc/grub.d/25_custom

Spójrz na dodatkowe opcje systemu Windows, które zostały skonfigurowane (i nie działają):

$ cat /boot/efi/boot-repair/log/20171208_030854/nvme0n1p5/25_custom
#!/bin/sh
exec tail -n +3 $0

menuentry "Windows UEFI bootmgfw.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/Boot/bkpbootx64.efi
}

menuentry "EFI/ubuntu/fwupx64.efi" {
search --fs-uuid --no-floppy --set=root D656-F2A8
chainloader (${root})/EFI/ubuntu/fwupx64.efi
}

menuentry "Windows UEFI bootmgfw.efi sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

menuentry "Windows Boot UEFI loader sda1" {
search --fs-uuid --no-floppy --set=root 9478-B6E2
chainloader (${root})/EFI/Boot/bkpbootx64.efi

Są to błędne wpisy boot-repairutworzone w /etc/grub.d/25_customktóre następnie zostały zebrane w \boot\grub\grub.cfg.


Zmiana Odwrotnej naprawy rozruchu na 25_custom

Użyj sudo -H gedit /etc/grub.d/25_customi usuń wszystko oprócz pierwszych trzech wierszy:

#!/bin/sh
exec tail -n +3 $0
  • Plik zawiera teraz dwie linie z tekstem i jedną pustą linię.
  • Zapisz plik.
  • Uruchom sudo update-grub.
  • Restart.

Teraz twoje menu nie jest już wypełnione pięcioma fałszywymi pozycjami menu Windows, które nie działają.

Dokładnie sprawdź, czy są trzy linie 25_custom

Uruchom to polecenie i sprawdź, czy 25_customma trzy linie:

$ wc /etc/grub.d/25_custom
      3       6      30
#     ^       ^       ^
#     |       |       +--- Number of characters
#     |       +----------- Number of words
#     +------------------- Number of lines

Dodałem #komentarze do wyniku rozszyfrowania wc(liczenia słów).

WinEunuuchs2Unix
źródło
1
Nie mogę głosować za własną odpowiedzią ani jej usuwać, ale mogę głosować za tobą ... :) Uwaga: rozwiązanie GUI zawsze otrzyma więcej głosów niż rozwiązanie tekstowe, chociaż rozwiązanie tekstowe jest generalnie dokładniejsze (= technicznie lepsze)
Fabby,
1
Gdy właśnie otrzymałem głos na moją odpowiedź, jestem zaskoczony, widząc, że Twój interfejs graficzny nie zdobył więcej głosów niż mój! Dobra robota!
Fabby
1
@Fabby Thanks. Właśnie oddałem wasze głosowanie :)
WinEunuuchs2Unix
Mogę spóźnić się z pytaniem, ale ... dlaczego w ogóle potrzebuję niestandardowego? Dlaczego te 3 linie są potrzebne?
poomerang
@poomerang Jest to naturalna kolejność pustych plików konfiguracyjnych w świecie gruba. Łatwiej jest się dostosować niż zbuntować.
WinEunuuchs2Unix