
Мои проблемы начались, когда я разбил диск с Ubuntu 22.04 LTS, чтобы добавить Windows 11 (для разбиения диска я использовал загрузочный образ Ubuntu).
После установки Windows 11 мой компьютер начал загружать Windows 11 вместо того, чтобы показывать мне меню grub. Я исправил это, войдя в BIOS и переместив Ubuntu наверх. Теперь мой компьютер загружался в Ubuntu, но я по-прежнему не видел меню grub.
Посмотрев этот пост,Почему меню Grub не отображается при запуске моего компьютера?, мне удалось снова отобразить меню grub (@Akalgnotum). Но Windows 11 не была включена в меню.
Под руководством этого поста,GRUB не обнаруживает WindowsЯ запустил: ,
sudo os-prober
который вернул /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
. Затем я запустил sudo update-grub
, который дал мне это «предупреждение»:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-46-generic
Found initrd image: /boot/initrd.img-5.15.0-46-generic
Found linux image: /boot/vmlinuz-5.15.0-43-generic
Found initrd image: /boot/initrd.img-5.15.0-43-generic
Memtest86+ needs a 16-bit boot, that is not available on EFI, exiting
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done
Насколько я понимаю, Windows не будет добавлен, sudo update-grub
поскольку он не будет работать и использовать информацию, предоставленную os-prober.
Я понятия не имею, как это исправить. Любые предложения будут крайне полезны. Если нужна дополнительная информация, я с радостью ее предоставлю.
Спасибо!
решение1
После нескольких дней рытья интернета я нашел ответ!
Вся заслуга принадлежит этому посту:https://askubuntu.com/a/977251/1191399. Я просто повторяю это.
sudo fdisk -l
Вы должны получить длинный ответ, включающий что-то вроде этого:
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 874729471 873678848 416.6G Linux filesystem
/dev/nvme0n1p3 874729472 874762239 32768 16M Microsoft reserved
/dev/nvme0n1p4 874762240 1000214527 125452288 59.8G Microsoft basic data
- Получите UUIDРаздел EFI
sudo blkid /dev/nvme0n1p1
(замените nvme0n1p1 на нужный вам раздел)
Возвращаться:
dev/nvme0n1p1: UUID="3C26-6A4C" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3b64b43f-e7eb-4ac8-a32c-9af2edf64d0d"
Предоставьте себе разрешение на запись в файл «40_custom» в /etc/grub.d
Откройте терминал (ctrl+alt+t) и выполните следующие команды:
cd /etc/grub.d
sudo chmod o+w 40_custom
Откройте файл 40_custom
open ./40_custom
Напишите следующее в конце файла и замените 3C26-6A4C правильным UUID:
menuentry 'Windows 11' {
search --fs-uuid --no-floppy --set=root 3C26-6A4C
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
Сохраните файл и закройте редактор.
Вернитесь в терминал и удалите разрешения на запись.
sudo chmod o-w 40_custom
Обновите GRUB с помощью
sudo update-grub
(Необязательно) Вы можете подтвердить, что ваши изменения были успешными, перейдя в /boot/grub/grub.cfg и проверив строки 243-251. Они должны отражать ваши изменения в файле 40_custom
Перезагрузите компьютер.
reboot
решение2
Grub 2.06 отключает os-prober в /etc/default/grub.
https://www.phoronix.com/news/Ubuntu-22.04-Multi-Boot-Changes
Есть какая-то проблема безопасности с сканированием всех разделов в поисках других систем. Вы можете включить/выключить в /etc/default/grub.
Лучше всего запустить один раз, а затем скопировать загрузочную строфу Windows в 40_custom. Также это ускорит все будущие обновления, особенно если у вас много разделов для сканирования.
sudoedit /etc/default/grub
Затем измените на true/false по мере необходимости. True рекомендуется.
GRUB_DISABLE_OS_PROBER=true
Вы можете легко скопировать загрузочную строфу в 40_custom.
Один из способов исправить описания — переместить записи Windows в 40_custom и редактировать по своему усмотрению.
Скопируйте записи отсюда:
sudo cp -a /boot/grub/grub.cfg /boot/grub/grub.cfg.backup
sudoedit /boot/grub/grub.cfg
Скопируйте их и отредактируйте, оставив только нужные вам записи:
sudoedit /etc/grub.d/40_custom
После любых изменений в grub или скриптах grub необходимо обновить меню grub.
sudo update-grub
Меню Grub в Windows 10 и Ubuntu 14.04
Типичная загрузочная строфа UEFI Windows, обобщенная os-prober. Каждый ESP имеет уникальный UUID и partUUID. UUID в загрузочной строфе — это UUID вашего ESP.
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-F8FD-D8E5' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root F8FD-D8E5
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
Если вы используете вышеприведенную строфу, вам необходимо обновить свой UUID и нет необходимости в комментарии об использовании os-prober. Чтобы увидеть UUID ESP.
lsblk -f
Примечание: Grub загружает только работающую Windows. И UEFI Secure Boot должен быть отключен. Windows часто включает быстрый запуск Windows с обновлениями. Поэтому вам придется напрямую загружать Windows с помощью одноразового ключа загрузки UEFI, часто f12, но это зависит от поставщика.
решение3
1. Список дисков и разделов
lsblk
2. Определите диск, содержащий раздел Windows.
sudo cfdisk /dev/sd<YOUR DISK LETTER (NO NUMBER)>
- Для переключения между устройствами используйте клавиши с вертикальными стрелками.
- Раздел EFI будет представлять собой устройство, тип которого — «Система EFI».
- Скопируйте «UUID файловой системы» для вашего устройства EFI. (XXXX-XXXX)
- Выберите
[ Quit ]
с помощью клавиш со стрелками на клавиатуре. Нажмите Enter, чтобы выйти из cfdisk.
3. Открыть /etc/grub.d/40_custom
в вашем любимом редакторе ( nano
, vim
, code
)
sudo nano /etc/grub.d/40_custom
4. Добавьте пункт меню под комментарием.
menuentry 'Windows 11' {
search --fs-uuid --no-floppy --set=root <YOUR "File system UUID">
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}
5. Обновите конфигурацию grub.
sudo grub-mkconfig -o /boot/grub/grub.cfg
Завершить сsudo reboot
решение4
По крайней мере для меня это решило проблему. os-prober был отключен. Я на Ubuntu 22.04
sudo nano /etc/default/grub
НаборGRUB_DISABLE_OS_PROBER=false
Тогда беги
sudo update-grub