[make-initrd] [PATCH v1 21/41] fork pipeline: bootchain sysvinit script now use external hooks

Leonid Krivoshein klark.devel at gmail.com
Mon Sep 27 20:22:05 MSK 2021


27.09.2021 16:57, Alexey Gladkov пишет:
> On Mon, Sep 27, 2021 at 04:11:43PM +0300, Leonid Krivoshein wrote:
>> [...]
>>>> Другим компонентам 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() явно проще -- без блокировки консоли, без
>> бита выполнения, просто соурсим исходники:
> Эти хуки уже давно есть и можно использовать. Не нужно дублировать этот же
> функционал.

Дойдя до этого места не понял, как их можно использовать...

Делаю скрипт выполняемым, а класть-то его куда? В 
/lib/initrd/pre/bootchain-core/ ?


>>>>>> +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.



More information about the Make-initrd mailing list