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

Alexey Gladkov legion at altlinux.ru
Mon Feb 10 12:51:47 MSK 2020


On Mon, Feb 10, 2020 at 09:58:54AM +0700, Антон Мидюков wrote:
> 12.01.2020 22:18, Антон Мидюков пишет:
> > 09.01.2020 21:39, Антон Мидюков пишет:
> > > 09.01.2020 2:29, Антон Мидюков пишет:
> > > > 
> > > > [...]
> > > > 
> > > > 4. В mki-copy-efiboot для grub-efi ядро копировать в boot, если
> > > > его ещё там нет. Аналогично для других EFI_BOOTLOADER проверять,
> > > > есть ли уже ядро в EFI/BOOT, и если есть не копировать.
> > > > 
> > > Копировать ядро в boot, видимо, плохая идея. В qemu грузится, на
> > > железе же ядро не находит.
> > > > [...]
> > > 
> > В связи с этим переделал задание 243937 (mkimage), всё хорошенько
> > перепроверил и исправил очепятки.
> > 
> > Количество правок сократил. Убрал упоминание несуществующего grubx86boot.
> > 
> > Без патча
> > 0017-sub.in-stage1-call-copy-kernel-instead-of-copy-BOOTL.patch для
> > mkimage-profiles будет работать по-старому.
> > 
> > Прошу аппрув для задания 243937 (mkimage).
> Повторяю просьбу. Если что-то сделал неправильно, не молчите, пожалуйста.

Письма про EPERM я игнорирую. Это не pull-request. Они значат лишь то, что
кто-то собирает ваш пакет.

В будущем пожалуйста присылайте нормальный запрос с описанием того, что вы
делаете.

Теперь конкретно по таску 243937.

1f2ab51466760f2c614f33d916d8b7fefa90dd95 ("mki-copy-kernel: initial target for copying kernel")

Описание коммита не поясняет зачем он нужен вообще.  Не вызывать
mki-copy-$BOOTLOADER дважды ? Не вызывайте, если не нужно.  Какую проблему
вы решаете этим коммитом ?

> [ x$EFI_DESTINATION != 'x' ]

Пожалуйста, не пишите так.

В mki-copy-kernel вы анализируете ${BOOTLOADER:-}. Такой переменной нет в
mkimage. Если это новый параметр, то его нужно требовать в скрипте и
описать. Есть параметр BOOT_TYPE. Вы его имели в виду ?

Вы проверяете BOOTLOADER только на значения isolinux, syslinux, pxelinux,
ieee1275boot. Типов загрузчиков в mkimage больше. Если они не должны
обрабатываться, то задокументируйте это.

Также вы вынесли код копирования ядра в отдельный таргет продублировав код
из соответствующих mki-copy-$BOOTLOADER. Это плохое решение. Это приведёт
к рассинхронизации кода в будущем. Также следующий кто будет добавлять
новый вариант загрузчика скорее всего пропустит этот скрипт.

Я не против вынести копирование ядра в отдельный таргет, если это
необходимо. Но мне не нравится, как это реализовано. Если вы хотите это
сделать, то убирайте соответствующий код из mki-copy-*. Например, пусть
они сами вызывают новую утилиту с параметром `mki-copy-kernel $DESTDIR`.

e0501c5fcf9bde41d1cfc88c0941b7282e23bcdb ("mki-copy-grubaa64boot, mki-pack-efionly-isoboot: replaced grub to EFI/BOOT")

Опять же описание коммита не совсем понятно. Вы создаёте EFI/BOOT и
копируете части grub туда потому что директории вне EFI могут быть не
доступны. Когда не доступны ? Вы наверно имели в виду, что для grub во
время загрузки может быть доступен только EFI раздел ? (просто угадываю
сейчас).

> +[ -f "$chroot/.image/$imgdir/EFI/BOOT/grub.cfg" ] ||
> +       message "Warning: /.image/$imgdir/EFI/BOOT/grub.cfg: not found."

Зачем этот варнинг, если внизу есть код, который создаёт этот конфиг ?

> +mkdir $verbose -p EFI/BOOT

Вот тут вы можете написать EFI/BOOT/fonts чтобы не проверять и создавать
эту директорию ниже.

-- 
Rgrds, legion



More information about the devel-distro mailing list