Changes in Fedora 41 For System Administrators

DNF 5

The default package manager in Fedora 41 is DNF 5. This is a large upgrade that brings many enhancements, notably:

  • Reduced footprint: The dnf5 package is a fully-featured package manager that doesn’t require Python dependencies. It also reduces the number of software management tools in Fedora by replacing both the dnf and microdnf packages. The installation size of the dnf5 stack in an empty container is approximately 60% smaller than the dnf installation.

    Additionally, in previous Fedora releases, dnf, microdnf, and PackageKit used their own caches, leading to significant metadata redundancy. With dnf5 and dnf5daemon, which share metadata, this redundancy will be eliminated.

  • Faster query processing: The processing of package metadata is now significantly faster. Executing commands such as repoquery to list packages available in repositories is now twice as fast compared to dnf. Similarly, operations like listing dependencies or parsing numerous command-line arguments are notably expedited, potentially saving users seconds to tens of seconds in waiting time for the results.

  • Lowered maintenance costs: Many functional duplicates in dnf were eliminated during the development of the new dnf5 package manager. This was partly because the integration of the original PackageKit and dnf libraries into the original libdnf library was never completed. Plugins are now included in the same package as the core functionality.

  • Consolidated and streamlined API: The API for managing packages, working with repositories, and solving package dependencies is now consolidated into a single component, providing a unified solution. The original dnf API underwent a review process, during which unused workflows and obsolete methods were removed, while improving usability for users.

  • Enhanced command-line outputs: Transaction tables now offer more detailed information, verbose scriptlet outputs are redirected and organized by package name into log files, individual commands come with their own man pages, bash completion has been enhanced, and numerous other improvements have been made.

  • Unified user experience: Consistent user experience is now offered to users across servers, workstations, and containers, as dnf5 is the sole package manager deployed there. Existing dnf, yum, and microdnf commands are linked to dnf5, while compatibility aliases for essential use cases will be provided to facilitate migration. Configuration files are now shared among dnf5 components. API users will encounter unified code style and naming conventions. Various scripting language interfaces are now provided from a single source using SWIG bindings (formerly CPython and SWIG).

For information about this release, see the upstream DNF5 documentation, particularly the list of changes between DNF and DNF5. Developers should also check the DBus API bindings for dnfdaemon.

RPM 4.20

RPM in Fedora 41 has been updated to version 4.20, which provides a number of improvements, such as:

  • Hands-free packaging

    • Declarative build system

    • Dynamic spec generation extended

    • File trigger scriptlet arguments

    • Support for spec local dependency generators

    • Support for sysusers 'm' directive

    • Guaranteed per-build directory

  • Public plugin API

  • Increased install scriptlet isolation

See the upstream release notes for details.

DNF and bootc in Image Mode Fedora variants

Starting with Fedora 41, the Fedora Atomic Desktops, Fedora CoreOS and Fedora IOT will ship bootc and DNF5 as part of the image. Now you can use dnf commands as part of container builds that use these Fedora variants as the base image. While rpm-ostree is still available, you can now use bootc to manage your image mode deployments and updates.

When running dnf on a booted image mode system, DNF will give a better error message pointing to the available tools on your booted system to accomplish your task. This is the start of a process to enable DNF with rpm-ostree features and the re-focus on bootc to manage image mode deployments.

SPDX Migration

RPM packages use SPDX identifiers as a standard for licenses. 90 % of the packages have been migrated to SPDX identifiers. The remaining packages are estimated to be migrated to SPDX in Fedora 42. A list of all licenses allowed (and used) in Fedora Linux can be found at Fedora Legal page. Out of 90%, nine percent of the packages have a temporary license LicenseRef-Callaway-* that conforms to SPDX, but needs to be assigned the correct license ID from the SPDX organization.

Remove ifcfg support in NetworkManager

NetworkManager removes support for connection profiles stored in ifcfg format. It is deprecated upstream and the native Keyfile format is valid and a better replacement. The following packages are being dropped. NetworkManager-initscripts-ifcfg-rh, NetworkManager-dispatcher-routing-rules and NetworkManager-initscripts-updown.

Running SSSD with reduced privileges

To support general system hardening (running software with least privileges possible), the SSSD service is now configured to run under sssd or root user using the systemd service configuration files. This service user now defaults to sssd and irrespective of what service user is configured, root or sssd, all root capabilities are dropped with the exception of a few privileged helper processes.

Removal of the sss_ssh_knownhostsproxy tool

