обновление-grub против grub-install?

Некоторые примеры, найденные в Интернете, говорят, что update-grub следует запускать ПОСЛЕ grub-install. Другие меняют порядок. Что правильно?

Если у меня есть две установки Linux (одна на sda и одна на sdb), если я запускаю update-grub при установке sda, то установка sda будет размещена в верхней части меню загрузки. Если я запустлю update-grub для установки sdb, она поместит установку sdb вверху меню.

Предполагая, что DEFAULT = 0, теоретически это должно позволить мне выбрать мою ОС, выбрав загрузочное устройство в BIOS. Изменяет ли «grub-install / dev / sda» меню загрузки sda в соответствии с последним «update-grub», независимо от того, было ли оно запущено из версии sda или sdb Linux?

One Solution collect form web for “обновление-grub против grub-install?”

update-grub , по крайней мере в Debian и его родственниках, таких как Ubuntu, по сути является просто оболочкой для grub-mkconfig . Таким образом, он создает / обновляет / восстанавливает конфигурацию GRUB, а не сам загрузчик.

Что на самом деле делает grub-install , зависит от того, какую версию GRUB вы используете: традиционный BIOS GRUB или UEFI GRUB?

В традиционном BIOS GRUB grub-install будет (пере) записывать часть GRUB, встроенную в основную загрузочную запись, и кодировать в нее номера блоков физического диска, с которых читать следующую часть GRUB. Он также определит, с какого раздела будет считан фактический файл конфигурации GRUB ( /boot/grub/grub.cfg ). Важным фактором здесь является файл /boot/grub/device.map , который сообщает GRUB о том, как нумерация устройств BIOS (и, следовательно, GRUB) соответствует дисковым устройствам Linux.

С помощью UEFI GRUB основная часть загрузчика GRUB будет расположена в виде файла в системном разделе EFI, обычно в виде /boot/efi/EFI//grubx64.efi или аналогичного. Этот путь к загрузчику сохраняется в системной памяти NVRAM (= место, где хранятся настройки BIOS) в переменных загрузки UEFI. Основная часть GRUB может быть полностью автономной (и должна использоваться, если используется Secure Boot!) Или может загружать дополнительные функции в виде модhive GRUB, как правило, из каталога /boot/grub в дистрибутиве Linux, частью которого она является.

Переменные загрузки UEFI идентифицируют диск, который система должна использовать для поиска системного раздела EFI и файла загрузчика внутри него. Вы можете просмотреть эти переменные самостоятельно, используя efibootmgr -v . Команда grub-install обновит эти переменные, если вы не используете опцию --no-nvram чтобы указать иное.

В результате, как с традиционным BIOS, так и с UEFI, запуск grub-install может обновить ваш загрузчик для чтения совершенно другого файла конфигурации GRUB на совершенно другом диске – хотя детали этого процесса будут совершенно другими.

С помощью UEFI вы можете изменить выбор загрузочного устройства из ОС, используя либо efibootmgr либо grub-install . Но grub-install является огромным перебором для этого: если обе ваши установки имеют UEFI и имеют свои собственные отдельные разделы ESP, у них будут свои собственные загрузочные переменные UEFI, и выбор между ними может быть легко сделан с помощью efibootmgr или даже в UEFI BIOS настройки.

В традиционном BIOS все немного сложнее: вам нужно убедиться, что каждая установка /boot/grub/device.map идентифицирует диск этой конкретной установки как hd0 , а другой – как hd1 . Затем используйте grub-install только для записи загрузчика на собственный диск каждой установки; никогда на «противоположный» диск. Таким образом, оба диска будут полностью автономными и загрузочными, даже если другой диск будет полностью удален. Вы можете добавить пункт меню в файлы конфигурации каждого GRUB, который позволит вам загрузить «противоположную» установку, если хотите. Или вы можете просто использовать BIOS, чтобы выбрать диск для загрузки.

То, что вы должны знать, что селектор порядка загрузки традиционных BIOS обычно работает, делая диск выбранным для загрузки «первого» диска для функций BIOS, и поэтому GRUB hd0 всегда будет ссылаться на «диск, который в настоящее время выбран для загрузки в BIOS».

Итак, если вы в данный момент загружаетесь из /dev/sda (то есть BIOS говорит, что sda это hd0 ), и вы хотите, чтобы пункт меню GRUB на этом диске переключался в загрузочное меню /dev/sdb , вы должны использовать что-то вроде:

 menuentry "Switch to /dev/sdb" { # flip the disk mappings and reload configuration drivemap -s (hd0) (hd1) set root= configfile /boot/grub/grub.cfg # or just /grub/grub.cfg is /boot is a separate partition } 

… и также в конфигурации GRUB / dev / sdb.

  • GRUB: как изменить диск по умолчанию для будущих обновлений ОС?
  • Не удается загрузить в Windows 10 после установки Fedora 25
  • Установленный Fedora 18 на машине UEFI, получил lvm.mod не найдена ошибка
  • как установить GRUB в ESP с помощью efibootmgr?
  • как работает pbkdf2?
  • «Не удалось найти подходящее устройство stage1» при установке Grub вдоль Windows
  • Xen загружает старое ядро ​​после обновления
  • загрузка qemu / kvm непосредственно из файловой системы
  • Проблема с grub-mkconfig в установке Arch Linux: grub-mkconfig не может подключиться к lvmetad
  • EFI grub исчез, как вернуть его?
  • Могу ли я добавить загрузочный раздел GPT BIOS после установки Debian?
  • Linux и Unix - лучшая ОС в мире.