Bug 2190226

Summary: Support defining mount units on the kernel command line
Product: Red Hat Enterprise Linux 9 Reporter: Bryn M. Reeves <bmr>
Component: systemdAssignee: David Tardon <dtardon>
Status: CLOSED ERRATA QA Contact: Frantisek Sumsal <fsumsal>
Severity: medium Docs Contact:
Priority: medium    
Version: 9.2CC: bmader, dtardon, jamacku, pdwyer, systemd-maint-list, vgoyal
Target Milestone: rcKeywords: FutureFeature, Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: systemd-252-18.el9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 2190228 (view as bug list) Environment:
Last Closed: 2023-11-07 08:54:03 UTC Type: Story
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2177839    

Description Bryn M. Reeves 2023-04-27 15:31:46 UTC
Description of problem:
We'd like the ability to define mount units on the kernel command line. This allows the system to be booted into a snapshot of the system state (for e.g. using LVM2 CoW or thin provisioned snapshots) and enables rollback for system updates by allowing the administrator to preserve a copy of the prior system state and to optionally roll the system back to that state at a later time using the snapshot merge facility.

This would add new kernel command line syntax something like the following:

  systemd.mount=what:where:fstype:options

The feature has been proposed to upstream systemd and has received some initial positive comments:

  https://github.com/systemd/systemd/issues/27260

The new functionality would be added to the existing systemd-fstab-generator to write out mount units during early boot.

Version-Release number of selected component (if applicable):
systemd-250-12.el9_1

How reproducible:
100%

Steps to Reproduce:
1. man systemd-fstab-generator

Actual results:
No syntax exists for specifying kernel command line mount units.

Expected results:
The ability to specify mount units on the kernel command line

Additional info:
This will be used by Leapp and boom to provide rollback capable upgrades.

Comment 1 Bryn M. Reeves 2023-07-31 15:24:01 UTC
There are two additional pull requests for this feature that were merged for v254:

  fstab-generator: fixes for systemd.mount-extra=
  https://github.com/systemd/systemd/pull/28518

  fstab-generator: enable fsck for block device mounts specified in sys…
  https://github.com/systemd/systemd/pull/28544

Comment 2 Plumber Bot 2023-08-22 10:13:54 UTC
fix merged to github main branch -> https://github.com/redhat-plumbers/systemd-rhel9/pull/174

Comment 4 Bryn M. Reeves 2023-08-22 14:39:45 UTC
Tested with a recent RHEL-9.3 compose and systemd-252-18.el9.

Using the following command line:

systemd.mount-extra=/dev/rhel/root-snap:/:xfs:defaults rd.lvm.lv=rhel/root-snap crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M fstab=no systemd.mount-extra=/dev/rhel/var-snap:/var:xfs:defaults systemd.mount-extra=/dev/rhel/home:/home:xfs:defaults console=tty1 console=ttyS1

The system boots correctly into the snapshot environment and the generated mount units all look correct:

  # ls /run/systemd/generator/
  getty.target.wants  home.mount  local-fs.target.requires  local-fs.target.wants  -.mount  var.mount

  # cat /run/systemd/generator/-.mount 
  # Automatically generated by systemd-fstab-generator

  [Unit]
  Documentation=man:fstab(5) man:systemd-fstab-generator(8)
  SourcePath=/proc/cmdline
  Before=local-fs.target
  After=blockdev@dev-rhel-root\x2dsnap.target

  [Mount]
  What=/dev/rhel/root-snap
  Where=/
  Type=xfs

Comment 10 errata-xmlrpc 2023-11-07 08:54:03 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (systemd bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2023:6640