Chapter 4. New features

This part describes new features and major enhancements introduced in Red Hat Enterprise Linux 8.

4.1. Cockpit

Note

The Cockpit’s Subscriptions page is now provided by the new subscription-manager-cockpit package.

A firewall interface has been added to Cockpit

Cockpit’s Networking page now includes a Firewall section. In this section, users can enable or disable the firewall, as well as add, remove, and modify firewall rules.

(BZ#1647110)

Cockpit is now available by default

Packages for the Cockpit interface are now part of Red Hat Enterprise Linux default repositories, and can therefore be immediately installed on a registered RHEL 8 system.

In addition, on a non-minimal installation of RHEL 8, Cockpit is automatically installed and firewall ports required by Cockpit are automatically open. A system message has also been added prior to login that provides information about how to enable or access Cockpit.

(JIRA:RHELPLAN-10355)

Better IdM integration for Cockpit

If your system is enrolled in an Identity Management (IdM) domain, Cockpit now uses the domain’s centrally managed IdM resources by default. This includes the following benefits:

  • The IdM domain’s administrators can use Cockpit to manage the local machine.
  • Cockpit’s web server automatically switches to a certificate issued by the IdM certificate authority (CA) and accepted by browsers.
  • Users with a Kerberos ticket in the IdM domain do not need to provide login credentials to access Cockpit.
  • SSH hosts known to the IdM domain are accessible to Cockpit without manually adding an SSH connection.

Note that for IdM integration with Cockpit to work properly, the user first needs to run the ipa-advise utility with the enable-admins-sudo option in the IdM master system.

(JIRA:RHELPLAN-3010)

Cockpit is now compatible with mobile browsers

With this update, the Cockpit menus and pages can be navigated on mobile browser variants. This makes it possible to manage systems using Cockpit from a mobile device.

(JIRA:RHELPLAN-10352)

The Cockpit front page now displays missing updates and subscriptions

If a system managed by Cockpit has outdated packages or a lapsed subscription, a warning is now displayed on the Cockpit front page of the system.

(JIRA:RHELPLAN-10353)

Cockpit now supports PBD enrollment

With this update, you can use the Cockpit interface to apply Policy-Based Decryption (PBD) rules to disks on managed systems. This uses the Clevis decryption client to facilitate a variety of security management functions in Cockpit, such as automatic unlocking of LUKS-encrypted disk partitions.

(JIRA:RHELPLAN-10354)

Virtual Machines can now be managed using Cockpit

The Virtual Machines page can now be added to the Cockpit interface, which enables the user to create and manage libvirt-based virtual machines.

(JIRA:RHELPLAN-2896)

4.2. Installer and image creation

Installing and booting from NVDIMM devices is now supported

Prior to this update, Nonvolatile Dual Inline Memory Module (NVDIMM) devices in any mode were ignored by the installer.

With this update, kernel improvements to support NVDIMM devices provide improved system performance capabilities and enhanced file system access for write-intensive applications like database or analytic workloads, as well as reduced CPU overhead.

This update introduces support for:

  • The use of NVDIMM devices for installation using the nvdimm Kickstart command and the GUI, making it possible to install and boot from NVDIMM devices in sector mode and reconfigure NVDIMM devices into sector mode during installation.
  • The extension of Kickstart scripts for Anaconda with commands for handling NVDIMM devices.
  • The ability of grub2, efibootmgr, and efivar system components to handle and boot from NVDIMM devices.

(BZ#1499442)

Installing RHEL from a DVD using SE and HMC is now fully supported on IBM Z

The installation of Red Hat Enterprise Linux 8 on IBM Z hardware from a DVD using the Support Element (SE) and Hardware Management Console (HMC) is now fully supported. This addition simplifies the installation process on IBM Z with SE and HMC.

When booting from a binary DVD, the installer prompts the user to enter additional kernel parameters. To set the DVD as an installation source, append inst.repo=hmc to the kernel parameters. The installer then enables SE and HMC file access, fetches the images for stage2 from the DVD, and provides access to the packages on the DVD for software selection.

The new feature eliminates the requirement of an external network setup and expands the installation options.

(BZ#1500792)

Installer now supports the LUKS2 disk encryption format

Red Hat Enterprise Linux 8 installer now uses the LUKS2 format by default but you can select a LUKS version from Anaconda’s Custom Partitioning window or by using the new options in Kickstart’s autopart, logvol, part, and RAID commands.

LUKS2 provides many improvements and features, for example, it extends the capabilities of the on-disk format and provides flexible ways of storing metadata.

(BZ#1547908)

Anaconda supports System Purpose in RHEL 8

Previously, Anaconda did not provide system purpose information to Subscription Manager. In Red Hat Enterprise Linux 8.0, you can set the intended purpose of the system during installation by using Anaconda’s System Purpose window or Kickstart’s syspurpose command. When the installation completes, Subscription Manager uses the system purpose information when subscribing the system.

(BZ#1612060)

Pykickstart supports System Purpose in RHEL 8

Previously, it was not possible for the pykickstart library to provide system purpose information to Subscription Manager. In Red Hat Enterprise Linux 8.0, pykickstart parses the new syspurpose command and records the intended purpose of the system during automated and partially-automated installation. The information is then passed to Anaconda, saved on the newly-installed system, and available for Subscription Manager when subscribing the system.

(BZ#1612061)

Anaconda supports a new kernel boot parameter in RHEL 8

Previously, you could only specify a base repository from the kernel boot parameters. In Red Hat Enterprise Linux 8, a new kernel parameter, inst.addrepo=<name>,<url>, allows you to specify an additional repository during installation.

This parameter has two mandatory values: the name of the repository and the URL that points to the repository. For more information, see https://anaconda-installer.readthedocs.io/en/latest/boot-options.html#inst-addrepo

(BZ#1595415)

Anaconda supports a unified ISO in RHEL 8

In Red Hat Enterprise Linux 8.0, a unified ISO automatically loads the BaseOS and AppStream installation source repositories.

This feature works for the first base repository that is loaded during installation. For example, if you boot the installation with no repository configured and have the unified ISO as the base repository in the GUI, or if you boot the installation using the inst.repo= option that points to the unified ISO. As a result, the AppStream repository is enabled under the Additional Repositories section of the Installation Source GUI window. You cannot remove the AppStream repository or change its settings but you can disable it in Installation Source. This feature does not work if you boot the installation using a different base repository and then change it to the unified ISO. If you do that, the base repository is replaced. However, the AppStream repository is not replaced and points to the original file.

(BZ#1610806)

4.3. Kernel

Support for 5-level paging

New P4d_t software page table type has been added into the Linux kernel in order to support 5-level paging in Red Hat Enterprise Linux 8.

(BZ#1485532)

Memory management supports 5-level page tables

With Red Hat Enterprise Linux 7, existing memory bus had 48/46 bit of virtual/physical memory addressing capacity, and the Linux kernel implemented 4 levels of page tables to manage these virtual addresses to physical addresses. The physical bus addressing line put the physical memory upper limit capacity at 64 TB.

These limits have been extended to 57/52 bit of virtual/physical memory addressing with 128 PiB of virtual address space and 4 PB of physical memory capacity.

With the extended address range, the memory management in Red Hat Enterprise Linux 8 adds support for 5-level page table implementation, to be able to handle the expanded address range.

(BZ#1485525)

Control Group v2 in RHEL 8

Red Hat Enterprise Linux 8 supports the Control Group v2 mechanism, which is a unified hierarchy control group. Control Group v2 organizes processes hierarchically and distributes system resources along the hierarchy in a controlled and configurable manner.

Unlike the previous version, Control Group v2 has only a single hierarchy. This single hierarchy enables to:

  • Categorize processes based on the role of their owner.
  • Eliminate issues with conflicting policies of multiple hierarchies.

Control Group v2 supports numerous controllers:

  • CPU controller regulates the distribution of CPU cycles. This controller implements:

    • Weight and absolute bandwidth limit models for normal scheduling policy.
    • Absolute bandwidth allocation model for real time scheduling policy.
  • Memory controller regulates the memory distribution. Currently, the following types of memory usages are tracked:

    • Userland memory - page cache and anonymous memory.
    • Kernel data structures such as dentries and inodes.
    • TCP socket buffers.
  • I/O controller regulates the distribution of I/O resources.
  • Writeback controller interacts with both Memory and I/O controllers and is Control Group v2 specific.

The information above was based on https://www.kernel.org/doc/Documentation/cgroup-v2.txt. You can refer to the same link to obtain more information about particular Control Group v2 controllers.

(BZ#1401552)

sosreport can report eBPF-based programs and maps

The sosreport tool has been enhanced to report any loaded extended Berkeley Packet Filtering (eBPF) programs and maps in Red Hat Enterprise Linux 8.

(BZ#1559836)

bpftool for inspection and manipulation of eBPF-based programs and maps added

The bpftool utility that serves for inspection and simple manipulation of programs and maps based on extended Berkeley Packet Filtering (eBPF) has been added into the Linux kernel. bpftool is a part of the kernel source tree, and is provided by the bpftool package, which is included as a sub-package of the kernel package.

(BZ#1559607)

Red Hat Enterprise Linux 8 supports early kdump

Previously, the kdump service started too late to capture crash information (vmcore) of early kernel crashes. The new early kdump feature allows the crash kernel and initramfs to load early enough to capture the vmcore information even for early crashes. For more details about early kdump, see the /usr/share/doc/kexec-tools/early-kdump-howto.txt file.

(BZ#1520209)

4.4. Software management

YUM performance improvement and support for modular content

On Red Hat Enterprise Linux 8, installing software is ensured by the new version of the YUM tool, which is based on the DNF technology.

YUM based on DNF has the following advantages over the previous YUM v3 used on RHEL 7:

  • Increased performance
  • Support for modular content
  • Well-designed stable API for integration with tooling

For detailed information about differences between the new YUM tool and the previous version YUM v3 from RHEL 7, see http://dnf.readthedocs.io/en/latest/cli_vs_yum.html.

YUM based on DNF is compatible with YUM v3 when using from the command line, editing or creating configuration files.

For installing software, you can use the yum command and its particular options in the same way as on RHEL 7. Packages can be installed under the previous names using Provides. Packages also provide compatibility symlinks, so the binaries, configuration files and directories can be found in usual locations.

Note that the legacy Python API provided by YUM v3 and the Libdnf C API are unstable and will likely change during Red Hat Enterprise Linux 8 life cycle. Users are advised to migrate their plugins and scripts to the new DNF Python API, which is stable and fully supported. The DNF Python API is available at https://dnf.readthedocs.io/en/latest/api.html

Some of the YUM v3 features may behave differently in YUM based on DNF. If any such change negatively impacts your workflows, please open a bug in Red Hat Bugzilla.

(BZ#1581198)

Notable RPM features in RHEL 8

Red Hat Enterprise Linux 8 is distributed with RPM 4.14. This version introduces many enhancements over RPM 4.11, which is available in RHEL 7. The most notable features include:

  • The debuginfo packages can be installed in parallel
  • Support for weak dependencies
  • Support for rich or boolean dependencies
  • Support for packaging files above 4 GB in size
  • Support for file triggers

Also, the most notable changes include:

  • Stricter spec-parser
  • Simplified signature checking the output in non-verbose mode
  • Additions and deprecation in macros

(BZ#1581990)

RPM now validates the entire package contents before starting an installation

On Red Hat Enterprise Linux 7, the RPM utility verified payload contents of individual files while unpacking. However, this is insufficient for multiple reasons:

  • If the payload is damaged, it is only noticed after executing script actions, which are irreversible.
  • If the payload is damaged, upgrade of a package aborts after replacing some files of the previous version, which breaks a working installation.
  • The hashes on individual files are performed on uncompressed data, which makes RPM vulnerable to decompressor vulnerabilities.

On Red Hat Enterprise Linux 8, the entire package is validated prior to the installation in a separate step, using the best available hash.

Packages built on Red Hat Enterprise Linux 8 use a new SHA-256 hash on the compressed payload. On signed packages, the payload hash is additionally protected by the signature, and thus cannot be altered without breaking a signature and other hashes on the package header. Older packages use the MD5 hash of the header and payload unless it is disabled by configuration.

The %_pkgverify_level macro can be used to additionally enable enforcing signature verification before installation or disable the payload verification completely. In addition, the %_pkgverify_flags macro can be used to limit which hashes and signatures are allowed. For example, it is possible to disable the use of the weak MD5 hash at the cost of compatibility with older packages.

(JIRA:RHELPLAN-10596)

4.5. Infrastructure services

Notable changes in the recommended Tuned profile in RHEL 8

With this update, the recommended Tuned profile (reported by the tuned-adm recommend command) is now selected based on the following rules - the first rule that matches takes effect:

  • If the syspurpose role (reported by the syspurpose show command) contains "atomic", and at the same time:

    • if Tuned is running on bare metal, the "atomic-host" profile is selected
    • if Tuned is running in a virtual machine, the "atomic-guest" profile is selected
  • If Tuned is running in a virtual machine, the "virtual-guest" profile is selected
  • If the syspurpose role contains "desktop" or "workstation" and the chassis type (reported by dmidecode) is "Notebook", "Laptop", or "Portable", then the "balanced" profile is selected
  • If none of the above rules matches, the "throughput-performance" profile is selected

(BZ#1565598)

Geolite Databases have been replaced by Geolite2 Databases

Geolite Databases that were present in Red Hat Enterprise Linux 7 were replaced by Geolite2 Databases on Red Hat Enterprise Linux 8.

Geolite Databases were provided by the GeoIP package. This package together with the legacy database is no longer supported in the upstream.

Geolite2 Databases are provided by multiple packages. The libmaxminddb package includes the library and the mmdblookup command line tool, which enables manual searching of addresses. The geoipupdate binary from the legacy GeoIP package is now provided by the geoipupdate package, and is capable of downloading both legacy databases and the new Geolite2 databases.

(JIRA:RHELPLAN-6746)

4.6. Shells and command-line tools

The nobody user replaces nfsnobody

In Red Hat Enterprise Linux 7, there was:

  • the nobody user and group pair with the ID of 99, and
  • the nfsnobody user and group pair with the ID of 65534, which is the default kernel overflow ID, too.

Both of these have been merged into the nobody user and group pair, which uses the 65534 ID in Red Hat Enterprise Linux 8. New installations no longer create the nfsnobody pair.

This change reduces the confusion about files that are owned by nobody but have nothing to do with NFS.

(BZ#1591969)

4.7. Web servers, databases, dynamic languages

Database servers in RHEL 8

RHEL 8 provides the following database servers:

  • MySQL 8.0, a multi-user, multi-threaded SQL database server. It consists of the MySQL server daemon, mysqld, and many client programs.
  • MariaDB 10.3, a multi-user, multi-threaded SQL database server. For all practical purposes, MariaDB is binary-compatible with MySQL.
  • PostgreSQL 10 and PostgreSQL 9.6, an advanced object-relational database management system (DBMS).
  • Redis 4.0, an advanced key-value store. It is often referred to as a data structure server because keys can contain strings, hashes, lists, sets, and sorted sets. Redis is provided for the first time in RHEL.

Note that the NoSQL MongoDB database server is not included in RHEL 8.0 Beta because it uses the Server Side Public License (SSPL).

(BZ#1647908)

Notable changes in MySQL 8.0

RHEL 8 is distributed with MySQL 8.0, which provides, for example, the following enhancements:

  • MySQL now incorporates a transactional data dictionary, which stores information about database objects.
  • MySQL now supports roles, which are collections of privileges.
  • The default character set has been changed from latin1 to utf8mb4.
  • Support for common table expressions, both nonrecursive and recursive, has been added.
  • MySQL now supports window functions, which perform a calculation for each row from a query, using related rows.
  • InnoDB now supports the NOWAIT and SKIP LOCKED options with locking read statements.
  • GIS-related functions have been improved.
  • JSON functionality has been enhanced.
  • The new mariadb-connector-c packages provide a common client library for MySQL and MariaDB. This library is usable with any version of the MySQL and MariaDB database servers. As a result, the user is able to connect one build of an application to any of the MySQL and MariaDB servers distributed with RHEL 8.

In addition, the MySQL 8.0 server distributed with RHEL 8 is configured to use mysql_native_password as the default authentication plug-in because client tools and libraries in RHEL 8 are incompatible with the caching_sha2_password method, which is used by default in the upstream MySQL 8.0 version.

To change the default authentication plug-in to caching_sha2_password, edit the /etc/my.cnf.d/mysql-default-authentication-plugin.cnf file as follows:

[mysqld]
default_authentication_plugin=caching_sha2_password

(BZ#1649891, BZ#1519450, BZ#1631400)

Notable changes in MariaDB 10.3

MariaDB 10.3 provides numerous new features over the version 5.5 distributed in RHEL 7. Some of the most notable changes are:

  • MariaDB Galera Cluster, a synchronous multi-master cluster, is now a standard part of MariaDB.
  • InnoDB is used as the default storage engine instead of XtraDB.
  • Common table expressions
  • System-versioned tables
  • FOR loops
  • Invisible columns
  • Sequences
  • Instant ADD COLUMN for InnoDB
  • Storage-engine independent column compression
  • Parallel replication
  • Multi-source replication

In addition, the new mariadb-connector-c packages provide a common client library for MySQL and MariaDB. This library is usable with any version of the MySQL and MariaDB database servers. As a result, the user is able to connect one build of an application to any of the MySQL and MariaDB servers distributed with RHEL 8.

See also Using MariaDB on Red Hat Enterprise Linux 8.

(BZ#1637034, BZ#1519450)

Python scripts must specify major version in hashbangs at RPM build time

In RHEL 8, executable Python scripts are expected to use hashbangs (shebangs) specifying explicitly at least the major Python version.

The /usr/lib/rpm/redhat/brp-mangle-shebangs buildroot policy (BRP) script is run automatically when building any RPM package, and attempts to correct hashbangs in all executable files. The BRP script will generate errors when encountering a Python script with an ambiguous hashbang, such as:

  • #! /usr/bin/python
  • #! /usr/bin/env python

To modify hashbangs in the Python scripts causing these build errors at RPM build time, use the pathfix.py script from the platform-python-devel package:

pathfix.py -pn -i %{__python3} PATH ...

Multiple PATHs can be specified. If a PATH is a directory, pathfix.py recursively scans for any Python scripts matching the pattern ^[a-zA-Z0-9_]+\.py$, not only those with an ambiguous hashbang. Add this command to the %prep section or at the end of the %install section.

For more information, see Handling hashbangs in Python scripts.

(BZ#1583620)

Python 3 is the default Python implementation in RHEL 8

Red Hat Enterprise Linux 8 is distributed with Python 3.6. The package is not installed by default. To install Python 3.6, use the yum install python3 command.

Python 2.7 is available in the python2 package. However, Python 2 will have a shorter life cycle and its aim is to facilitate smoother transition to Python 3 for customers.

Neither the default python package nor the unversioned /usr/bin/python executable is distributed with RHEL 8. Customers are advised to use python3 or python2 directly. Alternatively, administrators can configure the unversioned python command using the alternatives command.

For details, see Using Python in Red Hat Enterprise Linux 8.

(BZ#1580387)

Notable changes in Ruby

RHEL 8 provides Ruby 2.5, which introduces numerous new features and enhancements over Ruby 2.0.0 available in RHEL 7. Notable changes include:

  • Incremental garbage collector has been added.
  • The Refinements syntax has been added.
  • Symbols are now garbage collected.
  • The $SAFE=2 and $SAFE=3 safe levels are now obsolete.
  • The Fixnum and Bignum classes have been unified into the Integer class.
  • Performance has been improved by optimizing the Hash class, improved access to instance variables, and the Mutex class being smaller and faster.
  • Certain old APIs have been deprecated.
  • Bundled libraries, such as RubyGems, Rake, RDoc, Psych, Minitest, and test-unit, have been updated.
  • Other libraries, such as mathn, DL, ext/tk, and XMLRPC, which were previously distributed with Ruby, are deprecated or no longer included.
  • The SemVer versioning scheme is now used for Ruby versioning.

(BZ#1648843)

Notable changes in PHP

Red Hat Enterprise Linux 8 is distributed with PHP 7.2. This version introduces the following major changes over PHP 5.4, which is available in RHEL 7:

  • PHP uses FastCGI Process Manager (FPM) by default (safe for use with a threaded httpd).
  • The php_value and php-flag variables should no longer be used in the httpd configuration files; they should be set in pool configuration instead: /etc/php-fpm.d/*.conf
  • PHP script errors and warning are logged to the /var/log/php-fpm/www-error.log file instead of /var/log/httpd/error.log
  • When changing the PHP max_execution_time configuration variable, the httpd ProxyTimeout setting should be increased to match
  • The user running PHP scripts is now configured in the FPM pool configuration (the /etc/php-fpm/d/www.conf file; the apache user is the default)
  • The php-fpm service needs to be restarted after a configuration change or after a new extension is installed

The following extensions have been removed:

  • aspell
  • mysql (note that the mysqli and pdo_mysql extensions are still available, provided by php-mysqlnd package)
  • zip
  • memcache

(BZ#1580430)

Notable changes in Perl

Perl 5.26, distributed with RHEL 8, introduces the following changes over the version available in RHEL 7:

  • Unicode 9.0 is now supported.
  • New op-entry, loading-file, and loaded-file SystemTap probes are provided.
  • Copy-on-write mechanism is used when assigning scalars for improved performance.
  • The IO::Socket::IP module for handling IPv4 and IPv6 sockets transparently has been added.
  • The Config::Perl::V module to access perl -V data in a structured way has been added.
  • A new perl-App-cpanminus package has been added, which contains the cpanm utility for getting, extracting, building, and installing modules from the Comprehensive Perl Archive Network (CPAN) repository.
  • The current directory . has been removed from the @INC module search path for security reasons.
  • The do statement now returns a deprecation warning when it fails to load a file because of the behavioral change described above.
  • The do subroutine(LIST) call is no longer supported and results in a syntax error.
  • Hashes are randomized by default now. The order in which keys and values are returned from a hash changes on each perl run. To disable the randomization, set the PERL_PERTURB_KEYS environment variable to 0.
  • Unescaped literal { characters in regular expression patterns are no longer permissible.
  • Lexical scope support for the $_ variable has been removed.
  • Using the defined operator on an array or a hash results in a fatal error.
  • Importing functions from the UNIVERSAL module results in a fatal error.
  • The find2perl, s2p, a2p, c2ph, and pstruct tools have been removed.
  • The ${^ENCODING} facility has been removed. The encoding pragma’s default mode is no longer supported. To write source code in other encoding than UTF-8, use the encoding’s Filter option.
  • The perl packaging is now aligned with upstream. The perl package installs also core modules, while the /usr/bin/perl interpreter is provided by the perl-interpreter package. In previous releases, the perl package included just a minimal interpreter, whereas the perl-core package included both the interpreter and the core modules.

(BZ#1511131)

Notable changes in Apache httpd

RHEL 8 is distributed with the Apache HTTP Server 2.4.35. This version introduces the following changes over httpd available in RHEL 7:

  • HTTP/2 support is now provided by the mod_http2 package, which is a part of the httpd module.
  • Automated TLS certificate provisioning and renewal using the Automatic Certificate Management Environment (ACME) protocol is now supported with the mod_md package (for use with certificate providers such as Let’s Encrypt)
  • The Apache HTTP Server now supports loading TLS certificates and private keys from hardware security tokens directly from PKCS#11 modules. As a result, a mod_ssl configuration can now use PKCS#11 URLs to identify the TLS private key, and, optionally, the TLS certificate in the SSLCertificateKeyFile and SSLCertificateFile directives.
  • The multi-processing module (MPM) configured by default with the Apache HTTP Server has changed from a multi-process, forked model (known as prefork) to a high-performance multi-threaded model, event. Any third-party modules that are not thread-safe need to be replaced or removed. To change the configured MPM, edit the /etc/httpd/conf.modules.d/00-mpm.conf file. See the httpd.service(8) man page for more information.

For more information about httpd, see Setting up the Apache HTTP web server.

(BZ#1632754, BZ#1527084, BZ#1581178)

The nginx web server new in RHEL 8

RHEL 8 introduces nginx 1.14, a web and proxy server supporting HTTP and other protocols, with a focus on high concurrency, performance, and low memory usage. nginx was previously available only as a Software Collection.

The nginx web server now supports loading TLS certificates and private keys from hardware security tokens directly from PKCS#11 modules. As a result, an nginx configuration can use PKCS#11 URLs to identify the TLS private key in the ssl_certificate_key directive.

(BZ#1545526)

4.8. Desktop

GNOME Shell rebased to version 3.28

GNOME Shell has been rebased to upstream version 3.28. Notable enhancements include:

  • New GNOME Boxes features
  • New on-screen keyboard
  • Extended devices support, most significantly integration for the Thunderbolt 3 interface
  • Improvements for GNOME Software, dconf-editor and GNOME Terminal

(BZ#1649404)

Wayland is the default display server

With Red Hat Enterprise Linux 8, the GNOME session and the GNOME Display Manager (GDM) use Wayland as their default display server instead of the X.org server, which was used with the previous major version of RHEL.

Wayland provides multiple advantages and improvements over X.org. Most notably:

  • Stronger security model
  • Improved multi-monitor handling
  • Improved user interface (UI) scaling
  • The desktop can control window handling directly.

Note that the following features are currently unavailable or do not work as expected:

  • Multi-GPU setups are not supported under Wayland.
  • The NVIDIA binary driver does not work under Wayland.
  • The xrandr utility does not work under Wayland due to its different approach to handling, resolutions, rotations, and layout. Note that other X.org utilities for manipulating the screen do not work under Wayland, either.
  • Screen recording, remote desktop, and accessibility do not always work correctly under Wayland.
  • No clipboard manager is available.
  • Wayland ignores keyboard grabs issued by X11 applications, such as virtual machines viewers.
  • Wayland inside guest virtual machines (VMs) has stability and performance problems, so it is recommended to use the X11 session for virtual environments.

If you upgrade to RHEL 8 from a RHEL 7 system where you used the X.org GNOME session, your system continues to use X.org. The system also automatically falls back to X.org when the following graphics drivers are in use:

  • The NVIDIA binary driver
  • The cirrus driver
  • The mga driver
  • The aspeed driver

You can disable the use of Wayland manually:

  • To disable Wayland in GDM, set the WaylandEnable=false option in the /etc/gdm/custom.conf file.
  • To disable Wayland in the GNOME session, select the legacy X11 option by using the cogwheel menu on the login screen after entering your login name.

For more details on Wayland, see https://wayland.freedesktop.org/.

(BZ#1589678)

Locating RPM packages that are in repositories not enabled by default

Additional repositories for desktop are not enabled by default. The disablement is indicated by the enabled=0 line in the corresponding .repo file. If you attempt to install a package from such repository using PackageKit, PackageKit shows an error message announcing that the application is not available. To make the package available, replace previously used enabled=0 line in the respective .repo file with enabled=1.

(JIRA:RHELPLAN-2878)

GNOME Sofware for package management

The gnome-packagekit package that provided a collection of tools for package management in graphical environment on Red Hat Enterprise Linux 7 is no longer available. On Red Hat Enterprise Linux 8, similar functionality is provided by the GNOME Software utility, which enables you to install and update applications and gnome-shell extensions. GNOME Software is distributed in the gnome-software package.

(JIRA:RHELPLAN-3001)

4.9. Hardware enablement

ARM 52-bit physical addressing is now available

With this update, support for 52-bit physical addressing (PA) for the 64-bit ARM architecture is available. This provides larger address space than previous 48-bit PA.

(BZ#1643522)

The IOMMU code supports 5-level page tables in RHEL 8

The I/O memory management unit (IOMMU) code in the Linux kernel has been updated to support 5-level page tables in Red Hat Enterprise Linux 8.

(BZ#1485546)

4.10. Identity Management

New password syntax checks in Directory Server

This enhancement adds new password syntax checks to Directory Server. Administrators can now, for example, enable dictionary checks, allow or deny using character sequences and palindromes. As a result, if enabled, the password policy syntax check in Directory Server enforces more secure passwords.

(BZ#1334254)

Directory Server now provides improved internal operations logging support

Several operations in Directory Server, initiated by the server and clients, cause additional operations in the background. Previously, the server only logged for internal operations the Internal connection keyword, and the operation ID was always set to -1. With this enhancement, Directory Server logs the real connection and operation ID. You can now trace the internal operation to the server or client operation that caused this operation.

(BZ#1358706)

Local users are cached by SSSD and served through the nss_sss module

In RHEL 8, the System Security Services Daemon (SSSD) serves users and groups from the /etc/passwd and /etc/groups files by default. The sss nsswitch module precedes files in the /etc/nsswitch.conf file.

The advantage of serving local users through SSSD is that the nss_sss module has a fast memory-mapped cache that speeds up Name Service Switch (NSS) lookups compared to accessing the disk and opening the files on each NSS request. Previously, the Name service cache daemon (nscd) helped accelerate the process of accessing the disk. However, using nscd in parallel with SSSD is cumbersome, as both SSSD and nscd use their own independent caching. Consequently, using nscd in setups where SSSD is also serving users from a remote domain, for example LDAP or Active Directory, can cause unpredictable behavior.

With this update, the resolution of local users and groups is faster in RHEL 8. Note that the root user is never handled by SSSD, therefore root resolution cannot be impacted by a potential bug in SSSD. Note also that if SSSD is not running, the nss_sss module handles the situation gracefully by falling back to nss_files to avoid problems. You do not have to configure SSSD in any way, the files domain is added automatically.

(JIRA:RHELPLAN-10439)

KCM replaces KEYRING as the default credential cache storage

In RHEL 8, the default credential cache storage is the Kerberos Credential Manager (KCM) which is backed by the sssd-kcm deamon. KCM overcomes the limitations of the previously used KEYRING, such as its being difficult to use in containerized environments because it is not namespaced, and to view and manage quotas.

With this update, RHEL 8 contains a credential cache that is better suited for containerized environments and that provides a basis for building more features in future releases.

(JIRA:RHELPLAN-10440)

Active Directory users can now administer Identity Management

With this update, RHEL 8 allows adding a user ID override for an Active Directory (AD) user as a member of an Identity Management (IdM) group. An ID override is a record describing what a specific AD user or group properties should look like within a specific ID view, in this case the Default Trust View. As a consequence of the update, the IdM LDAP server is able to apply access control rules for the IdM group to the AD user.

AD users are now able to use the self service features of IdM UI, for example to upload their SSH keys, or change their personal data. An AD administrator is able to fully administer IdM without having two different accounts and passwords. Note that currently, selected features in IdM may still be unavailable to AD users.

(JIRA:RHELPLAN-10442)

sssctl prints an HBAC rules report for an IdM domain

With this update, the sssctl utility of the System Security Services Daemon (SSSD) can print an access control report for an Identity Management (IdM) domain. This feature meets the need of certain environments to see, for regulatory reasons, a list of users and groups that can access a specific client machine. Running sssctl access-report domain_name on an IdM client prints the parsed subset of host-based access control (HBAC) rules in the IdM domain that apply to the client machine.

Note that no other providers than IdM support this feature.

(JIRA:RHELPLAN-10443)

Identity Management packages are available as a module

In RHEL 8, the packages necessary for installing an Identity Management (IdM) server and client are shipped as a module. The client stream is the default stream of the idm module and you can download the packages necessary for installing the client without enabling the stream.

The IdM server module stream is called the DL1 stream. The stream contains multiple profiles corresponding to different types of IdM servers: server, dns, adtrust, client, and default. To download the packages in a specific profile of the DL1 stream: . Enable the stream. . Switch to the RPMs delivered through the stream. . Run the yum module install idm:DL1/profile_name command.

(JIRA:RHELPLAN-10438)

Session recording solution for RHEL 8 added

A session recording solution has been added to Red Hat Enterprise Linux 8 (RHEL 8). A new tlog package and its associated Cockpit session player enable to record and playback the user terminal sessions. The recording can be configured per user or user group via the System Security Services Daemon (SSSD) service. All terminal input and output is captured and stored in a text-based format in a system journal. The input is inactive by default for security reasons not to intercept raw passwords and other sensitive information. The solution can be used for auditing of user sessions on security-sensitive systems. In the event of a security breach, the recorded sessions can be reviewed as a part of a forensic analysis. The system administrators are now able to configure the session recording locally and view the result from the Cockpit web-based interface or from the Command-Line Interface using the tlog-play utility.

(JIRA:RHELPLAN-10585)

authselect simplifies the configuration of user authentication

This update introduces the authselect utility that simplifies the configuration of user authentication on RHEL 8 hosts, replacing the authconfig utility. authselect comes with a safer approach to PAM stack management that makes the PAM configuration changes simpler for system administrators. authselect can be used to configure authentication methods such as passwords, certificates, smart cards, and fingerprint. Note that authselect does not configure services required to join remote domains. This task is performed by specialized tools, such as realmd or ipa-client-install.

(JIRA:RHELPLAN-10445)

4.11. Compilers and development tools

Boost updated to version 1.66

The Boost C++ library has been updated to upstream version 1.66. The version of Boost included in Red Hat Enterprise Linux 7 is 1.53. For details, see the upstream changelogs: https://www.boost.org/users/history/

This update introduces the following changes breaking compatibility with previous versions:

  • The bs_set_hook() function, the splay_set_hook() function from splay containers, and the bool splay = true extra parameter in the splaytree_algorithms() function in the Intrusive library have been removed.
  • Comments or string concatenation in JSON files are no longer supported by the parser in the Property Tree library.
  • Some distributions and special functions from the Math library have been fixed to behave as documented and raise an overflow_error instead of returning the maximum finite value.
  • Some headers from the Math library have been moved into the directory libs/math/include_private.
  • Behavior of the basic_regex<>::mark_count() and basic_regex<>::subexpression(n) functions from the Regex library has been changed to match their documentation.
  • Use of variadic templates in the Variant library may break metaprogramming functions.
  • The boost::python::numeric API has been removed. Users can use boost::python::numpy instead.
  • Arithmetic operations on pointers to non-object types are no longer provided in the Atomic library.

(BZ#1494495)

Unicode 11.0.0 support

The Red Hat Enterprise Linux core C library, glibc, has been updated to support the Unicode standard version 11.0.0. As a result, all wide character and multi-byte character APIs including transliteration and conversion between character sets provide accurate and correct information conforming to this standard.

(BZ#1512004)

Support for linking against the libpthread_nonshared.a archive file

This update provides the new compat-libpthread-nonshared package that allows applications which directly reference /usr/lib64/libpthread_nonshared.a to work properly.

(BZ#1614439)

The boost package is now independent of Python

With this update, installing the boost package no longer installs the Boost.Python library as a dependency. In order to use Boost.Python, you need to explicitly install the boost-python3 or boost-python3-devel packages.

(BZ#1616244)

A new compat-libgfortran-48 package available

For compatibility with Red Hat Enterprise Linux 6 and 7 applications using the Fortran library, a new compat-libgfortran-48 compatibility package is now available, which provides the libgfortran.so.3 library.

(BZ#1607227)

Retpoline support in GCC

This update adds support for retpolines to GCC. A retpoline is a software construct used by the kernel to reduce overhead of mitigating Spectre Variant 2 attacks described in CVE-2017-5715.

(BZ#1535774)

Enhanced support for the 64-bit ARM architecture in toolchain components

Toolchain components, GCC and binutils, now provide extended support for the 64-bit ARM architecture. For example:

  • GCC and binutils now support Scalable Vector Extension (SVE).
  • Support for the FP16 data type, provided by ARM v8.2, has been added to GCC. The FP16 data type improves performance of certain algorithms.
  • Tools from binutils now support the ARM v8.3 architecture definition, including Pointer Authentication. The Pointer Authentication feature prevents malicious code from corrupting the normal execution of a program or the kernel by crafting their own function pointers. As a result, only trusted addresses are used when branching to different places in the code, which improves security.

(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)

Optimizations to glibc for IBM POWER systems

This update provides a new version of glibc that is optimized for both IBM POWER 8 and IBM POWER 9 architectures. As a result, IBM POWER 8 and IBM POWER 9 systems now automatically switch to the appropriate, optimized glibc variant at run time.

(BZ#1376834)

GNU C Library updated to version 2.28

Red Hat Enterprise Linux 8 Beta includes version 2.28 of the GNU C Library (glibc). Notable improvements include:

  • Security hardening features:

    • Secure binary files marked with the AT_SECURE flag ignore the LD_LIBRARY_PATH environment variable.
    • Backtraces are no longer printed for stack checking failures to speed up shutdown and avoid running more code in a compromised environment.
  • Performance improvements:

    • Performance of the malloc() function has been improved with a thread local cache.
    • Addition of the GLIBC_TUNABLES environment variable to alter library performance characteristics.
    • Implementation of thread semaphores has been improved and new scalable pthread_rwlock_xxx() functions have been added.
    • Performance of the math library has been improved.
  • Support for Unicode 11.0.0 has been added.
  • Improved support for 128-bit floating point numbers as defined by the ISO/IEC/IEEE 60559:2011, IEEE 754-2008, and ISO/IEC TS 18661-3:2015 standards has been added.
  • Domain Name Service (DNS) stub resolver improvements related to the /etc/resolv.conf configuration file:

    • Configuration is automatically reloaded when the file is changed.
    • Support for an arbitrary number of search domains has been added.
    • Proper random selection for the rotate option has been added.
  • New features for development have been added, including:

    • Linux wrapper functions for the preadv2 and pwritev2 kernel calls
    • New functions including reallocarray() and explicit_bzero()
    • New flags for the posix_spawnattr_setflags() function such as POSIX_SPAWN_SETSID

(BZ#1512010, BZ#1504125, BZ#506398)

CMake available in RHEL

The CMake build system version 3.11 is available in Red Hat Enterprise Linux 8 Beta as the cmake package.

(BZ#1590139, BZ#1502802)

make version 4.2.1

Red Hat Enterprise Linux 8 is distributed with the make build tool version 4.2.1. Notable changes include:

  • When a recipe fails, the name of the makefile and line number of the recipe are shown.
  • The --trace option has been added to enable tracing of targets. When this option is used, every recipe is printed before invocation even if it would be suppressed, together with the file name and line number where this recipe is located, and also with the prerequisites causing it to be invoked.
  • Mixing explicit and implicit rules no longer cause make to terminate execution. Instead, a warning is printed. Note that this syntax is deprecated and may be completely removed in the future.
  • The $(file …​) function has been added to write text to a file. When called without a text argument, it only opens and immediately closes the file.
  • A new option, --output-sync or -O, causes an output from multiple jobs to be grouped per job and enables easier debugging of parallel builds.
  • The --debug option now accepts also the n (none) flag to disable all currently enabled debugging settings.
  • The != shell assignment operator has been added as an alternative to the $(shell …​) function to increase compatibility with BSD makefiles. For more details and differences between the operator and the function, see the GNU make manual.

Note that as a consequence, variables with a name ending in exclamation mark and immediately followed by assignment, such as variable!=value, are now interpreted as the new syntax. To restore the previous behavior, add a space after the exclamation mark, such as variable! =value.

  • The ::= assignment operator defined by the POSIX standard has been added.
  • When the .POSIX variable is specified, make observes the POSIX standard requirements for handling backslash and new line. In this mode, any trailing space before the backslash is preserved, and each backslash followed by a new line and white space characters is converted to a single space character.
  • Behavior of the MAKEFLAGS and MFLAGS variables is now more precisely defined.
  • A new variable, GNUMAKEFLAGS, is parsed for make flags identically to MAKEFLAGS. As a consequence, GNU make-specific flags can be stored outside MAKEFLAGS and portability of makefiles is increased.
  • A new variable, MAKE_HOST, containing the host architecture has been added.
  • The new variables, MAKE_TERMOUT and MAKE_TERMERR, indicate whether make is writing standard output and error to a terminal.
  • Setting the -r and -R options in the MAKEFLAGS variable inside a makefile now works correctly and removes all built-in rules and variables, respectively.
  • The .RECIPEPREFIX setting is now remembered per recipe. Additionally, variables expanded in that recipe also use that recipe prefix setting.
  • The .RECIPEPREFIX setting and all target-specific variables are displayed in the output of the -p option as if in a makefile, instead of as comments.

(BZ#1641015)

Go programs built with Go Toolset are FIPS compliant

The cryptographic library available in Go Toolset has been changed to use the OpenSSL library version 1.1.0 if the host system is configured in FIPS mode. As a consequence, programs built with this version of Go Toolset are FIPS compliant.

To make Go programs use only the uncertified standard cryptographic routines, use the -tags no_openssl option of the go compiler at build time.

(BZ#1512570)

SystemTap version 4.0

Red Hat Enterprise Linux 8 Beta is distributed with the SystemTap instrumentation tool version 4.0. Notable improvements include:

  • The extended Berkeley Packet Filter (eBPF) backend has been improved, especially strings and functions. To use this backend, start SystemTap with the --runtime=bpf option.
  • A new export network service for use with the Prometheus monitoring system has been added.
  • Implementation of system call probing has been improved to use the kernel tracepoints if necessary.

(BZ#1641032)

Improvements in binutils version 2.30

Red Hat Enterprise Linux 8 Beta includes version 2.30 of the binutils package. Notable improvements include:

  • Support for new s390x architecture extensions has been improved.

Assembler:

  • Support for the WebAssembly file format, and conversion of WebAssembly to the wasm32 ELF file format have been added.
  • Support for the ARMv8-R architecture and Cortex-R52, Cortex-M23, and Cortex-M33 processors has been added.
  • Support for the RISC-V architecture has been added.

Linkers:

  • The linker now puts code and read-only data into separate segments by default. As a result, the created executable files are bigger and more safe to run, because the dynamic loader can disable execution of any memory page containing read-only data.
  • Support for GNU Property notes which provide hints to the dynamic loader about the binary file has been added.
  • Previously, the linker generated invalid executable code for the Intel Indirect Branch Tracking (IBT) technology. As a consequence, the generated executable files could not start. This bug has been fixed.
  • Previously, the gold linker merged property notes improperly. As a consequence, wrong hardware features could be enabled in the generated code, and the code could terminate unexpectedly. This bug has been fixed.
  • Previously, the gold linker created note sections with padding bytes at the end to achieve alignment according to architecture. Because the dynamic loader did not expect the padding, it coud terminate unexpectedly the program it was loading. This bug has been fixed.

Other tools:

  • The readelf and objdump tools now have options to follow links into separate debug information files and display information in them, too.
  • The new --inlines option extends the existing --line-numbers option of the objdump tool to display nesting information for inlined functions.
  • The nm tool gained a new option --with-version-strings to display version information of a symbol after its name, if present.

(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)

Performace co-pilot version 4.1.3

Red Hat Enterprise Linux 8 Beta is distributed with Performance co-pilot (pcp) version 4.1.3. Notable improvements include:

  • Support for historical analysis and CSV format output in the pcp-dstat tool.
  • Log utilities can use metric labels and help text records.
  • The pmdaperfevent tool now reports correct CPU numbers in lower SMT levels.
  • The pmdapostgresql tool now supports Postgres series 10.x.
  • The pmdaredis tool now supports Redis series 5.x.
  • The pmdabcc tool has been enhanced with dynamic process filtering and per-process syscalls, ucalls, and ustat.
  • The pmdammv tool supports exporting metric labels, increasing format version to 3.
  • The pmdagfs2 tool supports additional glock and glock holder metrics.
  • Several fixes have been made to the SElinux policy.

(BZ#1641034)

Memory Protection Keys

This update enables hardware features which allow per-thread page protection flag changes. The new glibc system call wrappers have been added for the pkey_alloc(), pkey_free(), and pkey_mprotect() functions. In addition, the pkey_set() and pkey_get() functions have been added to allow access to the per-thread protection flags.

(BZ#1304448)

GCC now defaults to z13 on IBM Z

With this update, by default GCC on the IBM Z architecture builds code for the z13 processor, and the code is tuned for the z14 processor. This is equivalent to using the -march=z13 and -mtune=z14 options. Users can override this default by explicitly using options for target architecture and tuning.

(BZ#1571124)

elfutils updated to version 0.174

In Red Hat Enterprise Linux 8, the elfutils package is available in version 0.174. Notable changes include:

  • Previously, the eu-readelf tool could show a variable with a negative value as if it had a large unsigned value, or show a large unsigned value as a negative value. This has been corrected and eu-readelf now looks up the size and signedness of constant value types to display them correctly.
  • A new function dwarf_next_lines() for reading .debug_line data lacking CU has been added to the libdw library. This function can be used as alternative to the dwarf_getsrclines() and dwarf_getsrcfiles() functions.
  • Previously, files with more than 65280 sections could cause errors in the libelf and libdw libraries and all tools using them. This bug has been fixed. As a result, extended shnum and shstrndx values in ELF file headers are handled correctly.

(BZ#1641007)

Valgrind updated to version 3.14

Red Hat Enterprise Linux 8 is distributed with the Valgrind executable code analysis tool version 3.14. Notable changes include:

  • A new --keep-debuginfo option has been added to enable retention of debug info for unloaded code. As a result, saved stack traces can include file and line information for code that is no longer present in memory.
  • Suppressions based on source file name and line number have been added.
  • The Helgrind tool has been extended with an option --delta-stacktrace to specify computation of full history stack traces. Notably, using this option together with --history-level=full can improve Helgrind performance by up to 25%.
  • False positive rate in the Memcheck tool for optimised code on the Intel and AMD 64-bit arcitectures and the ARM 64-bit architecture has been reduced. Note that you can use the --expensive-definedness-checks to control handling of definedness checks and improve the rate at the expense of performance.
  • Valgrind can now recognize more instructions of the little-endian variant of IBM Power Systems.
  • Valgrind can now partially process integer and string vector instructions of the IBM Z architecture z13 processor.

For more information about the new options and their known limitations, see the valgrind(1) manual page.

(BZ#1641029, BZ#1501419)

GDB version 8.2

Red Hat Enterprise Linux 8 is distributed with the GDB debugger version 8.2 Notable changes include:

  • The IPv6 protocol is supported for remote debugging with GDB and gdbserver.
  • Debugging without debug information has been improved.
  • Symbol completion in the GDB user interface has been improved to offer better suggestions by using more syntactic constructions such as ABI tags or namespaces.
  • Commands can now be executed in the background.
  • Debugging programs created in the Rust programming language is now possible.
  • Debugging C and C++ languages has been improved with parser support for the _Alignof and alignof operators, C++ rvalue references, and C99 variable-length automatic arrays.
  • GDB extension scripts can now use the Guile scripting language.
  • The Python scripting language interface for extensions has been improved with new API functions, frame decorators, filters, and unwinders. Additionally, scripts in the .debug_gdb_scripts section of GDB configuration are loaded automatically.
  • GDB now uses Python version 3 to run its scripts, including pretty printers, frame decorators, filters, and unwinders.
  • The ARM and 64-bit ARM architectures have been improved with process execution record and replay, including Thumb 32-bit and system call instructions.
  • Support for Intel MPX register and bound violation, the PKU register, and Intel Processor Trace has been added.
  • Record and replay functionality has been extended to include the rdrand and rdseed instructions on Intel based systems.
  • Functionality of GDB on the IBM Z architecture has been extended with suport for tracepoints and fast tracepoints, vector registers and ABI, and the Catch system call.
  • GDB can now use the SystemTap static user space probes (SDT) on the 64-bit ARM architecture.

(BZ#1641022)

Localization for RHEL is distributed in multiple packages

In RHEL 8.0 Beta, locales and translations are no longer provided by the single glibc-common package. Instead, every locale and language is available in a glibc-langpack-CODE package. Additionally, not all locales are installed by default, only these selected in the installer. Users must install all further locale packages that they need separately.

For more information about using langpacks, see Installing and using langpacks.

(BZ#1512009)

GCC version 8.2

In Red Hat Enterprise Linux 8, the GCC toolchain is based on the GCC 8.2 release series. Notable changes include:

  • Numerous general optimizations have been added, such as alias analysis, vectorizer improvements, identical code folding, inter-procedural analysis, store merging optimization pass, and others.
  • The Address Sanitizer and Undefined Behavior Sanitizer have been improved. The Leak Sanitizer for detection of memory leaks has been added.
  • Support for the DWARF 5 debug information format has been added.
  • The source code coverage analysis tool GCOV has been extended with various improvements.
  • New warnings and improved diagnostics have been added for static detection of certain likely programming errors.
  • GCC has been extended to provide tools to ensure additional hardening of the generated code. Improvements related to security include built-ins for overflow checking, additional protection against stack clash, checking target addresses of control-flow instructions, warnings for bounded string manipulation functions, and warnings to detect out-of-bounds array indices.

Improvements to architecture and processor support include:

  • Multiple new architecture-specific options for the Intel AVX-512 architecture, a number of its microarchitectures, and Intel Software Guard Extensions (SGX) have been added.
  • Code generation can now target the 64-bit ARM architecture LSE extensions, ARMv8.2-A 16-bit Floating-Point Extensions (FPE), and ARMv8.2-A, ARMv8.3-A, and ARMv8.4-A architecture versions.
  • Support for the z13 and z14 processors of the IBM Z architecture has been added.

Notable changes related to languages and standards include:

  • The default standard used when compiling code in the C language has changed to C17 with GNU extensions.
  • The default standard used when compiling code in the C++ language has changed to C++14 with GNU extensions.
  • The C++ runtime library now supports the C++11 and C++14 standards.
  • The C++ compiler now implements the C++14 standard.
  • Support for the C language standard C11 has been improved.
  • The new __auto_type GNU C extension provides a subset of the functionality of C++11 auto keyword in the C language.
  • The _FloatN and _FloatNx type names specified by the ISO/IEC TS 18661-3:2015 standard are now recognized by the C front end.
  • Passing an empty class as an argument now takes up no space on the Intel 64 and AMD64 architectures, as required by the platform ABI.
  • The value returned by the C++11 alignof operator has been corrected to match the C _Alignof operator and return minimum alignment. To find the preferred alignment, use the GNU extension __alignof__.
  • The main version of the libgfortran library for Fortran language code has been changed to 5.
  • Support for the Ada (GNAT), GCC Go, and Objective C/C++ languages has been removed.

(JIRA:RHELPLAN-7437, BZ#1512593)

4.12. File systems and storage

XFS now supports shared copy-on-write data extents

The XFS file system supports shared copy-on-write data extent functionality. This feature enables two or more files to share a common set of data blocks. When either of the files sharing common blocks changes, XFS breaks the link to common blocks and creates a new file. This is similar to the copy-on-write (COW) functionality found in other file systems.

Shared copy-on-write data extents are:

Fast
Creating shared copies does not utilize disk I/O.
Space-efficient
Shared blocks do not consume additional disk space.
Transparent
Files sharing common blocks act like regular files.

Userspace utilities can use shared copy-on-write data extents for:

  • Efficient file cloning, such as with the cp --reflink command
  • Per-file snapshots
  • Out-of-band data deduplication.

This functionality is also used by kernel subsystems such as Overlayfs and NFS for more efficient operation.

Shared copy-on-write data extents are now enabled by default when creating an XFS file system, starting with the xfsprogs package version 4.17.0-2.el8.

If you need to create an XFS file system without this feature, use the following command:

# mkfs.xfs -m reflink=0 block-device

Red Hat Enterprise Linux 7 can mount XFS file systems with shared copy-on-write data extents only in the read-only mode.

(BZ#1494028)

VDO now supports all architectures

Virtual Data Optimizer (VDO) is now available on all of the architectures supported by RHEL 8.

For the list of supported architectures, see Chapter 2, Architectures.

(BZ#1534087)

The BOOM boot manager simplifies the process of creating boot entries

BOOM is a boot manager for Linux systems that use boot loaders supporting the BootLoader Specification for boot entry configuration. It enables flexible boot configuration and simplifies the creation of new or modified boot entries: for example, to boot snapshot images of the system created using LVM.

BOOM does not modify the existing boot loader configuration, and only inserts additional entries. The existing configuration is maintained, and any distribution integration, such as kernel installation and update scripts, continue to function as before.

BOOM has a simplified command-line interface (CLI) and API that ease the task of creating boot entries.

(BZ#1649582)

LUKS2 is now the default format for encrypting volumes

In RHEL 8, the LUKS version 2 (LUKS2) format replaces the legacy LUKS (LUKS1) format. The dm-crypt subsystem and the cryptsetup tool now uses LUKS2 as the default format for encrypted volumes. LUKS2 provides encrypted volumes with metadata redundancy and auto-recovery in case of a partial metadata corruption event.

Due to the internal flexible layout, LUKS2 is also an enabler of future features. It supports auto-unlocking through the generic kernel-keyring token built in libcryptsetup that allow users unlocking of LUKS2 volumes using a passphrase stored in the kernel-keyring retention service.

Other notable enhancements include:

  • The protected key setup using the wrapped key cipher scheme.
  • Easier integration with Policy-Based Decryption (Clevis).
  • Up to 32 key slots - LUKS1 provides only 8 key slots.

For more details, see the cryptsetup(8) and cryptsetup-reencrypt(8) man pages.

(BZ#1564540)

NVMe/FC is fully supported on Broadcom Emulex Fibre Channel Adapters

The NVMe over Fibre Channel (NVMe/FC) transport type is now fully supported in Initiator mode when used with Broadcom Emulex Fibre Channel 32Gbit adapters.

NVMe over Fibre Channel is an additional fabric transport type for the Nonvolatile Memory Express (NVMe) protocol, in addition to the Remote Direct Memory Access (RDMA) protocol that was previously introduced in Red Hat Enterprise Linux.

To enable NVMe/FC in the lpfc driver, edit the /etc/modprobe.d/lpfc.conf file and add the following option:

lpfc_enable_fc4_type=3

Drivers other than lpfc still remain in Technology Preview.

Additional restrictions:

  • Multipath is not supported with NVMe/FC.
  • NVMe clustering is not supported with NVMe/FC.
  • Currently, Red Hat Enterprise Linux does not support using NVMe/FC and SCSI/FC on an initiator port at the same time.
  • The kernel-alt package does not support NVMe/FC.
  • kdump is not supported with NVMe/FC.
  • Booting from Storage Area Network (SAN) NVMe/FC is not supported.

(BZ#1649497)

New overrides section of the DM Multipath configuration file

The /etc/multipath.conf file now includes an overrides section that allows you to set a configuration value for all of your devices. These attributes are used by DM Multipath for all devices unless they are overwritten by the attributes specified in the multipaths section of the /etc/multipath.conf file for paths that contain the device. This functionality replaces the all_devs parameter of the devices section of the configuration file, which is no longer supported.

(BZ#1643294)

The detection of marginal paths in DM Multipath has been improved

The multipathd service now supports improved detection of marginal paths. This helps multipath devices avoid paths that are likely to fail repeatedly, and improves performance. Marginal paths are paths with persistent but intermittent I/O errors.

The following options in the /etc/multipath.conf file control marginal paths behavior:

  • marginal_path_double_failed_time,
  • marginal_path_err_sample_time,
  • marginal_path_err_rate_threshold, and
  • marginal_path_err_recheck_gap_time.

DM Multipath disables a path and tests it with repeated I/O for the configured sample time if:

  • the listed multipath.conf options are set,
  • a path fails twice in the configured time, and
  • other paths are available.

If the path has more than the configured err rate during this testing, DM Multipath ignores it for the configured gap time, and then retests it to see if it is working well enough to be reinstated.

For more information, see the multipath.conf man page.

(BZ#1643550)

Multiqueue default behavior

Block devices now use multiqueue scheduling in Red Hat Enterprise Linux 8. This enables the block layer performance to scale well with fast solid-state drives (SSDs) and multi-core systems.

The SCSI Multiqueue (scsi-mq) driver is now enabled by default, and the kernel boots with the scsi_mod.use_blk_mq=Y option. This change is consistent with the upstream Linux kernel.

Device Mapper Multipath (DM Multipath) requires the scsi-mq driver to be active.

(BZ#1647612)

Stratis is now available

Stratis is a new local storage manager. It provides managed file systems on top of pools of storage with additional features to the user.

Stratis enables you to more easily perform storage tasks like:

  • Manage snapshots and thin provisioning
  • Automatically grow file system sizes as needed
  • Maintain file systems

To administer Stratis storage, use the stratis utility, which communicates with the stratisd background service.

For more information, see the Stratis documentation: Managing layered local storage with Stratis.

(JIRA:RHELPLAN-10600)

4.13. High availability and clusters

New pcs commands to list available watchdog devices and test watchdog devices

In order to configure SBD with Pacemaker, a functioning watchdog device is required. This release supports the pcs stonith sbd watchdog list command to list available watchdog devices on the local node, and the pcs stonith sbd watchdog test command to test a watchdog device. For information on the sbd command line tool, see the sbd(8) man page.

(BZ#1578891)

The pcs command now supports filtering resource failures by an operation and its interval

Pacemaker now tracks resource failures per a resource operation on top of a resource name, and a node. The pcs resource failcount show command now allows filtering failures by a resource, node, operation, and interval. It provides an option to display failures aggregated per a resource and node or detailed per a resource, node, operation, and its interval. Additionally, the pcs resource failcount reset command now allows filtering failures by a resource, node, operation, and interval.

(BZ#1591308)

Timestamps enabled in corosync log

The corosync log did not previously contain timestamps, which made it difficult to relate it to logs from other nodes and daemons. With this release, timestamps are present in the corosync log.

(BZ#1615420)

New formats for pcs cluster setup, pcs cluster node add and pcs cluster node remove commands

In Red Hat Enterprise Linux 8, pcs fully supports Corosync 3, knet, and node names. Node names are now required and replace node addresses in the role of node identifier. Node addresses are now optional.

  • In the pcs host auth command, node addresses default to node names
  • In the pcs cluster setup and pcs cluster node add commands, node addresses default to the node addresses specified in the pcs host auth command.

With these changes, the formats for the commands to set up a cluster, add a node to a cluster, and remove a node from a cluster have changed. For information on these new command formats, see the help display for the pcs cluster setup, pcs cluster node add and pcs cluster node remove commands.

(BZ#1158816)

Pacemaker 2.0.0 in RHEL 8

The pacemaker packages have been upgraded to the upstream version of Pacemaker 2.0.0, which provides a number of bug fixes and enhancements over the previous version:

  • The Pacemaker detail log is now /var/log/pacemaker/pacemaker.log by default (not directly in /var/log or combined with the corosync log under /var/log/cluster).
  • The Pacemaker daemon processes have been renamed to make reading the logs more intuitive. For example, pengine has been renamed to pacemaker-schedulerd.
  • Support for the deprecated default-resource-stickiness and is-managed-default cluster properties has been dropped. The resource-stickiness and is-managed properties should be set in resource defaults instead. Existing configurations (though not newly created ones) with the deprecated syntax will automatically be updated to use the supported syntax.
  • A more complete list of changes is available at https://access.redhat.com/articles/3681151.

It is recommended that users who are upgrading an existing cluster using Red Hat Enterprise Linux 7 or earlier, run pcs cluster cib-upgrade on any cluster node before and after upgrading RHEL on all cluster nodes.

(BZ#1543494)

Master resources renamed to promotable clone resources

Red Hat Enterprise Linux (RHEL) 8 supports Pacemaker 2.0, in which a master/slave resource is no longer a separate type of resource but a standard clone resource with a promotable meta-attribute set to true. The following changes have been implemented in support of this update:

  • It is no longer possible to create master resources with the pcs command. Instead, it is possible to create promotable clone resources. Related keywords and commands have been changed from master to promotable.
  • All existing master resources are displayed as promotable clone resources.
  • When managing a RHEL7 cluster in the Web UI, master resources are still called master, as RHEL7 clusters do not support promotable clones.

(BZ#1542288)

New commands for authenticating nodes in a cluster

Red Hat Enterprise Linux (RHEL) 8 incorporates the following changes to the commands used to authenticate nodes in a cluster.

  • The new command for authentication is pcs host auth. This command allows users to specify host names, addresses and pcsd ports.
  • The pcs cluster auth command authenticates only the nodes in a local cluster and does not accept a node list
  • It is now possible to specify an address for each node. pcs/pcsd will then communicate with each node using the specified address. These addresses can be different than the ones corosync uses internally.
  • The pcs pcsd clear-auth command has been replaced by the pcs pcsd deauth and pcs host deauth commands. The new commands allow users to deauthenticate a single host as well as all hosts.
  • Previously, node authentication was bidirectional, and running the pcs cluster auth command caused all specified nodes to be authenticated against each other. The pcs host auth command, however, causes only the local host to be authenticated against the specified nodes. This allows better control of what node is authenticated against what other nodes when running this command. On cluster setup itself, and also when adding a node, pcs automatically synchronizes tokens on the cluster, so all nodes in the cluster are still automatically authenticated as before and the cluster nodes can communicate with each other.

Note that these changes are not backward compatible. Nodes that were authenticated on a RHEL 7 system will need to be authenticated again.

(BZ#1549535)

The pcs commands now support display, cleanup, and synchronization of fencing history

Pacemaker’s fence daemon tracks a history of all fence actions taken (pending, successful, and failed). With this release, the pcs commands allow users to access the fencing history in the following ways:

  • The pcs status command shows failed and pending fencing actions
  • The pcs status --full command shows the entire fencing history
  • The pcs stonith history command provides options to display and clean up fencing history
  • Although fencing history is synchronized automatically, the pcs stonith history command now supports an update option that allows a user to manually synchronize fencing history should that be necessary

(BZ#1620190, BZ#1615891)

4.14. Networking

nftables replaces iptables as the default network packet filtering framework

The nftables framework provides packet classification facilities and it is the designated successor to the iptables, ip6tables, arptables, and ebtables tools. It offers numerous improvements in convenience, features, and performance over previous packet-filtering tools, most notably:

  • lookup tables instead of linear processing
  • a single framework for both the IPv4 and IPv6 protocols
  • rules all applied atomically instead of fetching, updating, and storing a complete ruleset
  • support for debugging and tracing in the ruleset (nftrace) and monitoring trace events (in the nft tool)
  • more consistent and compact syntax, no protocol-specific extensions
  • a Netlink API for third-party applications

Similarly to iptables, nftables use tables for storing chains. The chains contain individual rules for performing actions. The nft tool replaces all tools from the previous packet-filtering frameworks. The libnftables library can be used for low-level interaction with nftables Netlink API over the libmnl library.

The iptables, ip6tables, ebtables and arptables tools are replaced by nftables-based drop-in replacements with the same name. While external behavior is identical to their legacy counterparts, internally they use nftables with legacy netfilter kernel modules through a compatibility interface where required.

Effect of the modules on the nftables ruleset can be observed using the nft list ruleset command. Since these tools add tables, chains, and rules to the nftables ruleset, be aware that nftables ruleset operations, such as the nft flush ruleset command, might affect rulesets installed using the formerly separate legacy commands.

To quickly identify which variant of the tool is present, version information has been updated to include the backend name. In RHEL8, the nftables-based iptables tool prints the following version string:

$ iptables --version
iptables v1.8.0 (nf_tables)

For comparison, the following version information is printed if legacy iptables tool is present:

$ iptables --version
iptables v1.8.0 (legacy)

(BZ#1644030)

Notable TCP features in RHEL 8

Red Hat Enterprise Linux 8 is distributed with TCP networking stack version 4.16, which provides higher performances, better scalability, and more stability. Performances are boosted especially for busy TCP server with a high ingress connection rate.

Additionally, two new TCP congestion algorithms, BBR and NV, are available, offering lower latency, and better throughput than cubic in most scenarios.

(BZ#1562998)

firewalld uses nftables by default

With this update, the nftables filtering subsystem is the default firewall backend for the firewalld daemon. To change the backend, use the FirewallBackend option in the /etc/firewalld.conf file.

This change introduces the following differences in behavior when using nftables:

  1. iptables rule executions always occur before firewalld rules

    • DROP in iptables means a packet is never seen by firewalld
    • ACCEPT in iptables means a packet is still subject to firewalld rules
  2. firewalld direct rules are still implemented through iptables while other firewalld features use nftables
  3. direct rule execution occurs before firewalld generic acceptance of established connections

(BZ#1509026)

Notable change in wpa_supplicant in RHEL 8

In Red Hat Enterprise Linux (RHEL) 8, the wpa_supplicant package is built with CONFIG_DEBUG_SYSLOG enabled. This allows reading the wpa_supplicant log using the journalctl utility instead of checking the contents of the /var/log/wpa_supplicant.log file.

(BZ#1582538)

NetworkManager now supports SR-IOV virtual functions

In Red Hat Enterprise Linux 8.0, NetworkManager allows configuring the number of virtual functions (VF) for interfaces that support single-root I/O virtualization (SR-IOV). Additionally, NetworkManager allows configuring some attributes of the VFs, such as the MAC address, VLAN, the spoof checking setting and allowed bitrates. Note that all properties related to SR-IOV are available in the sriov connection setting. For more details, see the nm-settings(5) man page.

(BZ#1555013)

IPVLAN virtual network drivers are now supported

In Red Hat Enterprise Linux 8.0, the kernel includes support for IPVLAN virtual network drivers. With this update, IPVLAN virtual Network Interface Cards (NICs) enable the network connectivity for multiple containers exposing a single MAC address to the local network. This allows a single host to guest a lot of containers overcoming the possible limitation on the number of MAC addresses supported by the peer networking equipment.

(BZ#1261167)

NetworkManager supports a wildcard interface name match for connections

Previously, it was possible to restrict a connection to a given interface using only an exact match on the interface name. With this update, connections have a new match.interface-name property which supports wildcards. This update enables users to choose the interface for a connection in a more flexible way using a wildcard pattern.

(BZ#1555012)

Improvements in the networking stack 4.18

Red Hat Enterprise Linux 8.0 includes the networking stack upgraded to upstream version 4.18, which provides several bug fixes and enhancements. Notable changes include:

  • Introduced new offload features, such as UDP_GSO, and, for some device drivers, GRO_HW.
  • Improved significant scalability for the User Datagram Protocol (UDP).
  • Improved the generic busy polling code.
  • Improved scalability for the IPv6 protocol.
  • Improved scalability for the routing code.
  • Added a new default transmit queue scheduling algorithm,fq_codel, which improves a transmission delay.
  • Improved scalability for some transmit queue scheduling algorithms. For example, pfifo_fast is now lockless.

(BZ#1562987)

New tools to convert iptables to nftables

This update adds the iptables-translate and ip6tables-translate tools to convert the existing iptables or ip6tables rules into the equivalent ones for nftables. Note that some extensions lack translation support. If such an extension exists, the tool prints the untranslated rule prefixed with the # sign. For example:

| % iptables-translate -A INPUT -j CHECKSUM --checksum-fill
| nft # -A INPUT -j CHECKSUM --checksum-fill

Additionally, users can use the iptables-restore-translate and ip6tables-restore-translate tools to translate a dump of rules. Note that before that, users can use the iptables-save or ip6tables-save commands to print a dump of current rules. For example:

| % sudo iptables-save >/tmp/iptables.dump
| % iptables-restore-translate -f /tmp/iptables.dump
| # Translated by iptables-restore-translate v1.8.0 on Wed Oct 17 17:00:13 2018
| add table ip nat
| ...

(BZ#1564596)

New features added to VPN using NetworkManager

In Red Hat Enterprise Linux 8.0, NetworkManager provides the following new features to VPN:

  • Support for the Internet Key Exchange version 2 (IKEv2) protocol.
  • Added some more Libreswan options, such as the rightid, leftcert, narrowing, rekey, fragmentation options. For more details on the supported options, see the nm-settings-libreswan man page.
  • Updated the default ciphers. This means that when the user does not specify the ciphers, the NetworkManager-libreswan plugin allows the Libreswan application to choose the system default cipher. The only exception is when the user selects an IKEv1 aggressive mode configuration. In this case, the ike = aes256-sha1;modp1536 and eps = aes256-sha1 values are passed to Libreswan.

(BZ#1557035)

A new data chunk type, I-DATA, added to SCTP

This update adds a new data chunk type, I-DATA, and stream schedulers to the Stream Control Transmission Protocol (SCTP). Previously, SCTP sent user messages in the same order as they were sent by a user. Consequently, a large SCTP user message blocked all other messages in any stream until completely sent. When using I-DATA chunks, the Transmission Sequence Number (TSN) field is not overloaded. As a result, SCTP now can schedule the streams in different ways, and I-DATA allows user messages interleaving (RFC 8260). Note that both peers must support the I-DATA chunk type.

(BZ#1273139)

4.15. Security

OpenSSH rebased to version 7.8p1

The openssh packages have been upgraded to upstream version 7.8p1. Notable changes include:

  • Removed support for the SSH version 1 protocol.
  • Removed support for the hmac-ripemd160 message authentication code.
  • Removed support for RC4 (arcfour) ciphers.
  • Removed support for Blowfish ciphers.
  • Removed support for CAST ciphers.
  • Changed the default value of the UseDNS option to no.
  • Disabled DSA public key algorithms by default.
  • Changed the minimal modulus size for Diffie-Hellman parameters to 2048 bits.
  • Changed semantics of the ExposeAuthInfo configuration option.
  • The UsePrivilegeSeparation=sandbox option is now mandatory and cannot be disabled.
  • Set the minimal accepted RSA key size to 1024 bits.

(BZ#1622511)

RSA-PSS is now supported in OpenSC

This update adds support for the RSA-PSS cryptographic signature scheme to the OpenSC smart card driver. The new scheme enables a secure cryptographic algorithm required for the TLS 1.3 support in the client software.

(BZ#1595626)

rsyslog rebased to version 8.37.0

The rsyslog packages have been upgraded to upstream version 8.37.0, which provides many bug fixes and enhancements over the previous versions. Most notable changes include:

  • Enhanced processing of rsyslog internal messages; possibility of rate-limiting them; fixed possible deadlock.
  • Enhanced rate-limiting in general; the actual spam source is now logged.
  • Improved handling of oversized messages - the user can now set how to treat them both in the core and in certain modules with separate actions.
  • mmnormalize rule bases can now be embedded in the config file instead of creating separate files for them.
  • The user can now set the GnuTLS priority string for imtcp that allows fine-grained control over encryption.
  • All config variables, including variables in JSON, are now case-insensitive.
  • Various improvements of PostgreSQL output.
  • Added a possibility to use shell variables to control config processing, such as conditional loading of additional configuration files, executing statements, or including a text in config. Note that an excessive use of this feature can make it very hard to debug problems with rsyslog.
  • 4-digit file creation modes can be now specified in config.
  • Reliable Event Logging Protocol (RELP) input can now bind also only on a specified address.
  • The default value of the enable.body option of mail output is now aligned to documentation
  • The user can now specify insertion error codes that should be ignored in MongoDB output.
  • Parallel TCP (pTCP) input has now the configurable backlog for better load-balancing.

(BZ#1613880)

New rsyslog module: omkafka

To enable kafka centralized data storage scenarios, you can now forward logs to the kafka infrastructure using the new omkafka module.

(BZ#1542497)

libssh implements SSH as a core cryptographic component

This change introduces libssh as a core cryptographic component in Red Hat Enterprise Linux 8. The libssh library implements the Secure SHell (SSH) protocol.

Note that libssh does not comply with the system-wide crypto policy.

(BZ#1485241)

PKCS #11 support for smart cards and HSMs is now consistent across the system

With this update, using smart cards and Hardware Security Modules (HSM) with PKCS #11 cryptographic token interface becomes consistent. This means that the user and the administrator can use the same syntax for all related tools in the system. Notable enhancements include:

  • Support for the PKCS #11 Uniform Resource Identifier (URI) scheme that ensures a simplified enablement of tokens on RHEL servers both for administrators and application writers.
  • A system-wide registration method for smart cards and HSMs using the pkcs11.conf.
  • Consistent support for HSMs and smart cards is available in NSS, GnuTLS, and OpenSSL (through the openssl-pkcs11 engine) applications.
  • The Apache HTTP server (httpd) now seamlessly supports HSMs.

For more information, see the pkcs11.conf(5) man page.

(BZ#1516741)

System-wide cryptographic policies are applied by default

Crypto-policies is a component in Red Hat Enterprise Linux 8, which configures the core cryptographic subsystems, covering the TLS, IPSec, SSH, DNSSec, and Kerberos protocols. It provides a small set of policies, which the administrator can select using the update-crypto-policies command.

The DEFAULT system-wide cryptographic policy offers secure settings for current threat models. This policy is also compatible with PCI-DSS requirements. It allows the TLS 1.2 and 1.3 protocols, as well as the IKEv2 and SSH2 protocols. The RSA keys and Diffie-Hellman parameters are accepted if larger than 2047 bits.

See the Consistent security by crypto policies in Red Hat Enterprise Linux 8 article on the Customer Portal and the update-crypto-policies(8) man page for more information.

(BZ#1591620)

SCAP Security Guide supports OSPP 4.2

SCAP Security Guide provides a draft of the OSPP (Protection Profile for General Purpose Operating Systems) profile version 4.2 for Red Hat Enterprise Linux 8. This profile reflects mandatory configuration controls identified in the NIAP Configuration Annex to the Protection Profile for General Purpose Operating Systems (Protection Profile Version 4.2). SCAP Security Guide provides automated checks and scripts that enable users to meet requirements defined in the OSPP.

(BZ#1618518)

OpenSCAP command-line interface has been improved

The verbose mode is now available in all oscap modules and submodules. The tool output has improved formatting.

Deprecated options have been removed to improve the usability of the command-line interface.

The following options are no longer available:

  • --show in oscap xccdf generate report has been completely removed.
  • --probe-root in oscap oval eval has been removed. It can be replaced by setting the environment variable, OSCAP_PROBE_ROOT.
  • --sce-results in oscap xccdf eval has been replaced by --check-engine-results
  • validate-xml submodule has been dropped from CPE, OVAL, and XCCDF modules. validate submodules can be used instead to validate SCAP content against XML schemas and XSD schematrons.
  • oscap oval list-probes command has been removed, the list of available probes can be displayed using oscap --version instead.

OpenSCAP allows to evaluate all rules in a given XCCDF benchmark regardless of the profile by using --profile '(all)'.

(BZ#1618484)

Support for a new map permission check on the mmap syscall

The SELinux map permission has been added to control memory mapped access to files, directories, sockets, and so on. This allows the SELinux policy to prevent direct memory access to various file system objects and ensure that every such access is revalidated.

(BZ#1592244)

SELinux now supports systemd No New Privileges

This update introduces the nnp_nosuid_transition policy capability that enables SELinux domain transitions under No New Privileges (NNP) or nosuid if nnp_nosuid_transition is allowed between the old and new contexts. The selinux-policy packages now contain a policy for systemd services that use the NNP security feature.

The following rule describes allowing this capability for a service:

   allow source_domain  target_type:process2 { nnp_transition nosuid_transition };

For example:

   allow init_t fprintd_t:process2 { nnp_transition nosuid_transition };

The distribution policy now also contains the m4 macro interface, which can be used in SELinux security policies for services that use the init_nnp_daemon_domain() function.

(BZ#1594111)

SELinux now supports getrlimit permission in the process class

This update introduces a new SELinux access control check, process:getrlimit, which has been added for the prlimit() function. This enables SELinux policy developers to control when one process attempts to read and then modify the resource limits of another process using the process:setrlimit permission. Note that SELinux does not restrict a process from manipulating its own resource limits through prlimit(). See the prlimit(2) and getrlimit(2) man pages for more information.

(BZ#1549772)

TLS 1.3 support in cryptographic libraries

This update enables Transport Layer Security (TLS) 1.3 by default in all major back-end crypto libraries. This enables low latency across the operating system communications layer and enhances privacy and security for applications by taking advantage of new algorithms, such as RSA-PSS or X25519.

(BZ#1516728)

OpenSCAP rebased to version 1.3.0

The OpenSCAP suite has been upgraded to upstream version 1.3.0, which introduces many enhancements over the previous versions. The most notable features include:

  • API and ABI have been consolidated - updated, deprecated and/or unused symbols have been removed.
  • The probes are not run as independent processes, but as threads within the oscap process.
  • The command-line interface has been updated.
  • Python 2 bindings have been replaced with Python 3 bindings.

(BZ#1614273)

Audit 3.0 replaces audispd with auditd

With this update, functionality of audispd has been moved to auditd. As a result, audispd configuration options are now part of auditd.conf. In addition, the plugins.d directory has been moved under /etc/audit. The current status of auditd and its plug-ins can now be checked by running the service auditd state command.

(BZ#1616428)

rsyslog imfile now supports symlinks

With this update, the rsyslog imfile module delivers better performance and more configuration options. This allows you to use the module for more complicated file monitoring use cases. For example, you can now use file monitors with glob patterns anywhere along the configured path and rotate symlink targets with increased data throughput.

(BZ#1614179)

New SELinux booleans

This update of the SELinux system policy introduces the following booleans:

  • colord_use_nfs
  • mysql_connect_http
  • pdns_can_network_connect_db
  • ssh_use_tcpd
  • sslh_can_bind_any_port
  • sslh_can_connect_any_port
  • virt_use_pcscd

For more details, see the output of the following command:

# semanage boolean -l

(JIRA:RHELPLAN-10347)

4.16. Virtualization

KVM supports 5-level paging

With Red Hat Enterprise Linux 8, KVM virtualization supports the 5-level paging feature, which significantly increases the physical and virtual address space that the host and guest systems can use.

(BZ#1485229)

KVM supports UMIP in RHEL 8

KVM virtualization now supports the User-Mode Instruction Prevention (UMIP) feature, which can help prevent user-space applications from accessing to system-wide settings. This reduces the potential vectors for privilege escalation attacks, and thus makes the KVM hypervisor and its guest machines more secure.

(BZ#1494651)

Additional information in KVM guest crash reports

The crash information that KVM hypervisor generates if a guest terminates unexpectedly or becomes unresponsive has been expanded. This makes it easier to diagnose and fix problems in KVM virtualization deployments.

(BZ#1508139)

qemu-kvm 2.12 in RHEL 8

Red Hat Enterprise Linux 8 is distributed with qemu-kvm 2.12. This version fixes multiple bugs and adds a number of enhancements over the version 1.5.3, available in Red Hat Enterprise Linux 7.

Notably, the following features have been introduced:

  • Q35 guest machine type
  • UEFI guest boot
  • NUMA tuning and pinning in the guest
  • vCPU hot plug and hot unplug
  • guest I/O threading

Note that some of the features available in qemu-kvm 2.12 are not supported on Red Hat Enterprise Linux 8.

(BZ#1559240)

NVIDIA vGPU is now compatible with the VNC console

When using the NVIDIA virtual GPU (vGPU) feature, it is now possible to use the VNC console to display the visual output of the guest.

(BZ#1497911)

Ceph is supported by virtualization

With this update, Ceph storage is supported by KVM virtualization on all CPU architectures supported by Red Hat.

(BZ#1578855)

The Q35 machine type is now supported by virtualization

Red hat Enterprise Linux 8 introduces the support for Q35, a more modern PCI Express-based machine type. This provides a variety of improvements in features and performance of virtual devices, and ensures that a wider range of modern devices are compatible with virtualization. In addition, virtual machines created in Red Hat Enterprise Linux 8 are set to use Q35 by default.

Also note that the previously default PC machine type has become deprecated and should only be used when virtualizing older operating systems that do not support Q35.

(BZ#1599777)

QEMU sandboxing has been added

In Red Hat Enterprise Linux 8, the QEMU emulator introduces the sandboxing feature. QEMU sandboxing provides configurable limitations to what systems calls QEMU can perform, and thus makes virtual machines more secure. Note that this feature is enabled and configured by default.

(JIRA:RHELPLAN-10628)