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=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.1 Message-ID: <8c4f166a-c736-46a2-853e-253a3284539b@altlinux.org> Date: Mon, 1 Jun 2026 11:18:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: make-initrd@lists.altlinux.org References: <7abadb27-fa4e-4a3b-940d-1688f0b067ca@altlinux.org> <84eb4e6d-4952-44fb-ad2b-d696b563a5eb@altlinux.org> Content-Language: ru, en-US From: Anton Midyukov In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: Re: [make-initrd] =?utf-8?b?0JfQsNC80LXQvdCwIC92YXIvcnVuINC4IC92YXIv?= =?utf-8?b?bG9jayDQvdCwINGB0LjQvNC70LjQvdC60LgsINGD0LrQsNC30YvQstCw0Y4=?= =?utf-8?b?0YjQuNC1INC90LAgL3J1biDQuCAvcnVuL2xvY2sg0L3QsCDRgdGC0LDQtNC4?= =?utf-8?b?0LggaW5pdHJk?= 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, 01 Jun 2026 08:19:02 -0000 Archived-At: List-Archive: 01.06.2026 11:08, Alexey Gladkov пишет: > On Mon, Jun 01, 2026 at 10:43:20AM +0300, Anton Midyukov wrote: >> 01.06.2026 09:44, Alexey Gladkov пишет: >>> On Mon, Jun 01, 2026 at 01:17:01AM +0300, Leonid Krivoshein wrote: >>>> Всем привет! >>>> >>>> >>>> On 5/31/26 10:57 PM, Alexey Gladkov wrote: >>>>> On Sun, May 31, 2026 at 04:54:56PM +0300, Anton Midyukov wrote: >>>>>> Доброго времени суток >>>>>> >>>>>> Необходимость замены /var/run и /var/lock на симлинки, указываюшие на /run и /run/lock >>>>>> уже давно перезрела. Начиная с p9, все новые системы являются мигрировавшими при их установке. >>>>>> Но остаются системы, обновлявшиеся с p8, какие-то самодельные сборки, где эта миграция не выполнялась. >>>>>> >>>>>> Наверное, самый безопасный способ миграции таких систем - сделать это на этапе initrd. >>>>>> В таком случае потребуется монтировать /var, если он на отдельном разделе. >>>>>> А также потребуется монтировать систему на запись. >>>>>> Видимо, это должна быть фича, которая добавляется в initrd автоматически, если /var/run или /var/lock >>>>>> не являются симлинками. >>>>>> Хотелось бы узнать, насколько это хорошая идея. >>>>> >>>>> Технически это возможно. В момент initramfs можно добавить >>>>> >>>>> MOUNTPOINTS += /var >>>>> >>>>> тогда мы попробуем добавить всё необходимое для /var и попытаемся >>>>> смонтировать его для системы. Далее нужно вызвать что-то вместо INIT, >>>>> что сделало бы миграцию. >>>>> >>>>> Когда-то давно я предлагал сделать фичу для обновлений, но в то время >>>>> такая идея не вызвала интереса. Я предлагал сделать возможность вызова >>>>> скрипта определённого имени из рута системы перед запуском INIT. >>>>> >> >> А почему скрипт не помещать в initrd? Чтобы была универсальной? > > Да. В то время я не думал про `MOUNTPOINTS += /var` (то есть про > необходимость дополнительных действий при создании initrd). У меня идея > была в том, что бы любой initrd мог выполнить манипуляции с системой, > пользуясь либо утилитами из initrd, либо из системы. > >> Тогда можно неким скриптом послеустановочным делать make-initrd c MOUNTPOINTS += /var и >> какой-то ещё переменной, которая укажет путь до скрипта. >> И тогда мы получаем простой способ делать с системой разное. Мне нравится. > > У нас есть: > > features/runtime/data/etc/rc.d/rc.sysexec > > его можно расширить запуском дополнительных скриптов. Нужно лишь придумать > какой интерфейс тебя устроит. Достаточно ли будет проверять и вызывать > какой-нибудь /lib/sysexec.sh ? > > Тогда вся обновлялка твоя будет: > > MOUNTPOINTS += /var > PUT_FILES += /lib/sysexec.sh > Полагаю, что недостаточно. Так как будут ставиться в будущем пакеты с разноимёнными скриптами, в %postinstall для первой установке которых будет генерация make-initrd с определёнными параметрами. (хотя может это и неудачная идея, make-initrd может быть перегенерирован ещё по какой-то причине при обновлении) То есть нужна некая новая переменная, которую нужно обработать. Можно назвать её SYSEXEC. >>>> >>>> >>>> А зачем? /sbin/init можно заменить для разовой операции, выполнить >>>> обновление из заменённого скрипта и вернуть всё обратно. Как-то так: >>> >>> Этот хак повреждает локальную систему. Можно добиться того же эффекта >>> сделав в grub one-shot запись с init=/update.sh . >>> >>> Но в целом, вот эти же аргументы и звучали раньше. >>> >>>> #!/bin/sh >>>> >>>> T=/tmp/update.sh >>>> >>>> if [ "$0" != "$T" ]; then >>>> cp -Lf -- "$0" "$T" >>>> exec $T "$@" >>>> exit 1 >>>> fi >>>> >>>> # Doing update here... >>>> ... >>>> >>>> # Restoring the original init >>>> mv -f /sbin/init.old /sbin/init >>>> >>>> # Call init or reboot >>>> exec /sbin/init "$@" >>>> exit 1 >>>> >>>> >>>> -- >>>> WBR, Leonid Krivoshein. >>>> >>>> _______________________________________________ >>>> Make-initrd mailing list >>>> Make-initrd@lists.altlinux.org >>>> https://lists.altlinux.org/mailman/listinfo/make-initrd >>> >> >> -- >> best regards, Anton Midyukov >> >> _______________________________________________ >> Make-initrd mailing list >> Make-initrd@lists.altlinux.org >> https://lists.altlinux.org/mailman/listinfo/make-initrd > -- best regards, Anton Midyukov