[devel-distro] grub-efi в инсталяторе

Антон Мидюков midyukov-anton at ya.ru
Wed Jan 8 22:29:15 MSK 2020


01.11.2019 21:18, Alexey Shabalin пишет:
> Всем привет.
> Я для Server-V добавил поддержку grub-efi в инстляторе.
> Прошу посмотреть/проверить. Делал только самое необходимое для себя. В
> дальнейшем можно наращивать функционал. Например, сейчас нет поддержки
> тем для grub, потому что мне не надо было :), мне достаточно
> текстового grub.
>
> 1) поддержка grub-efi в efiboot mkimage
> http://git.altlinux.org/people/shaba/packages/mkimage.git?p=mkimage.git;a=commitdiff;h=932c2e80d41c8ace7bbb5da52a48bab49fde575f
>
> 2) добавил фичу grub для генерации кофигов grub из кусочков, по
> аналогии с syslinux.
> Пока жесткая завязка на местоположение vmlinuz и full.cz в EFI/BOOT
> для grub-efi.
> Не уверен, что можно использовать для aarch64, это буду смотреть дальше.
> http://git.altlinux.org/people/shaba/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=7b9d60d6661cad6e6f02b93e646a42bd07645c51
>
> 3) использование конфигов для grub наравне с syslinux
> http://git.altlinux.org/people/shaba/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=23a460dd3de2147cc9a0db5de52234ececb0b5ef
>
> 4) переключил server-v с refind на grub-efi
> Вместо (+efi use/efi/refind) использую use/efi/grub use/efi/signed
> http://git.altlinux.org/people/shaba/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=commitdiff;h=5577800554b2e240146b7cfb039c7a97d13e74d7
>
> 5) собираю командой (потому что искать, где это переопределяется, кто
> мне помогает и потом определяет эти переменные подругому, тяжело и
> муторно)
> make ARCH=x86_64 BUILDDIR=~/build-mkimage
> APTCONF=~/etc/p9.x86_64-apt.conf DEBUG=1 REPORT=1 IMAGE_PACKTYPE=boot
> BOOT_TYPE="isolinux efiboot" EFI_BOOTLOADER=grub-efi server-v.iso
>
> Спасибо за внимание. Буду рад исправлениям.

Доброго времени суток

За каникулы серьёзно поработал над mkimage и mkimage-profiles.

В задании [#243937] [test-only] EPERM mkimage.git=0.2.30-alt1 сделал 
следующее:

1. в grubaa64boot сделал структуру файлов как в образе собираемом с 
efiboot. Так что прошу обратить пристальное внимание на это.

2. в grubaa64boot убрал генерацию grub.cfg из syslinux.cfg, так как она 
больше не нужна (да и работала некорректно)

3. Добавил новую цель mki-copy-kernel, которую предлагаю вызывать из 
mkimage-profiles вместо mki-copy-$BOOTLOADER.

Мне не нравится, что у нас сейчас mki-copy-$BOOTLOADER вызывается 
дважды: из mkimage-profiles, чтобы скопировать ядро с образом 
пропагатора, и второй раз уже в mkimage-profiles, чтобы установить 
загрузчик. При первом вызове есть ядро, но не готов syslinux.cfg, при 
втором готов syslinux.cfg, но уже нет ядра. Кроме того, это изменение 
упростит процесс перехода на использование в образе нескольких ядер.

4. В mki-copy-efiboot для grub-efi ядро копировать в boot, если его ещё 
там нет. Аналогично для других EFI_BOOTLOADER проверять, есть ли уже 
ядро в EFI/BOOT, и если есть не копировать.

Но основные изменения в mkimage-profiles:

1. Исправил определение default-ного пункта, если не задан (см 0001).

2. Сделал фильтр конфигов по названиям. Например, пункты меню 
специфичные для EFI должны оканчиваться на _efi.cfg (см 0005)

3. Может генерироваться два конфига grub.cfg, для EFI и всех остальных. 
Два сразу могут быть только при использовании grub для legacy (не 
реализован) и grub-efi (см 0005)

4. Исправил $linux_suffix. То условие не работает и генерит при загрузке 
grub ошибки про не найденные команды (см 0008)

5. Интегрировал по аналогии с syslinux генерацию конфигов grub для 
install2 и live (см 0012). Для того, чтобы это никому не помешало, в 
зависимости от выбранных загрузчиков следы grub подчищаются (см 0004 и 0005)

6. Для syslinux тоже сделал такую проверку (см 0015, 0016) Это позволит 
задать загрузчик grub legacy, не убирая отовсюду syslinux.

7 Вызываю copy-kernel вместо copy-$BOOTLOADER (см 0020)

8 Остальное мелочи.

Также я отправил в Сизиф livecd-install, который может восстанавливать 
ядро не только из syslinux/alt0, но и boot:

[#243884] DONE (try 2) livecd-install.git=0.9.12-alt1

Итого, для полного счастья не хватает только выбора языка и графической 
темы.

-- 
С уважением, Антон Мидюков <antohami �� altlinux.org>



More information about the devel-distro mailing list