Boot-Repair создал слишком много пунктов меню grub для Windows

11

Я недавно установил Ubuntu в режиме двойной загрузки вместе с Windows 10 на ноутбуке HP. Первоначально я не мог загрузить Windows, используя grub, так как выбор параметров Windows просто возвращался к grub.

Затем я выполнил восстановление загрузчика, и все эти дополнительные параметры появились в меню grub.

Я могу открыть Windows, используя опцию «Windows UEFI bootmgfw.efi», но не используя стандартную опцию «Диспетчер загрузки Windows (в / dev / sda1).

Как мне уменьшить эти записи и почему я не могу загрузить Windows, используя последний вариант?

Вот изображение личинки. Первый вариант - это Ubuntu:

grub - 1-й вариант - это Ubuntu

Абхай
источник
3
Это не совсем дубликат этого. Мой не показывает записи ядра Linux. Плюс в том, что я не могу загрузить Windows с помощью опции менеджера загрузки.
Абхай
1
Вау, ты быстр! Вы должны принять только после того, как вы опробовали ответ, но этот, безусловно, поможет! ;-) Кроме того, я уже говорил, что перед тем, как начать, нужно сделать резервную копию или быть очень, очень осторожным с тем, что вы удаляете ?!
Fabby
1
Использование GRUB Customizer, как предполагает Фабби, вероятно, поможет. Что касается того, почему один вариант работает, а другой нет, нам нужно увидеть /boot/grub/grub.cfgфайл из вашей системы. Я подозреваю, что нерабочая запись предназначена для систем на основе BIOS, но ваша, очевидно, основана на EFI, поэтому опция режима BIOS (буквальная) не является стартовой.
Род Смит

Ответы:

5

Windows здесь не по теме, но ответ таков: это очень старая технология, а загрузочный сектор занимает всего 512 байт, поэтому он недостаточно велик, чтобы вместить все, что мы хотели бы.

Чтобы легко добавлять и удалять записи из grub all самостоятельно, пожалуйста:

  1. Сделайте полную резервную копию системы всего вашего компьютера, включая другие операционные системы, использующие CloneZilla Live
  2. Нет, я не шучу! Сначала сделайте полную резервную копию системы ! :-)
  3. Всякий раз, когда кто-то говорит вам, чтобы установить PPA, будьте очень осторожны, проводите собственное исследование, если вы действительно этого хотите, и только потом продолжайте
  4. Установите grub-customizer , выполнив следующие команды:

    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    
  5. Запустите grub-customizerи настройте ад из этого: введите описание изображения здесь

  6. Если у вас возникли серьезные проблемы, восстановите резервную копию системы.

Fabby
источник
1
У вас тонкий стиль ответов и даже в ваших комментариях. Честно говоря, мне действительно интересно, почему не каждый помечает правильный и полезный ответ как ответ, расстраивает меня, но я никогда не просил об этом. Я могу скопировать ваши комментарии и вставить их после моих ответов Ha
Хайтам А. Эль-Гариб,
Я только что дал вам один плюс на другой grubвопрос о скрытии меню загрузки. Однако в этом случае «Я относительно уверен», ответ, который я только что опубликовал в этой теме, является правильным. Это случилось со мной дважды, и каждый раз метод ремонта безупречен.
WinEunuuchs2Unix
FTR Я тоже проголосовал за этот ответ. Прошлогодний комментарий, возможно, был неверно истолкован.
WinEunuuchs2Unix
12

Каждый раз, когда я запускаю, в главное меню boot-repairдобавляются 5 дополнительных параметров загрузки Windows, grubкоторые не работают. В вашем случае он добавил 11 дополнительных записей!

grub.cfg показывает проблему

Секрет можно найти в /etc/grub/grub.cfgфайле:

### 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 ###

Раздел 30_os-proberсодержит «хорошие» grubпункты меню Windows, которые вы хотите сохранить. Раздел 25_customсодержит фиктивные записи, созданные boot-repair. Вы не можете редактировать файл конфигурации grub, потому что он будет просто перезаписан при следующем update-grubзапуске.


Раздел 25_customсоздан Boot Repair

В моей системе:

$ 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

Посмотрите на дополнительные параметры Windows, которые были настроены (и не работают):

$ 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

Это ошибочные записи, boot-repairсозданные в них /etc/grub.d/25_custom, которые впоследствии были скомпилированы в \boot\grub\grub.cfg.


Обратное изменение Boot Repair на 25_custom

Используйте sudo -H gedit /etc/grub.d/25_customи удалите все, кроме первых трех строк:

#!/bin/sh
exec tail -n +3 $0
  • Файл теперь содержит две строки с текстом и одну пустую строку.
  • Сохраните файл.
  • Беги sudo update-grub.
  • Перезагрузка.

Теперь ваше меню больше не раздуто с пятью поддельными пунктами меню Windows, которые не работают.

Еще раз проверьте, есть ли три строки в 25_custom

Запустите эту команду и убедитесь, что она 25_customимеет три строки:

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

Я добавил #комментарии, чтобы расшифровать wcвывод слов.

WinEunuuchs2Unix
источник
1
Я не могу ни опровергнуть свой собственный ответ, ни удалить его, но я могу оповестить вас ... :) Помните, что решение с графическим интерфейсом всегда получит больше голосов, чем текстовое решение, хотя текстовое решение обычно более точное (= технически лучше)
Fabby
1
Когда я только что получил ответ на свой ответ, я удивлен, увидев, что ваш не-GUI набрал больше голосов, чем мой! Отличная работа!
Fabby
1
@ Фабби Спасибо. Я только что проголосовал за тебя тоже :)
WinEunuuchs2Unix
Я могу опоздать с вопросом, но ... зачем вообще нужен 25_custom? Зачем нужны эти 3 строки?
Поумеранг
@poomerang Это естественный порядок пустого файла конфигурации в мире grub. Это легче соответствовать, чем бунтовать.
WinEunuuchs2Unix