The sss_ssh_knownhostsproxy tool was deprecated in the previous release and has now been removed. It is replaced by the sss_ssh_knownhosts tool. See man sss_ssh_knownhosts(1) to learn how to use it.

Consistent device naming in Fedora Cloud

Previously, the Fedora Cloud edition used to set the net.ifnames=0 kernel command-line parameter during the kickstart process. This would disable the consistent naming for networking devices and ensured that Ethernet devices kept their traditional names such as eth0, eth1, and so on. With this update, net.ifnames=0 has been removed from the Fedora Cloud kickstart file to ensure consistency in the network device naming and to align with the other Fedora editions.

Remove network-scripts

With this update, the long-deprecated package network-scripts will be removed. The package provided the legacy utilities ifup and ifdown, as well as the network.service. Network scripts heavily depend on the Dynamic Host Configuration Protocol (DHCP) client, and without active development, there is no chance of updating them to use an alternative client.

Packages that depend to some extent on network-scripts:

Note that this change also affects all users with local custom network-scripts that require functionality from the network-scripts package.

Access to all versions of Kubernetes and its related components

Starting with Fedora 41, all supported versions of Kubernetes, CRI-O and CRI-Tools will be available concurrently. As an example, Fedora 41 has the following Kubernetes RPMs at release:

  • kubernetes1.29

  • kubernetes1.30

  • kubernetes1.31

This is a significant change from the past Fedora releases, which only had a single version of Kubernetes available in Fedora repositories. CRI-O and CRI-Tools RPMs also share this change with versions available to complement Kubernetes. For more information, see this Fedora Quick Doc.

TuneD is the default power profile management modules/release-notes/pages

TuneD replaced power-profiles-daemon as a default power profile management daemon for the following Fedora workstation spins:

  • KDE Plasma

  • GNOME

The server users can customize the desktop-exposed power profiles by editing the /etc/tuned/ppd.conf file in the command-line. The workstation users can set the power profile through the GUI control center.

The tuned-ppd package provides a drop-in replacement for the power-profiles-daemon, which allows it to be used with the current desktops.

Those applications that already use power-profiles-daemon can access TuneD without modifying the code.

Netavark uses nftables by default

Netavark is a container networking tool used by Podman. Netavark manages interfaces and firewall rules and with this Fedora update, it will use nftables by default to create firewall rules for containers.

Unprivileged updates for Fedora Atomic Desktops

On Atomic Desktops, the policy controlling access to the rpm-ostree daemon has been updated to:

  • Enable users to update the system without having elevated privileges or typing a password. Note that this change only applies to system updates and repository meta updates; not to other operations.

  • Reduce access to the most privileged operations (such as changing the kernel arguments, or rebasing to another image) of rpm-ostree for administrators to avoid mistakes. Only the following operations will remain password-less to match the behavior of the package mode Fedora with the dnf command:

    • install and uninstall packages

    • upgrade the image

    • rollback the image

    • cancel transactions

    • cleanup deployment

ComposeFS enabled by default for Fedora CoreOS and IoT editions

On Fedora CoreOS and Fedora IoT systems, the root mount of the system (/) is now mounted using composefs, which makes it a truly read only filesystem, increasing the system integrity and robustness. This is the first step toward a full at runtime verification of filesystem integrity.

Enable bootupd on Fedora Silverblue and Kinoite editions

On Atomic Desktops, the bootloader is now automatically updated using bootupd. New systems are now installed with a static GRUB configuration which relies only on the Boot Loader Specification configuration files and is not regenerated for each update.

Multiple versioned Kubernetes packages

The upstream Kubernetes project maintains 3 concurrent versions with a new release every 4 months. Previously, in Fedora, only one of these versions was always provided, and matched with a specific release. Starting with Fedora 41, all currently supported Kubernetes versions are provided, using separate packages named after each major version. Using the kubernetes-client rpm as an example, instead of kubernetes-client-1.29.2-1.fc41, Fedora now offers kubernetes1.29-client-1.29.2-1.fc41, kubernetes1.28-client-1.28.5-1.fc41, and kubernetes1.27-client-1.27.8-1.fc41.

Upgrading to Fedora 41 on a machine with Fedora 40 or Fedora 39 requires a manual step by the user to select the appropriate versioned Kubernetes package.

For more information, see the Fedora Quick Docs.

dm-vdo and vdo-8.3

Fedora 41 is the first Fedora release that provides the dm-vdo (virtual data optimizer) device mapper target, along with the vdo user tools package.

