Administrative tasks : questions regarding storage size & updates

Hi all,
I have been using Fedora IOT for a few months now but really struggle with some basic administrative tasks. The documentation if very limited so I am looking for some help here. If you don’t want to read all the context, I have summed up everything in a few questions directly bellow :slight_smile:

Context

After a few weeks of usage I always end up in a situation where updates fails with:

$ sudo rpm-ostree update
[...]
Resolving dependencies... done
error: Could not depsolve transaction; 4 problems detected:
 Problem 1: The operation would result in removing the following protected packages: systemd
 Problem 2: The operation would result in removing the following protected packages: systemd
 Problem 3: The operation would result in removing the following protected packages: systemd
 Problem 4: The operation would result in removing the following protected packages: systemd

The list of the packages to update does include systemd related ones. But this shouldn’t be an issue:

systemd 256.7-1.fc41 -> 256.11-1.fc41
systemd-devel 256.7-1.fc41 -> 256.12-1.fc41
systemd-libs 256.7-1.fc41 -> 256.11-1.fc41
systemd-pam 256.7-1.fc41 -> 256.11-1.fc41
systemd-resolved 256.7-1.fc41 -> 256.11-1.fc41
systemd-rpm-macros 256.7-1.fc41 -> 256.12-1.fc41
systemd-udev 256.7-1.fc41 -> 256.11-1.fc41

I suspect this comes from the storage getting full:

df -h
Filesystem                           Size  Used Avail Use% Mounted on
/dev/mapper/fedora_fedora--iot-root   69G   64G  1.5G  98% /sysroot
devtmpfs                             4.0M     0  4.0M   0% /dev
tmpfs                                 32G  8.0K   32G   1% /dev/shm
efivarfs                             256K  150K  102K  60% /sys/firmware/efi/efivars
tmpfs                                 13G  1.9M   13G   1% /run
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-network-generator.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-udev-load-credentials.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-sysctl.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-tmpfiles-setup-dev-early.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-sysusers.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-tmpfiles-setup-dev.service
tmpfs                                 32G  4.0K   32G   1% /tmp
/dev/nvme0n1p2                       974M  108M  799M  12% /boot
/dev/nvme0n1p1                       599M  7.6M  592M   2% /boot/efi
/dev/mapper/fedora_fedora--iot-home  369G   26G  325G   8% /var/home
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-tmpfiles-setup.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-resolved.service
tmpfs                                1.0M     0  1.0M   0% /run/credentials/systemd-vconsole-setup.service
tmpfs                                6.3G   16K  6.3G   1% /run/user/1000
tmpfs                                1.0M     0  1.0M   0% /run/credentials/getty@tty1.service

The root partition being 98% full.

Questions

So here are a few questions I was unfortunately not able to answer using the forum or the documentation:

  • Is the root partition size automatically managed
  • If not, how to increase its size

Running the “update” command again does not re-download the packages. Which means it is cached somewhere.

  • How to remove this cache ?
  • How to cleanup rpm-ostree and free up some storage ?

Also if you have a larger source of documentation other than Fedora Docs, feel free to share it !
Thanks a lot

If you do a search you will find answers to your questions.
e.g. Increasing disk space in root partition - #8 by computersavvy

and
https://www.reddit.com/r/Fedora/comments/x7lzwh/how_to_remove_cache_in_rpmostree_fedora_silverblue/

rpm-ostree cleanup

So yes, the documentation is not complete, but do start with a search :slight_smile:

The first failure you presented may due to some additional packages that you have installed or layered onto your system. If you could share the output of rpm-ostree status, that would be helpful for additional diagnosis. (If the root cause was lack of available storage, you would have received a different error.)

It looks like you are using LVM for your storage, so you may be able to adjust the Logical Volumes (LVs) that you are using. Notably, it appears that the fedora_fedora--iot-home LV has 325G allocated to it and only 26G used, so there appears to be some unused space that you could reallocate.

You may be able to use lvreduce to shrink the size of that LV and then lvextend to increase the size of fedora_fedora--iot-root. You should adjust the size of your filesystem after doing those LV operations; how you do this depends on which filesystem you have used, i.e. ext4, xfs, etc.

