LINUX.ORG.RU

Аккуратнее с UEFI

 , , ,


1

2

TL;DR: То ли OpenBSD, то ли efibootmgr может сломать вам UEFI, но беспокоиться не стоит.

Грех не поразвлечься в пятницу. Именно для этого и создан этот день недели.

Давно посещали мысли попробовать OpenBSD на своём основном ноутбуке. Он у меня слаб и убог, но возложенные на него задачи выполняет сносно. Зовут героя Lenovo IdeaPad 320-15ABR.

Так уж завелось, что основная и единственная ОС запускается через UEFI, а диск размечен в GPT. Всё соответствует реалиям 2018-го года. OpenBSD с позапрошлой, если не ошибаюсь, версии поддерживает загрузку с UEFI, но, как выяснилось, не совсем.

Установка прошла как обычно. Через проводное соединение. Особенность была в том, что я сидел и переводил сектора в гигабайты, чтобы не накосячить при разметке диска. Автоматическая разметка почему-то использовала только 4 гигабайта из 50-гигабайтного OpenBSD area, поэтому пришлось всё переделывать руками.

После первой перезагрузки ничего не произошло. OpenBSD не умеет работать с записями EFI и в список загрузчиков себя добавить не может. Вместо этого он просто кладёт свой .efi-файл в ESP-раздел по адресу EFI/BOOT/BOOTX64.EFI, рассчитывая, что UEFI автоматически подгрузит это дело, т. к. UEFI в случае отсутствия других загрузчиков загружает именно это EFI-приложение. Сразу видно, что OpenBSD не рассчитана на мирное сосуществование с другими ОС.

Загрузилась основная ОС — Arch Linux. Я же как дурачок взял, расположил загрузчик OpenBSD в более удобное место (EFI/OpenBSD/OpenBSD.efi) и добавил в список загрузчиков EFI с помощью efibootmgr.

После очередной перезагрузки всё казалось правильным: загрузилась OpenBSD, которая автоматически встала на первое место в списке. Перезагружаюсь ещё раз, чтобы проверить, на месте ли Arch. После нажатия F12 (список загрузчиков) во время логотипа Lenovo ноутбук просто перезагрузился. Пытаюсь зайти в настройки BIOS — тот же результат.

Грубо говоря, ноутбук теперь может загрузить только OpenBSD и ничего кроме. Вынул жёсткий диск и вставил загрузочную флешку с Линуксом — бесконечная перезагрузка. Кирпич?

После десяти минут тупняка нашёл решение. Через OpenBSD подставил имевшийся от Арча grubx64.efi вместо OpenBSD.efi, рискуя получить окончательный кирпич. Однако GRUB загрузился и мне удалось с помощью того же efibootmgr всё вернуть как было.

Причина до конца не ясна, но оказалось вот что. Порядок загрузки в UEFI определяется переменной BootOrder — это список из номеров загрузчиков. В данном ноутбуке UEFI оказался маленько кривоват: утилита настройки UEFI/BIOS (Setup) вынесена в самостоятельный пункт меню с собственной позицией в BootOrder.

Видимо, после махинации с установкой загрузчика OpenBSD в EFI-шный список случилось страшное: Setup исчез из BootOrder. Там остался только OpenBSD. Таким образом, ноутбуку без жёсткого диска было непонятно, что грузить. Но тогда он мог хотя бы попытаться загрузить флешку или показать меню по F12?..

Так или иначе, аккуратнее с UEFI. По возможности пользуйтесь старым добрым режимом BIOS — он гораздо надёжнее.

★★★

О, в OpenBSD Ubuntu-баги бэкпортируют.

Deleted ()

А можно покороче? У меня что-то совсем желания нет читать эту портянку, но суть интересна.

r3lgar ★★★★★ ()
Ответ на: комментарий от r3lgar

Суть:

В данном ноутбуке UEFI оказался маленько кривоват: утилита настройки UEFI/BIOS (Setup) вынесена в самостоятельный пункт меню с собственной позицией в BootOrder.

gadfly ★★ ()
Ответ на: комментарий от gadfly

А, эт норм… Это восстанавливается элементарно.

r3lgar ★★★★★ ()

Так или иначе, аккуратнее с UEFI

Это у тебя ЭФИ кривой. И да, все переменные скидываются вытаскиванием CMOS батарейки.

BceM_IIpuBeT ★☆☆☆☆ ()

Мастурбейтинг манкис убивают ноутбуки!

anonymous ()

В данном ноутбуке UEFI оказался маленько кривоват

Lenovo. Что ты хотел? Они и ACPI table нормально написать не могут.

a1batross ★★★★★ ()
Последнее исправление: a1batross (всего исправлений: 1)

просто не надо было удалять bootx64.efi линуксовый — этот файл всегда будет доступен для загрузки) зачем стена текста то

anonymous ()
Ответ на: комментарий от Bruce_Lee

Сам хотел бы знать. У меня же каждый запуск в dmesg срань с ACPI table parse error. Ну что-то вроде того.

a1batross ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.