The dm-vdo target provides inline deduplication, compression, and thin provisioning. These features can be added to the storage stack, compatible with any file system. A dm-vdo target can be backed by up to 256TB of storage, and can present a logical size of up to 4PB. This target was originally developed starting in 2009. It was first released in 2013, and has been used in production environments ever since. It was made open-source in 2017, and merged into the upstream Linux kernel in 2024.

To support dm-vdo targets, the vdo user tool package provides the following tools:

  • vdoformat, which is required to create and format vdo volumes.

  • vdostats, which displays useful configuration and statistics information for vdo volumes.

  • vdoforcerebuild, which is used in bringing a vdo out of read-only mode following an unrecoverable error.

Additional diagnostic tools are also included in the vdo package. However, they are rarely needed for normal operation.

Although not required, it is strongly recommended that lvm2 be used to manage vdo volumes. See the lvm2 documentation for more information.

If you have a vdo volume created with the kvdo module, be sure to refer to the kvdo documentation for important considerations prior to attempting to upgrade to a dm-vdo target.

See the dm-vdo and vdo upstream documentation for additional details.

Stratis 3.7: stratisd 3.7.3 and stratis-cli 3.7.0

This update includes releases of stratisd 3.7.3 and stratis-cli 3.7.0. It includes one significant enhancement, several minor enhancements, and a number of small improvements.

Most significantly, Stratis 3.7.3 extends its functionality to allow a user to revert a snapshot, i.e., to overwrite a Stratis filesystem with a previously taken snapshot of that filesystem. The process of reverting requires two steps. First, a snapshot must be scheduled for revert. However, the revert can only take place when a pool is started. This can be done while stratisd is running, by stopping and then restarting the pool. A revert may also be occasioned by a reboot of the system stratisd is running on. Restarting stratisd will also cause a scheduled revert to occur, so long as the pool containing the filesystem to be reverted has already been stopped. To support this functionality, stratis-cli includes two new filesystem subcommands, schedule-revert and cancel-revert.

Some additional functionality has been added to support this revert functionality. First, a filesystem’s origin field is now included among its D-Bus properties and updated as appropriate. stratis-cli displays an origin value in its newly introduced filesystem detail view. stratisd also support a new filesystem D-Bus method which returns the filesystem metadata. The filesystem debug commands in stratis-cli now include a get-metadata option which will display the filesystem metadata for a given pool or filesystem. Equivalent functionality has been introduced for the pool metadata as well.

stratisd also includes a considerable number of dependency version bumps, minor fixes and additional testing, while stratis-cli includes improvements to its command-line parsing implementation.

Please consult the stratisd and stratis-cli changelogs for additional information about the release.

Fedora repoquery tool

Fedora 41 provides a new tool for querying repositories, fedora-repoquery, a small commandline tool for doing repoqueries of Fedora, EPEL, eln, and Centos Stream package repositories. It wraps dnf repoquery separating cached repo data under separate repo names for faster cached querying.

See the upstream readme for usage examples, or use fedora-repoquery --help after installing.

OpenSSL now distrusts SHA-1 signatures by default

OpenSSL in Fedora 41 no longer trusts SHA-1 signatures by default and blocks their creation as well. This change was implemented because chosen-prefix collision attacks on SHA-1 are becoming increasingly feasible. This brings Fedora’s security defaults closer to what is considered secure in modern day cryptographic landscape.

You can revert to previous default behavior either system-wide by using update-crypto-policies --set FEDORA40, or per process with runcp FEDORA40 command args, using the crypto-policies-extra tool available Copr. These old policies will be maintained in Fedora for several future releases. However, their use is generally not recommended.

Reproducible Package Builds

Fedora package builds are now more deterministic, bringing the distribution closer to the goal of achieving fully reproducible builds for all of its packages.

Libvirt Virtual Network NFTables

The libvirt virtual network has been changed to prefer use of the nftables firewall backend instead of iptables.

This change has some potential compatibility impact; see the Change page for details and workarounds.

Redis has been replaced with Valkey

Redis has been replaced with Valkey in Fedora 41 due to Redis' license change to RASLv2/SSPL which rendered it incompatible with Free and Open Source principles. Valkey is a full replacement of Redis which preserves the original BSD licensing.

When upgrading to Fedora Linux 41, systems with redis installed will be switched to valkey via the valkey-compat package. The change should be mostly transparent to users as the valkey-compat package provides config and data migration for most common configurations. The valkey systemd units will have aliases for redis to ease the migration for users.

OpenSSL engine support deprecated

Support for OpenSSL engines is deprecated in Fedora 41. Engines are not FIPS compatible and corresponding API is deprecated since OpenSSL 3.0. Those currently using OpenSSL engines should switch to using providers.