Как собрать загрузчик grub2 из исходного кода и протестировать его с помощью эмулятора qemu

Я хочу знать, как собрать загрузчик grub 2 из его исходного кода в ubuntu и протестировать его с помощью эмулятора qemu.

Я также хотел бы изменить стандартное фоновое изображение загрузчика grub2 в новой сборке?

Это возможно? Если да, то как?

1 ответ

Решение

Конечно вы можете.

Как показано на сайте GRUB, исходный код grub доступен через git с git.savannah.gnu.org.

Тогда теоретически это просто вопрос

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

Однако, в зависимости от вашей платформы, целевая платформа grub по умолчанию может быть, а может и не быть той, которую вы хотите. Таким образом, вам нужно решить, какую платформу прошивки вы хотите использовать в QEMU, которая в зависимости от вашей архитектуры может быть чем-то вроде

  • (pc) биос
  • Coreboot
  • (И) EFI
  • ieee1275 (открытая прошивка)
  • U-Boot

Ваше упоминание об Ubuntu соответствует как минимум 3 возможным вариантам из приведенного выше, но я буду скучным и предположу, что вы имеете в виду x86_64/amd64. Поскольку вы будете использовать GRUB в QEMU, на самом деле не имеет значения, на какой из двух возможных платформ ("pc" или "efi") работает ваш физический компьютер. Так что давайте немного поживем и перейдем к варианту (U)EFI.

Перед настройкой и сборкой вам понадобятся некоторые предварительные условия, поэтому

$ sudo apt-get install build-essential autoconf automake
$ sudo apt-get build-dep grub-efi-amd64

Таким образом, практическая сборка может выглядеть примерно так:

$ # Next command is optionnal (languages):
$ ./linguas.sh
$ ./autogen.sh
$ # Next parameters are optionnal:
$ ./configure --prefix=$HOME/local --platform=efi
$ make
$ # Next command is optionnal:
$ make check
$ make install

Самый простой способ получить работающее изображение GRUB, вероятно, с grub-mkstandalone команда:

$ $HOME/local/bin/grub-mkstandalone -O x86_64-efi -o mygrub.efi

Примечание: чтобы установить grub на /dev/sda диск (вместо QUEMU) используйте:

$ sudo grub-install /dev/sda

Примечание. Если вы не видите меню GRUB при загрузке, проверьте этот вопрос. Это включает нажатие Shift при загрузке или редактировании /etc/default/grub комментировать GRUB_HIDDEN_TIMEOUT,

Тогда вам нужен какой-то образ UEFI для запуска под вашим QEMU. Выбор по умолчанию для x86 называется Ovmf и является частью Tianocore EDK2 - де-факто реализации UEFI с открытым исходным кодом. Из-за юридических технических аспектов, касающихся перераспределения драйвера файловой системы FAT, многие дистрибутивы Linux (включая Ubuntu) не включают в себя предварительно созданный. Но не бойтесь, это довольно просто построить самостоятельно.

Однако я не собираюсь воспринимать этот ответ как-то не по теме, чем у меня уже есть, поэтому все, что я собираюсь сказать, - это прочитать Ovmf README и просмотреть один или два только слегка устаревших сообщения в блоге об этом.

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