[make-initrd] Замена /var/run и /var/lock на симлинки, указываюшие на /run и /run/lock на стадии initrd
Alexey Gladkov
legion at kernel.org
Mon Jun 1 09:44:36 MSK 2026
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.
> >
>
>
> А зачем? /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 at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/make-initrd
--
Rgrds, legion
More information about the Make-initrd
mailing list