Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package read-only-root-fs for openSUSE:Factory checked in at 2025-04-15 20:47:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/read-only-root-fs (Old) and /work/SRC/openSUSE:Factory/.read-only-root-fs.new.1907 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "read-only-root-fs" Tue Apr 15 20:47:12 2025 rev:18 rq:1269648 version:1.0+git20250415.7e7aea4 Changes: -------- --- /work/SRC/openSUSE:Factory/read-only-root-fs/read-only-root-fs.changes 2024-02-29 21:49:17.491650190 +0100 +++ /work/SRC/openSUSE:Factory/.read-only-root-fs.new.1907/read-only-root-fs.changes 2025-04-15 20:47:22.149805815 +0200 @@ -1,0 +2,19 @@ +Tue Apr 15 14:23:08 UTC 2025 - Fabian Vogt <fv...@suse.com> + +- Update to version 1.0+git20250415.7e7aea4: + * Add missing dependency on mountpoint + +------------------------------------------------------------------- +Tue Apr 15 13:03:01 UTC 2025 - Fabian Vogt <fv...@suse.com> + +- Add missing dependencies for %post + +------------------------------------------------------------------- +Mon Apr 14 13:26:18 UTC 2025 - fv...@suse.com + +- Update to version 1.0+git20250414.6ef7163: + * Add a note why we need to keep 10-read-only-root-fs.conf around + * Migrate from /etc overlays to subvolumes +- Switch _service to use mode="manual" + +------------------------------------------------------------------- Old: ---- read-only-root-fs-1.0+git20240228.d85232a.tar.xz New: ---- read-only-root-fs-1.0+git20250415.7e7aea4.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ read-only-root-fs.spec ++++++ --- /var/tmp/diff_new_pack.wughnf/_old 2025-04-15 20:47:22.729829885 +0200 +++ /var/tmp/diff_new_pack.wughnf/_new 2025-04-15 20:47:22.729829885 +0200 @@ -1,7 +1,7 @@ # # spec file for package read-only-root-fs # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: read-only-root-fs -Version: 1.0+git20240228.d85232a +Version: 1.0+git20250415.7e7aea4 Release: 0 Summary: Files and Scripts for a RO root fileystem License: GPL-2.0-or-later @@ -28,17 +28,19 @@ BuildRequires: dracut BuildRequires: update-bootloader-rpm-macros Requires: dracut -Requires(post): /usr/bin/mkdir /usr/bin/cat /usr/bin/sed -Requires(post): gawk +Requires(post): /usr/bin/mv /usr/bin/rsync /usr/bin/gawk /usr/sbin/btrfs Requires(post): snapper # Required if system with new /etc/fstab entries is supposed to be updated -Conflicts: transactional-update < 2.15 +Conflicts: transactional-update < 5.0.0 +# Support for /etc as subvolume +Conflicts: combustion < 1.5 +Conflicts: ignition < 2.21.0 BuildArch: noarch %{update_bootloader_requires} %description Files, scripts and directories to run the system with a -read-only root filesystem with %{_sysconfdir} writeable via overlayfs. +read-only root filesystem with nested writable %{_sysconfdir} BTRFS subvolume. This package should never be installed in an already running system! It should only be selected by a system role for a @@ -64,12 +66,10 @@ %install cp -a etc usr %{buildroot} -mkdir -p %{buildroot}%{_localstatedir}/lib/overlay/work-etc %post -if [ "$1" = 1 ] ; then - %{_sbindir}/setup-fstab-for-overlayfs - mkdir -p %{_localstatedir}/lib/overlay/1/etc +if [ "$1" = 1 -a "`findmnt -n -o FSTYPE -l /`" = "btrfs" ] ; then + %{_libexecdir}/setup-etc-subvol fi if [ ! -e /boot/writable -a "`findmnt -n -o FSTYPE -l /`" = "btrfs" ]; then %{_sbindir}/mksubvolume /boot/writable @@ -90,9 +90,10 @@ %files %license COPYING -%{_sbindir}/setup-fstab-for-overlayfs -%{_localstatedir}/lib/overlay +%{_libexecdir}/setup-etc-subvol %{_prefix}/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf +%dir %{_prefix}/lib/dracut/modules.d/50writable-etc +%{_prefix}/lib/dracut/modules.d/50writable-etc/* %{_prefix}/lib/systemd/system-preset/* %dir %{_prefix}/lib/systemd/system/systemd-udevd.service.d %{_prefix}/lib/systemd/system/systemd-udevd.service.d/etcmount.conf ++++++ _service ++++++ --- /var/tmp/diff_new_pack.wughnf/_old 2025-04-15 20:47:22.777831877 +0200 +++ /var/tmp/diff_new_pack.wughnf/_new 2025-04-15 20:47:22.785832210 +0200 @@ -1,15 +1,15 @@ <services> - <service name="tar_scm" mode="disabled"> + <service name="tar_scm" mode="manual"> <param name="version">1.0</param> <param name="versionformat">1.0+git%cd.%h</param> <param name="url">https://github.com/openSUSE/read-only-root-fs.git</param> <param name="scm">git</param> <param name="changesgenerate">enable</param> </service> - <service name="recompress" mode="disabled"> + <service name="recompress" mode="manual"> <param name="compression">xz</param> <param name="file">*.tar</param> </service> - <service name="set_version" mode="disabled"/> + <service name="set_version" mode="manual"/> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.wughnf/_old 2025-04-15 20:47:22.813833372 +0200 +++ /var/tmp/diff_new_pack.wughnf/_new 2025-04-15 20:47:22.817833538 +0200 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/openSUSE/read-only-root-fs.git</param> - <param name="changesrevision">d85232a9c138eb6dc768c97ac3a5b2d80c16b7e6</param> + <param name="changesrevision">7e7aea42996f68a4ade290aa0b1542d6ccb5f46d</param> </service> </servicedata> (No newline at EOF) ++++++ read-only-root-fs-1.0+git20240228.d85232a.tar.xz -> read-only-root-fs-1.0+git20250415.7e7aea4.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf --- old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf 2024-02-28 14:01:51.000000000 +0100 +++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/dracut.conf.d/10-read-only-root-fs.conf 2025-04-15 16:19:23.000000000 +0200 @@ -1,2 +1,3 @@ +# Snapshots created by t-u < 5 still have an overlayfs on /etc add_dracutmodules+=" systemd-initrd " force_drivers+=" overlay " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh --- old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/module-setup.sh 2025-04-15 16:19:23.000000000 +0200 @@ -0,0 +1,12 @@ +#!/bin/bash + +check() { + return 0 +} + +install() { + inst_multiple mountpoint + + mkdir -p "${initdir}/$systemdsystemunitdir/initrd-parse-etc.service.d" + inst_simple "$moddir/writable-etc.conf" "$systemdsystemunitdir/initrd-parse-etc.service.d/writable-etc.conf" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf --- old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf 1970-01-01 01:00:00.000000000 +0100 +++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/dracut/modules.d/50writable-etc/writable-etc.conf 2025-04-15 16:19:23.000000000 +0200 @@ -0,0 +1,8 @@ +[Service] +# /etc is a subvolume of the read-only root file system, so also mounted +# read-only. Mounting it read-write requires a two step process: +# - Bind mount the subvolume to get a dedicated mount point +# - Remount that bind mount as read-write +# Unfortunately systemd does not support two lines for one mount point, +# so the remount part is done manually here. +ExecStart=/bin/sh -e -c 'if mountpoint -q /sysroot/etc; then mount -o remount,rw /sysroot/etc; fi' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf --- old/read-only-root-fs-1.0+git20240228.d85232a/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf 2024-02-28 14:01:51.000000000 +0100 +++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/lib/systemd/system/systemd-remount-fs.service.d/writableagain.conf 2025-04-15 16:19:23.000000000 +0200 @@ -3,3 +3,6 @@ # ro-remount of /, so that the filesystem is writable again as # quickly as possible (boo#1156421). ExecStart=/bin/sh -e -c 'if mountpoint -q /boot/writable; then mount -o remount,rw /boot/writable; fi' +# Changing the read/write mode of a bind mount needs a second +# fstab entry, but systemd doesn't support set by itself +ExecStart=/bin/sh -e -c 'if mountpoint -q /etc; then mount -o remount,rw /etc; fi' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/read-only-root-fs-1.0+git20240228.d85232a/usr/libexec/setup-etc-subvol new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/libexec/setup-etc-subvol --- old/read-only-root-fs-1.0+git20240228.d85232a/usr/libexec/setup-etc-subvol 1970-01-01 01:00:00.000000000 +0100 +++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/libexec/setup-etc-subvol 2025-04-15 16:19:23.000000000 +0200 @@ -0,0 +1,28 @@ +#!/bin/sh -e +# +# Copyright (c) 2019-2025 SUSE Linux GmbH, Nuernberg, Germany +# +# Create nested /etc subvolume and add it to fstab. + +# Already there? +if [ -e /etc/fstab ] && [ -n "$(awk '$2 == "/etc"' /etc/fstab)" ]; then + echo "ERROR: Conflicting /etc entry found - cannot create nested subvolume." + exit 1 +fi + +echo "Creating nested /etc subvolume..." +mv /etc /etc.transactional-update +btrfs subvolume create /etc +rsync --quiet --archive --xattrs --acls /etc.transactional-update/ /etc +rm -r /etc.transactional-update + +# Add entry for /etc +echo "/etc /etc none bind,x-initrd.mount 0 0" >> /etc/fstab + +# Still expected by components such as Combustion +gawk -i inplace '$2 == "/var" { $4 = $4",x-initrd.mount" } { print $0 }' /etc/fstab + +# Make the /root subvolume available during ignition runs (boo#1161264) +gawk -i inplace '$2 == "/root" { $4 = $4",x-initrd.mount" } { print $0 }' /etc/fstab + +exit 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/read-only-root-fs-1.0+git20240228.d85232a/usr/sbin/setup-fstab-for-overlayfs new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/sbin/setup-fstab-for-overlayfs --- old/read-only-root-fs-1.0+git20240228.d85232a/usr/sbin/setup-fstab-for-overlayfs 2024-02-28 14:01:51.000000000 +0100 +++ new/read-only-root-fs-1.0+git20250415.7e7aea4/usr/sbin/setup-fstab-for-overlayfs 1970-01-01 01:00:00.000000000 +0100 @@ -1,34 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2019 SUSE Linux GmbH, Nuernberg, Germany -# -# Add mountpoint for the /etc overlay and workaround for /var to /etc/fstab -# - -# Already there? -if [ -e /etc/fstab ] && grep -qE '^overlay[[:space:]]+/etc[[:space:]]' /etc/fstab; then - exit 0 # Do nothing -fi - -# Not a fresh installation? -if [ -e /etc/fstab.sys ]; then - # Let transactional-update handle the migration - doing anything here would be pointless - # as it's only written into the overlay anyway and if for some reason transactional-update - # is too old, it would result in duplicate /etc entries. - exit 0 -fi - -# Add entry for /etc -# Workaround for bsc#1121276 is to prefix paths in /etc/fstab options with /sysroot, -# which also means duplicating the x-systemd.requires-mounts-for entry for /etc. -cat << EOF >> /etc/fstab -overlay /etc overlay defaults,lowerdir=/sysroot/etc,upperdir=/sysroot/var/lib/overlay/1/etc,workdir=/sysroot/var/lib/overlay/work-etc,x-systemd.requires-mounts-for=/var,x-systemd.requires-mounts-for=/sysroot/var,x-initrd.mount 0 0 -EOF - -# Workaround for bsc#1121279 -gawk -i inplace '$2 == "/var" { $4 = $4",x-initrd.mount" } { print $0 }' /etc/fstab - -# Make the /root subvolume available during ignition runs (boo#1161264) -gawk -i inplace '$2 == "/root" { $4 = $4",x-initrd.mount" } { print $0 }' /etc/fstab - -exit 0