ALT Linux Distributions development
 help / color / mirror / Atom feed
From: "Антон Мидюков" <antohami@basealt.ru>
To: Distributions development <devel-distro@lists.altlinux.org>
Subject: [devel-distro] mkimage-profiles: Выполнение mki-copy-$BOOTLOADER дважды
Date: Fri, 22 Jan 2021 15:43:02 -0000
Message-ID: <5cc96bc6-0eb4-32f7-d5dd-4b453c2a9dd6@basealt.ru> (raw)
In-Reply-To: <20210122151535.GS6142@imap.altlinux.org>

Полтора года назад заметил, что 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>


       reply	other threads:[~2021-01-22 15:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-22 15:43       ` Антон Мидюков [this message]
2021-01-22 15:44       ` Антон Мидюков

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5cc96bc6-0eb4-32f7-d5dd-4b453c2a9dd6@basealt.ru \
    --to=antohami@basealt.ru \
    --cc=devel-distro@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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