Вы уверены, что метка GRUB (hd0)
относится к /dev/sda
? Если /boot/grub/device.map
существует, он может определять другой порядок маркировки, поскольку у вас, по-видимому, есть как минимум sda
и sdb
.
Подождите... хотя ваша система загружается в родном стиле UEFI, похоже, вы создали загрузочный раздел FreeBSD в стиле BIOS -. Это, вероятно, не сработает, так как загрузочный код в таком разделе представляет собой старый -стиль 16 -битного кода, а UEFI будет ожидать современный 64 -битный код.
Вероятно, вы следовали инструкциям, предполагающим, что система загружается в устаревшем стиле BIOS -, даже если используется разметка GPT. Собственный загрузчик Windows UEFI на вашем /dev/sdb1
и «Добавление записи меню загрузки для конфигурации прошивки EFI» предполагают, что ваша система в настоящее время не настроена для работы таким образом.
Вместо этого вы можете сделать что-то подобное с конфигурацией GRUB для FreeBSD:
menuentry "FreeBSD" {
insmod ufs2
search --file --set root --no-floppy /boot/loader.efi
chainloader /boot/loader.efi
}
Если я правильно понял, что я гуглил (Я не использовал современные версии FreeBSD ), это должно найти UEFI-версию кода загрузчика BSD на вашем /dev/sda6
и загрузить его прямо оттуда -независимо от того, какую метку (hdN)
GRUB присваивает sda
.
«Стандартным» способом с UEFI было бы создание каталога /EFI/FreeBSD
в вашем системном разделе EFI (, по-видимому,/dev/sda4
)и копирование FreeBSD /boot/loader.efi
туда. Но поскольку в GRUB есть модуль для прямого чтения UFS2, вышеописанное тоже должно работать нормально.
Если ваш /dev/sda4
в настоящее время смонтирован в /boot/efi
, как обычно делает Debian, то стандартный загрузочный каталог FreeBSD в стиле UEFI -должен быть создан в /boot/efi/EFI/FreeBSD
.
Поскольку UEFI может просто обрабатывать любой загрузчик как обычный файл в разделе ESP, вообще не должно быть необходимости в отдельном загрузочном разделе FreeBSD :, полный загрузочный код FreeBSD может содержаться в файле loader.efi
.