From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=FowNT8kfEAr4wH1wPbuJMFRK4TI2w1dbgboOPEr/pp4=; b=DZZhIWoBPFOsNYCFvT8nDHoJBGs0VwLzKWabSZLFxFbautirvyYZbNGqGzm6WB4FFO YpCu9P7lzyInlkRMP/ijTGPtev9y4AMGxbU3TOANvrSebuB+No8JF5fLOfW4cZn3ylIR XvNbtQAEEDGQxpZr+sDvDIeDpfquMffc+GXuKJNFkAuGdE2Cse20r2nOU3IhbVzxaOrz 1BDH3Kfb96seaNZsOMEjE4AV8Jw8syVVeVptC+pyWXthzKhlpeEECywDlCpU4a4UG+Jq 5OlyFrHPlu3xWbFFSwGKG+VIFrt/oHLV9Bhi8otojasWus3u7jw3ZCv+hwdKtK7yN2mn 86WQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=FowNT8kfEAr4wH1wPbuJMFRK4TI2w1dbgboOPEr/pp4=; b=2GNKoDVeWMkgeiZv74WqLW3A0eIPikSWHfIIqu2wcBB3uENC+/ozEtskvfTLl2S31b TDc2YP3RpF3Qma0YCdKkm0NlCLV2RCp/zCNx2jlACimx6J4t2d4nk77rvtRfH87dUCJj 4VAVo4eNA8Y3knLa+vm/vk5FKddI3Cgu1uJSBvBxDaeuFcdQ3HXwjlR+fZaOMYxt7EyL U9HVmqtjJBbTBwD91LaXVAu2jrUzv7MJRhR85oAFSU7ZLK1Ryy3TyxlJC1rYKe0HVwCB mxw+O/MRoYWAwbYeGEGSQOSs8xSuU9TIf0tTdJs6aE7SiNhinn2ilL8qd/hpUaHSqV0o 42zg== X-Gm-Message-State: AOAM5318fACw20aLkdYmvo8/h+4PxRNuxiVQOZeCKwDu+frqJP+pmbKp frwOd/fax79VG8KhQurAPrOiYrwVq8E= X-Google-Smtp-Source: ABdhPJx3fAzaHnniqe3T4hyik8GF8FHmu1Gn6QKAzrWBNtMytsxgxRqTbja5kKvrnumlUzPE+PyDMA== X-Received: by 2002:a05:6512:1105:: with SMTP id l5mr24531337lfg.377.1632748304777; Mon, 27 Sep 2021 06:11:44 -0700 (PDT) To: make-initrd@lists.altlinux.org References: <7636585b-202d-95e0-eb0a-d320f69cc77a@gmail.com> <20210926140917.4xky7nfnlemy4jh3@example.org> <94921a86-1043-8273-2c29-957cf53e14e1@gmail.com> <20210927090907.fbre22j7urxlnukt@example.org> From: Leonid Krivoshein Message-ID: Date: Mon, 27 Sep 2021 16:11:43 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <20210927090907.fbre22j7urxlnukt@example.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru Subject: Re: [make-initrd] [PATCH v1 21/41] fork pipeline: bootchain sysvinit script now use external hooks X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Sep 2021 13:11:48 -0000 Archived-At: List-Archive: 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.