I’d recommend backing up any data on your system before doing this; additionally, it would probably be safest to do these operations booted into a Live ISO or the like. Adjusting storage + filesystems of your root partition while booted into that root partition can have disasterous results.

You can do some maintenance with the rpm-ostree cleanup command. I would suggest using rpm-ostree cleanup --base --repomd, which cleanup any temporary files and the cached RPM repo metadata.

Thank you both for your reply.

For the storage size

I was able to shrink the home partition and extend the root one. I am sharing the instructions here as it could help others in the future:

  • Make sure to backup any important data
  • Boot a live Fedora Desktop to make sure the /boot and /home partitions are not mounted
  • Shrink down the home partition (here I only want it to be 300gb)
    sudo lvreduce -r -L 300g /dev/fedora_fedora-iot/home
  • Check how much free space you now have
    sudo vgdisplay
    Pay attention to this line in particular:
    Free PE / Size XXXXX / 12.34 GiB
  • Resize the root partition to use this free space
    Replace “XXXXX” with the number of blocks from previous command. Make sure to put the “+” before so it gets added to current size instead of being interpreted as the target size
    sudo lvextend -r -l +XXXXX /dev/fedora_fedora-iot/root

For the update

$ rpm-ostree status
State: idle
Deployments:
● fedora-iot:fedora/stable/x86_64/iot
                  Version: 41.20250308.0 (2025-03-08T12:09:27Z)
               BaseCommit: db46378389a93846ca254d0e550fc52dbfc0782f1f0291cb6e171420345c1fd4
             GPGSignature: Valid signature by 466CF2D8B60BC3057AA9453ED0622462E99D6AD1
          LayeredPackages: 'gcc-c++' 'nvidia-container-toolkit*' 'rust-winit+wayland-client-devel' alsa-lib-devel alsa-utils autoconf automake bzip2 bzip2-devel cargo clang-devel cmake containerd.io docker-buildx-plugin docker-ce
                           docker-ce-cli docker-compose-plugin ffmpeg-free-devel freetype-devel gcc git libopusenc-devel libtool make masv-agent nvidia-container-runtime-hook qt6-qtwayland-devel rsync rust seatd weston
                           xorg-x11-server-Xwayland zlib-devel

  fedora-iot:fedora/stable/x86_64/iot
                  Version: 41.20250308.0 (2025-03-08T12:09:27Z)
               BaseCommit: db46378389a93846ca254d0e550fc52dbfc0782f1f0291cb6e171420345c1fd4
             GPGSignature: Valid signature by 466CF2D8B60BC3057AA9453ED0622462E99D6AD1
          LayeredPackages: 'gcc-c++' 'nvidia-container-toolkit*' 'rust-winit+wayland-client-devel' alsa-lib-devel alsa-utils autoconf automake bzip2 bzip2-devel cargo clang-devel cmake containerd.io docker-buildx-plugin docker-ce
                           docker-ce-cli docker-compose-plugin ffmpeg-free-devel freetype-devel gcc git libopusenc-devel libtool make nvidia-container-runtime-hook qt6-qtwayland-devel rsync rust seatd weston xorg-x11-server-Xwayland
                           zlib-devel

I was using RPM Fusion to install the Nvidia drivers, following this documentation: adding RPM Fusion & installing the drivers

I was able to get rid of the following errors by removing the akmod-nvidia & xorg-x11-drv-nvidia packages:

The operation would result in removing the following protected packages: systemd

I was then able to perform the update. But now I cannot re-install the two packages as it throws the same error. I tried removing RPM Fusion sources, no luck.

The behavior is always the same. Installing both packages from a fresh install always work. However after some time and a few updates, it breaks.

It could related to akmods, which might require a different systemd version than the one installed ? In any case I am not quite sure how I could fix the install and prevent Fusion packages to interfere with systemd

It could be that the packages provided by RPM Fusion need newer versions of systemd than what is available in Fedora. Usually this resolves itself as the newer version becomes available in Fedora or the dependencies for the RPM Fusion provided packages are adjusted. Though this is just speculation and could be wildly incorrect.

1 Like