Как собрать загрузчик 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 и просмотреть один или два только слегка устаревших сообщения в блоге об этом.