Make-initrd development discussion
 help / color / mirror / Atom feed
From: Leonid Krivoshein <klark.devel@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] [PATCH v1 21/41] fork pipeline: bootchain sysvinit script now use external hooks
Date: Mon, 27 Sep 2021 16:11:43 +0300
Message-ID: <b625bbce-f901-fbd6-0f58-051a823b1950@gmail.com> (raw)
In-Reply-To: <20210927090907.fbre22j7urxlnukt@example.org>


27.09.2021 12:09, Alexey Gladkov пишет:
> On Sun, Sep 26, 2021 at 10:53:08PM +0300, Leonid Krivoshein wrote:
>> 26.09.2021 17:09, Alexey Gladkov пишет:
>>> On Fri, Sep 24, 2021 at 06:57:45PM +0300, Leonid Krivoshein wrote:
>>>
>>> Что это за хуки и зачем они нужны ?
>> Отлично, уже дошли до первого принципиального и важного изменения!
>> Полагаю, тут больше камень в огород отсутствия описаний, это я поправлю.
>>
>> Стартовый скрипт SysVinit ранее включал prepare() для предварительной
>> подготовки каталогов для компонента waitdev, отделённого теперь в другую
>> фичу.
> Когда ты говоришь про prepare, ты про выполнение скриптов перед сервисом
> (udev, ueventd, etc.) ?

Речь о коде, перенесённом из одного места в другой. Как раз я не думаю, 
что тут можно как-то влиять на запуск до udev, ueventd. Но если мы 
вынесли из bootchain-core код, который до запуска демона должен что-то 
предварительно подготовить, нужен же механизм, который позволит его 
дёрнуть, для этого и нужны хуки. Другое дело, что по факту сейчас пока 
такой хук оказался лишь один. Но мне конструкция всё равно нравится 
больше, она делает стартовый скрипт более модульным, не зависящим от 
других фич bootchain-*.


>> Другим компонентам bootchain при расширении (а теперь это уже более
>> десятка фич и подпакетов) тоже может потребоваться подобная инициализация.
>> Здесь в одном коммите видно, куда переехал код функции prepare(). Хуки нужны
>> для того, чтобы вызывать подобную инициализацию из определённого места, так
>> как базовый пакет bootchain-core может не знать, с какими компонентами
>> bootchain собран initramfs. Соответственно, включаемые скрипты кладутся в
>> /lib/bootchain-prepare.d. Если потребуется, по аналогии можно добавить в
>> stop() хуки для деинициализации.
> https://github.com/osboot/make-initrd/blob/master/data/etc/rc.d/rc#L32-L38
> https://github.com/osboot/make-initrd/blob/master/data/etc/rc.d/rc#L61
> https://github.com/osboot/make-initrd/blob/master/data/etc/rc.d/rc#L109
> https://github.com/osboot/make-initrd/blob/master/data/etc/rc.d/rc#L114
>
> Ты имеешь в виду вот такие хуки ?

Ну очень похожие, хотя use_hooks() явно проще -- без блокировки консоли, 
без бита выполнения, просто соурсим исходники:

>>>> +use_hooks()
>>>> +{
>>>> +	local hook hdir="$1"
>>>> +
>>>> +	if [ -d "$hdir" ]; then
>>>> +		# shellcheck disable=SC2012
>>>> +		for hook in $(ls -1 -- "$hdir"/* |sort) _; do
>>>> +			[ -s "$hook" ] ||
>>>> +				continue
>>>> +			. "$hook"
>>>> +		done
>>>> +	fi
>>>>    }
и:
>>>> --- /dev/null
>>>> +++ b/make-initrd/features/bootchain-waitdev/data/lib/bootchain-prepare.d/300-waitdev
>>>> @@ -0,0 +1,12 @@
>>>> +#!/bin/bash -efu
>>>> +
>>>> +dir=/.initrd/bootchain/waitdev
>>>> +mkdir -p -- "$dir"
>>>> +
>>>> +[ -z "${WAITDEV_TIMEOUT-}" ] ||
>>>> +	printf '%s\n' "$WAITDEV_TIMEOUT" >"$dir/TIMECNT"
>>>> +i=0
>>>> +while [ "$i" -lt "${WAITDEV:-0}" ]; do
>>>> +	touch "$dir/$i"
>>>> +	i=$((1 + $i))
>>>> +done


-- 
Best regards,
Leonid Krivoshein.



  reply	other threads:[~2021-09-27 13:11 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-24 15:57 Leonid Krivoshein
2021-09-26 14:09 ` Alexey Gladkov
2021-09-26 19:53   ` Leonid Krivoshein
2021-09-27  9:09     ` Alexey Gladkov
2021-09-27 13:11       ` Leonid Krivoshein [this message]
2021-09-27 13:57         ` Alexey Gladkov
2021-09-27 17:22           ` Leonid Krivoshein
2021-09-28  0:40             ` Leonid Krivoshein
2021-09-28  7:11             ` Leonid Krivoshein

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=b625bbce-f901-fbd6-0f58-051a823b1950@gmail.com \
    --to=klark.devel@gmail.com \
    --cc=make-initrd@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

Make-initrd development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/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 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
		make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
	public-inbox-index make-initrd

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


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