ALT Linux Distributions development
 help / color / mirror / Atom feed
* [devel-distro] mkimage-profiles: Выполнение mki-copy-$BOOTLOADER дважды
  @ 2021-01-22 15:43       ` Антон Мидюков
  2021-01-22 15:44       ` Антон Мидюков
  1 sibling, 0 replies; 2+ messages in thread
From: Антон Мидюков @ 2021-01-22 15:43 UTC (permalink / raw)
  To: Distributions development

Полтора года назад заметил, что mki-copy-isolinux при сборке образов выполняется дважды.
Сейчас раскопал это подробнее, делюсь промежуточным результатом. 

22.01.2021 22:15, Michael Shigorin пишет:
> On Fri, Jan 22, 2021 at 07:41:09PM +0700, Антон Мидюков wrote:
>>>>> mkimage-profiles runs mki-copy-efiboot twice if used without mki-copy-isolinux.
>>>>> The first time is started, in fact, to copy the kernel.
>>>> Вот это был вообще сюрприз...
>>> Из mkimage-profiles вызываем copy-$BOOTLOADER, а потом в mki-pack-boot он ещё раз вызывается.
>>> Т.е. copy-$BOOTLOADER можно было бы не вызывать, если бы содержимое /boot не пропадало (или восстанавливалось) к моменту вызова mki-pack-boot.
>> Теперь конкретика.
>>
>> В sub.in/stage1/Makefile вызывается build-propagator
>> (tools/mki-build-propagator) и copy-$BOOTLOADER
>> (tools/mki-copy-$BOOTLOADER). Это стадия stage1.
>> Это предпоследняя стадия.
>>
>> Финалом выполняется
>> features.in/build-distro/lib/90-build-distro.mk. В цели
>> pack-image выполняется tools/mki-pack-boot. А уже в нём сначала
>> tools/mki-copy-$BOOT_TYPE, после mki-pack-<такой-то>. Также там
>> мог бы выполняться и mki-build-propagator, если бы в
>> features.in/build-distro/scripts.d/00-cleanup не очищалось
>> initfs, в /boot не было пусто и главное была переменная
>> $PROPAGATOR_MAR_MODULES (ну и сами модули).
>>
>> Таким образом, я понимаю, что так сделано специально, но
>> получается всё равно некрасиво. Лучше было бы где-то сохранять
>> ядро с propagator и потом восстанавливать в /boot финального
>> chroot. Но как получить доступ к /boot в chroot прям из
>> sub.in/stage1/Makefile. Вот только как это сделать? 
> 
> Как-то наверняка можно (в sub.in/stage2/scripts.d/99-elf-stats
> была эквилибристика на перекликающуюся тему), но надо ли?

Надо для того, чтобы mkimage-profiles использовал полноценно mki-pack-boot и не вводил новую сущность $BOOTLOADER, фактически, всегда совпадающую с $BOOT_TYPE.
И сейчас это является препятствием для сборки образа только с refind. В mkimage теперь можно, но в mkimage-profiles нельзя.
А главное это вводит в неприятное заблуждение читающего логи. Вот вроде нашёл про mki-copy-isolinux, а внизу через пару тысяч строк - продолжение, до которого можешь и не дойти с первого раза.
А когда дойдёшь, немножко впадёшь в ступор.

> 
>> Восстанавливать то можно при выполнении scripts.d/ (run-scripts
>> в features.in/build-distro/lib/90-build-distro.mk). А вот в
>> stage1 cкрипт вставлять уже поздно. Они выполняются до.
> 
> Почитай git log по этим файлам -- если там нет _прямого_
> указания на такую задумку, возможно, это просто мой косяк
> (когда постучался об стенку головой, всю картинку в голову
> уложить не получалось -- например, дёргают каждые пять минут
> по в общем-то важным вещам -- и пришлось оставить сделанное
> хоть как-то).
> 
> PS: мне кажется, это стоит документировать в devel-distro@
> -- в смысле если ты не против, то отвечай сразу туда.
> 


-- 
С уважением, Антон Мидюков <antohami@basealt.ru>


^ permalink raw reply	[flat|nested] 2+ messages in thread

* [devel-distro] mkimage-profiles: Выполнение mki-copy-$BOOTLOADER дважды
    2021-01-22 15:43       ` [devel-distro] mkimage-profiles: Выполнение mki-copy-$BOOTLOADER дважды Антон Мидюков
@ 2021-01-22 15:44       ` Антон Мидюков
  1 sibling, 0 replies; 2+ messages in thread
