Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-135363

tuned-adm conflict with bootc using transient etc leads to kernel modules stacking over time

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • rhel-9.7
    • tuned
    • None
    • None
    • Low
    • rhel-net-perf
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      What were you trying to do that didn't work?

      If you have a bootc image with a transient etc there's a conflict where it just keps adding 

      What is the impact of this issue to you?

      Leads to multiple tuned kernel arguments, which stack between reboots as you apply new profiles

      Please provide the package NVR for which the bug is seen:

      tuned-2.26.0-1.el9.noarch

      How reproducible is this bug?:

      reproducible

      Steps to reproduce

      Build transient etc container:

       

      # vi ContainerFile2 
      # cat ContainerFile2
      FROM registry.redhat.io/rhel9/rhel-bootc:9.7
      RUN cat > /usr/lib/ostree/prepare-root.conf <<EOF
      [composefs]
      enabled = yes
      [sysroot]
      readonly = true
      [etc]
      transient = true
      EOF
      RUN kver=$(cd /usr/lib/modules && echo *); dracut -vf /usr/lib/modules/"$kver"/initramfs.img "$kver"
      RUN yum install -y tuned && yum clean all
      
      # podman build -f ContainerFile2 -t quay.io/<username>/test2-bootc:latest podman run -d --rm --name test2-bootc quay.io/<username>/test2-bootc:latest /sbin/init podman exec -it test2-bootc /bin/bash
      # podman login quay.io
      # podman push quay.io/<username>/test2-bootc:latest 
      # podman run --rm --privileged --pid=host -e IMAGE=quay.io/<username>/test2-bootc:latest -e REGISTRY_AUTH_FILE=/etc/ostree/auth.toml -v /root/config.toml:/etc/ostree/auth.toml -v /dev:/de
      v -v /var:/var --security-opt label=type:unconfined_t  quay.io/<username>/test2-bootc:latest bootc install to-disk --source-imgref=docker://${IMAGE} --wipe /dev/vda


       

      From the running image:

      
      [root@localhost ~]# cat /etc/tuned/active_profile 
      virtual-guest
      [root@localhost ~]# mkdir /etc/tuned/myprofile
      [root@localhost ~]# vi /etc/tuned/myprofile/tuned.conf
      [root@localhost ~]# cat /etc/tuned/myprofile/tuned.conf 
      [bootloader]
      cmdline_foobar = foo=bar
      [root@localhost ~]# tuned-adm profile myprofile 
      [root@localhost ~]# rpm-ostree kargs
      root=UUID=53d95b05-42f0-4186-96bc-0ca8e70e74e3 rw ostree=/ostree/boot.1/default/ed2282e718aa41fbd503ebf409f2b5bcf744629b8859da05cff2e5165710b2dd/0 foo=bar

      Reboot

      /etc is wiped since it is transient.

      
      [root@localhost ~]# cat /etc/tuned/active_profile 
      virtual-guest
      [root@localhost ~]# cat /proc/cmdline 
      BOOT_IMAGE=(hd0,gpt3)/boot/ostree/default-ed2282e718aa41fbd503ebf409f2b5bcf744629b8859da05cff2e5165710b2dd/vmlinuz-5.14.0-611.11.1.el9_7.x86_64 root=UUID=53d95b05-42f0-4186-96bc-0ca8e70e74e3 rw ostree=/ostree/boot.0/default/ed2282e718aa41fbd503ebf409f2b5bcf744629b8859da05cff2e5165710b2dd/0 foo=bar
      [root@localhost ~]# rpm-ostree kargs
      root=UUID=53d95b05-42f0-4186-96bc-0ca8e70e74e3 rw ostree=/ostree/boot.0/default/ed2282e718aa41fbd503ebf409f2b5bcf744629b8859da05cff2e5165710b2dd/0 foo=bar
      [root@localhost ~]# mkdir /etc/tuned/myprofile
      [root@localhost ~]# vi /etc/tuned/myprofile/tuned.conf
      [root@localhost ~]# cat /etc/tuned/myprofile/tuned.conf
      [bootloader]
      cmdline_barfoo = bar=foo
      [root@localhost ~]# tuned-adm profile myprofile 
      [root@localhost ~]# rpm-ostree kargs
      root=UUID=53d95b05-42f0-4186-96bc-0ca8e70e74e3 rw ostree=/ostree/boot.0/default/ed2282e718aa41fbd503ebf409f2b5bcf744629b8859da05cff2e5165710b2dd/0 foo=bar bar=foo

      So since /etc is transient it leads to this conflict where tuned-adm isn't tracking the kernel arguments so it just keeps stacking.

      Expected results

      tuned should be able to remove/add kernel arguments it previously added

      Actual results

      tuned just keep stacking kernel arguments since it is tracking the profile in /etc which is transient (so reverted back to original state after rebooting)

              jskarvad Jaroslav Škarvada
              rhn-support-ckrell Charlie Krell
              Jaroslav Škarvada Jaroslav Škarvada
              Robin Hack Robin Hack
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

                Created:
                Updated: