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=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=d/p5NhAtqMWh8Ih2hnZZ3eESVy0KHUq30YgLB0EpsWE=; b=AfQFMKlvbJQD/sy07di0E633zpGReXwOYz1LwhdOqxwl0BhLL/kH6Oo+Yt4GJ8WmZL MhOBsSw7uFheodlVfHRsxtRSpreb2AahAWqzp/h5oh6RkjVwkAOnfm+3mB/Kp2FNoaZW oAwuTdxN7lyTr2toQkAumi5WwSuPSodZAPJxw+BnMGEeMrcF1Bmy8w7sDUyuYQYTc1BU n9A7jx9ez7f4fQ4UxuhjOgCkJJIGC3eAdIPiPBDeR9zw+73kNU+DXsPCJjbd4gA13p52 ybIIE2UvYRR9p4m3gDSYYVj8btyFg+EKUKPVbqXv1fiw2+r9xmSiBVhezfqg0PCM0VT2 KxVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; 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=d/p5NhAtqMWh8Ih2hnZZ3eESVy0KHUq30YgLB0EpsWE=; b=WmFAu6K/erx6x/tU+vQ679+NHGU4KxHVOAc3OXnyVAZx/wUN9q2/Clwwxn+qdFDC7h 4fFk6eNsmSkEEsFGmYcxhgfxjZoQI4HDnkWSuZgHTT5Tni360EgHks8VB12EcKVoidOW hiEclN8NWIDoWEx73YfHGOjGmchdSwBdNhFDdlYjIFcfVch0MN2q/wDP7lfkuzW3QfDM +1a08VAG0/C4LJf5qlFCx937G/QNK6jyai8CP77zKtexljsAWbGnAFdKpYBj8gOdMMAl WOW0Ya0GGGqM9KWEHlzorcazFs2g4h9ES3k5BgypAhMMcQoSY4NAbFAY1uMjZ5JWghT7 wLEQ== X-Gm-Message-State: AOAM530CT36Qr3WYbwYHvkH/ElINcBz9tQbi2mU+oeF3P81WiixL8WSy 8cxWpv4Jl98EpNGsKnVzDBYp6+ddgaI= X-Google-Smtp-Source: ABdhPJw7AbUrbmHM1mcAY/6CfMXAKyQamq4BMfWtI+sjxhvji+Iu2YL8+ch/2n5jb8cLAcn8sHQtsg== X-Received: by 2002:a2e:7604:: with SMTP id r4mr20677388ljc.60.1617730708399; Tue, 06 Apr 2021 10:38:28 -0700 (PDT) To: make-initrd@lists.altlinux.org References: <53056ce2-d0bd-dcab-880f-80f2a6b6892a@gmail.com> <20210406084450.rxggsmhapka7g6lo@example.org> From: Leonid Krivoshein Message-ID: Date: Tue, 6 Apr 2021 20:38:27 +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: <20210406084450.rxggsmhapka7g6lo@example.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: ru Subject: Re: [make-initrd] Fwd: [#269003] TESTED make-initrd.git=2.14.1-alt1 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: Tue, 06 Apr 2021 17:38:31 -0000 Archived-At: List-Archive: 06.04.2021 11:44, Alexey Gladkov пишет: > On Tue, Apr 06, 2021 at 01:51:30AM +0300, Leonid Krivoshein wrote: >> 8. Можно сделать общее описание входа/выхода для всех поддерживаемых шагов и >> выполнять необходимые проверки до и после выполнения шага, чтобы не не >> делать этого внутри самих шагов. Такое описание будет полезно и для шага >> debug. Шаги могут быть транзитными (pass-thru). > Я не хочу навязывать что должны шага принимать и уж тем более нельзя > навязывать, что они должны возвращать. Например, waitdev ничего не > монтирует т.е. на выходе нет ничего кроме задержки перед следующим шагом. > > Могут быть шаги, которые будут спрашивать что-то у пользователя. Описывать > такое очень сложно. Можно сделать необязательным описание входа. Если не описано, считать, что на входе может быть что угодно и задача шага -- проверить это самостоятельно и вывести fatal(). Если же есть описание, проверку может делать сам pipeline. ANY -- что угодно, DEV -- устройство, DIR -- каталог, PASS -- шаг не обрабатывает вход, вместо этого он должен быть напрямую связан с выходом без обработки, т.е. в данном случае pipeline должен передать выход предыдущего шага на вход следующего шага или первого, который не PASS. Иначе каждый шаг начинается с проверок и вывода fatal(), а в конце сейчас приходится использовать специально написанную для данного случая pass_thru_pipeline(). Именно эту однотипную и примитивную обработку предлагаю перетащить в pipeline, чтобы не делать её на каждом шаге. И вообще я бы заменил передачу dev на devname или симлинк. Чтобы не видеть таких путей в mtab ни в stage1, ни в stage2: /dev/pipeline/dst/pipe1/dev ==> /dev/sr0 > Как организовывать debug это другой вопрос. Можно добавить в шаги больше > verbose сообщений. Можно также сделать шаг shell, который даст консоль. > >> [уже не про pipeline] >> >> Иногда нужно не делать switch_root "$rootmnt" "$INIT", а нужно просто >> запустить скрипт "$INIT" с подмонтированного "$rootmnt", полностью остановив >> счётчик таймаута загрузки, и разрешив интерактивное взаимодействие. При этом >> make-initrd с запущенными фоновыми процессами может продолжать работать, а >> организацию выключения/перезагрузки можно возложить на запущенный скрипт. >> Как лучше реализовать аналог data/etc/rc.d/rc.sysexec? > Ты всегда можешь придумать свой "метод" загрузки. > > Для обычных систем это localdev [1], который подразумевает пинок init, > чтобы тот выполнил rc.sysexec. > > Но ты можешь это изменить и придумать свою последовательность (какую > хочешь). Например вот фича [2], которая реализует "метод" bootloader, > который показывает меню и делает kexec. > > [1] https://github.com/osboot/make-initrd/tree/master/data/lib/initrd/boot/method/localdev > [2] https://github.com/osboot/make-initrd-bootloader Это прекрасно, большое спасибо! Теперь и rescue-launcher для всяких развёртывалок можно перетащить в stage1... -- Best regards, Leonid Krivoshein.