From: Антон Мидюков @ 2021-01-22 15:44 UTC (permalink / raw)
  To: Distributions development

Полтора года назад заметил, что mki-copy-isolinux при сборке образов выполняется дважды.
Сейчас раскопал это подробнее, делюсь промежуточным результатом. 

22.01.2021 22:15, Michael Shigorin пишет:
> On Fri, Jan 22, 2021 at 07:41:09PM +0700, Антон Мидюков wrote:
>>>>> mkimage-profiles runs mki-copy-efiboot twice if used without mki-copy-isolinux.
>>>>> The first time is started, in fact, to copy the kernel.
>>>> Вот это был вообще сюрприз...
>>> Из mkimage-profiles вызываем copy-$BOOTLOADER, а потом в mki-pack-boot он ещё раз вызывается.
>>> Т.е. copy-$BOOTLOADER можно было бы не вызывать, если бы содержимое /boot не пропадало (или восстанавливалось) к моменту вызова mki-pack-boot.
>> Теперь конкретика.
>>
>> В sub.in/stage1/Makefile вызывается build-propagator
>> (tools/mki-build-propagator) и copy-$BOOTLOADER
>> (tools/mki-copy-$BOOTLOADER). Это стадия stage1.
>> Это предпоследняя стадия.
>>
>> Финалом выполняется
>> features.in/build-distro/lib/90-build-distro.mk. В цели
>> pack-image выполняется tools/mki-pack-boot. А уже в нём сначала
>> tools/mki-copy-$BOOT_TYPE, после mki-pack-<такой-то>. Также там
>> мог бы выполняться и mki-build-propagator, если бы в
>> features.in/build-distro/scripts.d/00-cleanup не очищалось
>> initfs, в /boot не было пусто и главное была переменная
>> $PROPAGATOR_MAR_MODULES (ну и сами модули).
>>
>> Таким образом, я понимаю, что так сделано специально, но
>> получается всё равно некрасиво. Лучше было бы где-то сохранять
>> ядро с propagator и потом восстанавливать в /boot финального
>> chroot. Но как получить доступ к /boot в chroot прям из
>> sub.in/stage1/Makefile. Вот только как это сделать? 
> 
> Как-то наверняка можно (в sub.in/stage2/scripts.d/99-elf-stats
> была эквилибристика на перекликающуюся тему), но надо ли?

Надо для того, чтобы mkimage-profiles использовал полноценно mki-pack-boot и не вводил новую сущность $BOOTLOADER, фактически, всегда совпадающую с $BOOT_TYPE.
И сейчас это является препятствием для сборки образа только с refind. В mkimage теперь можно, но в mkimage-profiles нельзя.
А главное это вводит в неприятное заблуждение читающего логи. Вот вроде нашёл про mki-copy-isolinux, а внизу через пару тысяч строк - продолжение, до которого можешь и не дойти с первого раза.
А когда дойдёшь, немножко впадёшь в ступор.

> 
>> Восстанавливать то можно при выполнении scripts.d/ (run-scripts
>> в features.in/build-distro/lib/90-build-distro.mk). А вот в
>> stage1 cкрипт вставлять уже поздно. Они выполняются до.
> 
> Почитай git log по этим файлам -- если там нет _прямого_
> указания на такую задумку, возможно, это просто мой косяк
> (когда постучался об стенку головой, всю картинку в голову
> уложить не получалось -- например, дёргают каждые пять минут
> по в общем-то важным вещам -- и пришлось оставить сделанное
> хоть как-то).
> 
> PS: мне кажется, это стоит документировать в devel-distro@
> -- в смысле если ты не против, то отвечай сразу туда.
>

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-01-22 15:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-22 15:43       ` [devel-distro] mkimage-profiles: Выполнение mki-copy-$BOOTLOADER дважды Антон Мидюков
2021-01-22 15:44       ` Антон Мидюков

ALT Linux Distributions development

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel-distro/0 devel-distro/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel-distro devel-distro/ http://lore.altlinux.org/devel-distro \
		devel-distro@lists.altlinux.org devel-distro@lists.altlinux.ru devel-distro@lists.altlinux.com
	public-inbox-index devel-distro

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel-distro


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git