os-prober и update-grub не могут увидеть / найти работающую установку Windows
Я установил 12.04 рядом с установкой Windows 7 на жестком диске 3 ТБ. Если я использую F12 во время загрузки для проверки параметров загрузки из BIOS, Windows 7 и Ubuntu загружаются нормально, но Ubuntu GRUB дает мне только параметры Ubuntu.
Когда я пробую os-prober, я не получаю никаких результатов; update-grub тоже ничего для меня не делает. Я пытался модифицировать GRUB с помощью Grub Customizer, но, на самом деле, не совсем понимаю его тонкости.
Вот скриншот диска, сделанного с помощью Дисковой утилиты. Первый раздел - Windows, второй - общие данные (MP3, документы, фотографии и т. Д.). FAT 105 МБ - это "системный раздел EFI", а 134 МБ "Неизвестный" помечен как "зарезервированный раздел Microsoft"; 898 ГБ - это Ubuntu, а последние 5 ГБ - подкачка.
2 ответа
Прошло некоторое время с тех пор, как меня спросили, но я только что столкнулся с той же проблемой, когда os-prober не обнаруживает раздел Windows (с BitLocker). В моем случае это произошло после копирования данных на новый жесткий диск большего размера, что потребовало от меня воссоздания раздела EFI.
Кажется, что os-prober проверяет раздел EFI на жестком диске (
/dev/nvme0n1p1
в моем случае) и проверяет
bootmgfw.efi
файл в папке:
$ sudo os-prober
/dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
Но эта папка и файл, очевидно, были недоступны после воссоздания раздела EFI. Так что все, что мне нужно было сделать, это скопировать
Microsoft
каталог со старого жесткого диска на новый, а затем os-prober снова запустился, чтобы обнаружить раздел Windows, и Grub отлично его загружает. Смонтирован ли основной раздел Windows или нет, не имеет значения (как предлагается в других сообщениях по этой теме), а также не имеет значения, зашифрован ли основной раздел с помощью BitLocker.
Резюме: если предположить, что раздел EFI старого диска
/dev/sda1
и раздел EFI (FAT32) нового диска монтируется как
/boot/efi
, достаточно сделать
sudo mount /dev/sda1 /mnt
sudo cp -r /mnt/EFI/Microsoft /boot/efi/EFI/
sudo umount /mnt
sudo os-prober
# This should show the Windows partition as above. If ok, update grub.
sudo update-grub
Боковое примечание: по крайней мере, Ubuntu 22.04 (возможно, и некоторые более ранние версии) по умолчанию отключает запуск os-prober по соображениям безопасности:
$ sudo update-grub
Sourcing file `/etc/default/grub'
...
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
Чтобы заставить его работать, добавьте
GRUB_DISABLE_OS_PROBER=false
к
/etc/default/grub
и беги
update-grub
опять таки:
$ sudo update-grub
Sourcing file `/etc/default/grub'
...
Warning: os-prober will be executed to detect other bootable partitions.
Its output will be used to detect bootable binaries on them and create new boot entries.
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done
У меня была такая же проблема:
Windows 7 и Linux (Slax с Grub2 и Debian в моем случае) и os-prober
не распознает раздел Windows, когда я использовал update-grub
; Окна были опущены.
Я исправил проблему. Сначала я протестировал добавление записи для Windows 7 вручную в /boot/grub/grub.cfg
(update-grub
перезаписывает этот файл всякий раз, когда он запускается, поэтому внесенные в него изменения не являются постоянными).
Я перезагрузился, и Windows 7 появилась в меню и загрузилась нормально, кроме этой ошибки:
error: no suck device: xxxxxxxxxxx (disk ID)
Когда это произошло, я нажал Enter и Windows загрузилась нормально.
Я расследовал исполнение os-prober
командные и другие сценарии, участвующие в процессе распознавания ОС, и я проверяю вывод
sudo /etc/grub.d/30_os-prober 2>/dev/null
Windows не указан. Я открыл файловый менеджер Dolphin, чтобы просмотреть раздел Windows, искал UUID раздела и заменил его в /boot/grub/grub.cfg
устранить ошибку.
Я выполнил
sudo /etc/grub.d/30_os-prober 2>/dev/null
а винда тогда была в порядке
Я перезагрузил компьютер, пошел в консоль и выполнил
sudo /etc/grub.d/30_os-prober 2>/dev/null
и тогда Windows снова не была в списке.
Я открыл Dolphin, просмотрел раздел Windows, выполнил
sudo /etc/grub.d/30_os-prober 2>/dev/null
снова и Windows была в списке.
Я выполнил update-grub
и меню GRUB теперь в порядке.
Я думаю os-prober
требуется раздел (в случае NTFS, потому что раздел Debian всегда указан), смонтированный до того, как он сможет его найти. Я не выяснил почему os-prober
имеет такое поведение, но решение работает.