Что делает «--no-nvram» при установке grub?

Я пытался установить grub в раздел efi на прошлой неделе и получаю:

Could not prepare Boot variable: No space left on device
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

Но я обнаружил, что при использовании --no-vram я не получаю ошибок при установке grub. Я новичок в Linux и хочу знать, что стало причиной ошибки.

1
задан 2 September 2019 в 22:13

2 ответа

С BIOS материнская плата хранит порядок физических устройств загрузиться от в энергонезависимой памяти (NVRAM), таким образом, это переживает перезагрузку. Это гарантирует, когда Вы поворачиваетесь, машина на материнской плате все еще загружает устройства в порядке, к которому Вы (или фабрика) настроили ее. BIOS затем попытается выполниться MBR в первом логический адрес блока (LBA) из каждого устройства до одного из них работы . При ручном выборе устройства для начальной загрузки во время запуска, он сделает, как Вы просите и делаете попытку начальной загрузки от первого LBA того устройства вместо этого.

Принятие диска отформатировано с [1 115] GPT, когда материнская плата использует UEFI начальная загрузка , MBR не должен содержать загрузчик (или ничто в этом отношении). Вместо этого диск содержит Системный раздел EFI (ESP) , который является по существу FAT - отформатированный раздел, содержащий код загрузчика, сохраненный в файлах. Файловая система FAT может также содержать другие файлы, необходимые загрузчику (например, логотипы и фоны, используемые экраном-заставкой во время процесса начальной загрузки).

Для UEFI, загружающегося на материнской плате UEFI, предполагается, что диск является частью системы поэтому, когда Вы установка личинки , часть того процесса установки должна помещать запись в NVRAM материнской платы, содержащий путь загрузчика в ESP (см. раздел 3.5.1 Начальных загрузок с помощью Простого Файлового протокола спецификация UEFI). Эта запись может затем быть установлена на значение по умолчанию или просто представлена как опция. Для получения дополнительной информации о Загрузчиках EFI я настоятельно рекомендую читать Rod Smith Руководящие Загрузчики EFI для Linux.

Для устройства, которое является не обычно подключено к материнской плате (т.е. жесткий диск USB) не имеет смысла хранить эту запись в NVRAM материнской платы, поскольку устройство не могло бы быть там во время большинства начальных загрузок. Я верю --no-nvram, опция говорит grub-installer не изменять NVRAM материнской платы с этой целью.

, Кроме того, если материнская плата проинструктирована для начальной загрузки от съемного устройства, для которого она не имеет никакой записи загрузки в своем NVRAM, UEFI определяет путь по умолчанию для нее, чтобы попытаться загрузиться от (см. раздел 3.5.1.1 Поведения Начальной загрузки Съемных носителей из спецификации UEFI). Путь, относительно корня ESP \EFI\BOOT\BOOT{architecture}.EFI со следующим {architecture} с.

  • 32-разрядный в †’ IA32
  • x64 в †’ x64
  • архитектура Itanium в †’ IA64
  • архитектура AArch32 в †’ ARM
  • архитектура AArch64 в †’ AA64

я верю --removable, опция говорит grub-installer использовать этот путь, а не его предпочтительный путь, вероятно, необходим, бы, не изменяя NVRAM материнской платы иначе нужно было бы вручную указать загрузчик после ручного выбора съемного устройства.

Примечание: Я говорю, "верят" выше, потому что я не протестировал это.

Редактирование:

я понимаю, что ни одно из этого не объясняет, почему Ваша материнская плата не позволит GRUB изменять свои записи. Но надо надеяться который объясняет, почему тот переключатель помогает. Сообщение об ошибке, которое Вы предоставили, предполагает, что все записи загрузки материнской платы были заполнены и, вполне обоснованно, для [1 111] не уместно решить который из Ваших записей загрузки для перезаписи. Вы могли попытаться использовать efibootmgr, чтобы отобразить Ваши записи загрузки и удалить некоторых, что Вам не нужно. ответ Rod Smith к [1 124] этот вопрос должен показать Вам как.

0
ответ дан 23 October 2019 в 13:33

Я искал высоко и низко для действительно хорошего объяснения. Лучшее, которое я могу придумать до сих пор, man grub-install объяснение:

   --no-nvram
          don't update the `boot-device'/`Boot*' NVRAM variables. This option is only
          available on EFI and IEEE1275 targets.

Первым хитом поиска Google" определения переменной "NVRAM является странно Wikileaks, потому что ЦРУ использует для шпионажа:

Объясненные переменные NVRAM

NVRAM является энергонезависимой RAM, которая используется в EFI для хранения переменных, которые должны сохраниться между начальными загрузками. Многие из этих переменных NVRAM архитектурно определяются, и установка недопустимых опций к NVRAM могла заставить машину не мочь загрузиться.

Во время процесса запуска несколько драйверов и приложений могут полагаться на значения NVRAM, чтобы помочь им делать свои работы. Ниже схема от спецификации UEFI 2.56, которая показывает этот случай.

0
ответ дан 7 December 2019 в 18:55

Другие вопросы по тегам:

Похожие вопросы: