Вопрос Как проверить, работает ли GRUB в режиме EFI или BIOS?


Есть ли команда в оболочке grub, которая указывает, указывает ли машина на прошивку EFI или BIOS?

Я использую GRUB 2.00 в 2010 Mac Pro. Конечно, этот компьютер имеет прошивку EFI. Но я пробовал пару дней, чтобы загрузить его в Ubuntu в режиме эмуляции BIOS из-за отсутствия драйверов дисплея NVIDIA. Я понимаю, что к тому времени, когда GRUB работает, решение использовать эмуляцию EFI или BIOS уже сделано. Итак, как я могу проверить GRUB?


1
2018-01-03 22:51


происхождения




ответы:


Начиная с GRUB 2.00, если GRUB работает достаточно хорошо, чтобы перейти в нормальный режим, а не в режим спасения, «echo $ grub_platform» из оболочки GRUB отобразит «pc» в режиме BIOS и «efi» в режиме UEFI.

Конструкция BIOS соответствует пакету grub-pc, а сборка UEFI соответствует пакету grub-efi-amd64 (или, реже, grub-efi-ia32).


2
2018-01-04 02:32



Спасибо. Я просто попробовал это прямо с Live CD (на USB) и получил «efi». Это хорошая диагностика, потому что я понимаю, что Ubuntu не будет загружаться в режим BIOS после этого указания. Теперь, чтобы выяснить, как получить «ПК» ... Здесь может быть немного места для маневра. Я вижу, что документация для grub_platform говорит, что она указывает платформу, для которой был построен GRUB. Кажется, что идеи эквивалентны мне, но я не эксперт здесь. Я не думаю, что сборка «efi» GRUB даже будет работать в режиме BIOS, верно? - NoahR
Верный; каждая сборка GRUB использует вызовы прошивки, специфичные для типа прошивки платформы. Для загрузки живого USB-накопителя в режиме BIOS вам нужно будет искать подходящую версию уровня прошивки; на Mac это может быть связано с Boot Camp, но прошло много времени с тех пор, как я посмотрел на один из них. Обратите внимание, что при загрузке живого изображения Ubuntu (в отличие от установленной системы) в режиме BIOS вы фактически получите ISOLINUX, а не GRUB. - Colin Watson
Как я могу использовать оператор if с этим? я пытался if [ ${$grub_platform} == "pc" ] { ... }, но это не сработало - оно всегда оценивалось как истинное. - starbeamrainbowlabs
Этот синтаксис неверен несколькими способами. if [ ${grub_platform} == "pc" ]; then ...; fi с большей вероятностью будет работать. - Colin Watson