2.2. Installation and Boot

Read this section for a summary of changes made to installation tools and processes between Red Hat Enterprise Linux 6 and Red Hat Enterprise Linux 7.

2.2.1. New Boot Loader

Red Hat Enterprise Linux 7 introduces the GRUB2 boot loader, which replaces legacy GRUB in Red Hat Enterprise Linux 7.0 and later. GRUB2 supports more file systems and virtual block devices than its predecessor. It automatically scans for and configures available operating systems. The user interface has also been improved, and users have the option to skip boot loader installation.
However, the move to GRUB2 also removes support for installing the boot loader to a formatted partition on BIOS machines with MBR-style partition tables. This behavior change was made because some file systems have automated optimization features that move parts of the core boot loader image, which could break the GRUB legacy boot loader. With GRUB2, the boot loader is installed in the space available between the partition table and the first partition on BIOS machines with MBR (Master Boot Record) style partition tables. BIOS machines with GPT (GUID Partition Table) style partition tables must create a special BIOS Boot Partition for the boot loader. UEFI machines continue to install the boot loader to the EFI System Partition.
The recommended minimum partition sizes have also changed as a result of the new boot loader. Table 2.1, “Recommended minimum partition sizes” gives a summary of the new recommendations. Further information is available in section MBR and GPT Considerations of the Red Hat Enterprise Linux 7 Installation Guide.

Table 2.1. Recommended minimum partition sizes

/boot500 MB
/10 GB
swapAt least twice the RAM. See Section Recommended Partitioning Scheme in the Red Hat Enterprise Linux 7 Installation Guide for details.
boot loaderN/A (Installed between the partition table and the first partition)1 MB (BIOS Boot Partition)200 MB (EFI System Partition
Users can install GRUB2 to a formatted partition manually with the force option at the risk of causing file system damage, or use an alternative boot loader. For a list of alternative boot loaders, see the Red Hat Enterprise Linux 7 Installation Guide, available from http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.
If you have a dual-boot system, use GRUB2's operating system detection to automatically write a configuration file that can boot either operating system:
# grub2-mkconfig -o /boot/grub2/grub.cfg


Note, that if you have a dual-boot that is based on using UEFI uses other mechanism than MBR legacy based one. This means that you do not need to use EFI specific grub2 command:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg Default Boot Entry for Debugging

Default boot entry for systemd has been added to the /etc/grub.cfg file. It is no longer necessary to enable debugging manually. The default boot entry allows you to debug systems without affecting options at the boot time.

2.2.2. New Init System

systemd is the system and service manager that replaces the SysV init system used in previous releases of Red Hat Enterprise Linux.
systemd is the first process to start during boot, and the last process to terminate at shutdown. It coordinates the remainder of the boot process and configures the system for the user. Under systemd, interdependent programs can load in parallel, making the boot process considerably faster.
systemd is largely compatible with SysV in terms of user experience and scripting APIs. However, some exceptions do exist. See Section, “Backwards Compatibility” for details.
The move to systemd also involves a change in administration tools for Red Hat Enterprise Linux. See the systemctl man page or the Red Hat Enterprise Linux 7 System Administrator's Guide for details.
For further information about the boot process, see the Red Hat Enterprise Linux 7 Installation Guide. For further information about systemd, see the Red Hat Enterprise Linux 7 System Administrator's Guide. Backwards Compatibility

systemd is designed to be largely compatible with SysV in terms of user experience and scripting APIs. However, there are some cases where compatibility is limited.
  • Standard /etc/init.d/servicename commands (start, stop, status) still work. However, Red Hat recommends /usr/sbin/service servicename commands, as they forward directly to systemd rather than using legacy init scripts.
  • Run level support is limited. All SysV run levels map to systemd targets; however, not all systemd targets map to SysV run levels. Some checks for the current run level will therefore return N (unknown run level). Red Hat recommends avoiding run level checks and moving to the more useful systemd targets.
  • Legacy run levels 2, 3, and 4 all map to the multi-user.target systemd target by default. Users can modify this behavior by configuring different systemd targets.
  • Services execute cleanly and do not inherit any context of the invoking user. Init scripts depending on inherited context will not work.
  • systemd does not support additional verbs in init scripts. If you require verbs other than start, stop, or status, move them to an auxiliary script.
  • Linux Standard Base header information is now fully interpreted and utilized by systemd at run time.
  • All init script operations are now subject to a timeout of 5 minutes to prevent the system from freezing because of a hanging init script.
  • systemd stops only running services; services that were not started are also not stopped during shutdown.
  • The chkconfig tool shows only SysV services and run level information, and may output misleading information. Red Hat recommends using the systemctl command instead.
  • SysV services, even those with root privileges, cannot acquire real-time scheduling when the CPUAccounting option is enabled. With CPUAccounting enabled for any service, systemd makes use of the CGroup CPU bandwidth controller globally, and subsequent sched_setscheduler() system calls terminate unexpectedly due to real-time scheduling priority. To avoid this error to recur, the CGroup cpu.rt_runtime_us option can be set for the real-time using service.
  • Services can no longer read from standart input (stdin). If you require interactive scripts, consider the minimal password querying framework supported by systemd. Further information about this functionality is available from the man page:
    $ man systemd-ask-password
  • Previous versions of Red Hat Enterprise Linux included a System z specific preinstallation script (linuxrc.s390), which started System z systems at boot time. The new init system obsoletes this preinstallation script, and System z systems now boot in the same way as AMD64, Intel® 64 and Power systems. Systemd-debug-generator

The systemd-debug-generator is a generator for enabling a runtime debug shell and masking specific units at boot. It reads the kernel command line and understands the following three options:
If this option is specified and followed by a unit name, this unit is masked for the runtime. At boot, it is useful to hae certain units removed from the initial boot transaction for debugging system startup. This option may be specified more than once.
If this option is specified and followed by a unit name, a start job for this unit is added to the initial transaction. This is useful if you want to start one or more additional units at boot. This option may be specified more than once.
If this option is specified, the debug-shell.service is pulled into the boot transaction. It will spawn a debug shell on tty9 during early system startup. Note that the shell may also be turned on persistently by using a systemctl enable command. New Installer

The Red Hat Enterprise Linux installer, Anaconda, has been redesigned and enhanced in order to improve the installation process for Red Hat Enterprise Linux 7.
The updated installer features:
  • A redesigned graphical user interface that is faster, more flexible, and requires less input from the user.
  • Support for LVM thin provisioning.
  • Installation support for btrfs. (Note, however, that btrfs is a Technology Preview in Red Hat Enterprise Linux 7.)
  • Improved localization support.
  • Support for directly formatted and not partitioned devices.
  • Support for teaming and bonding network technologies.
  • Support for automatically selecting an appropriate keyboard layout, language, and time zone. (This requires internet connectivity.) Values set based on detection are overridden by any manually set values.
  • NTP servers advertised by DHCP are now used automatically.
  • Kickstart integration for the realmd D-Bus service, Active Directory, and FreeIPA.
  • A new text mode that works on IBM System z and PowerPC systems, and serial consoles. Text mode provides a subset of the features provided by the graphical installer.
This new installer also comes with some important changes.
  • Previously, storage configuration required that the user have detailed technical knowledge of their storage system. In Red Hat Enterprise Linux 7, storage configuration has been redesigned so that users need to enter minimal detail to configure storage.
  • Anaconda now uses the inst.repo parameter to set network and other install locations instead of using the inst.root parameter.
  • Detailed package selection in the graphical installer interface has been replaced by the Software Selection screen. Software is divided up in to Environments and Addons. Users pick one environment and any number of add-ons. Kickstart installations continue to have full control over packages selected at install time.
For further information about any of these features, see the Red Hat Enterprise Linux 7 Installation Guide. Boot parameter changes Specifying boot parameters
Boot options specific to the installer are prefixed with inst. in this guide. Currently, this prefix is optional in Red Hat Enterprise Linux 7: resolution=1024x768 works exactly the same as inst.resolution=1024x768. However, this prefix is expected to become mandatory in future releases, and parameters without prefix are considered deprecated. Changes to boot parameters
The new installer uses dracut to configure disks and networking. As a result, some kernel command line boot parameters have changed between Red Hat Enterprise Linux 6 and Red Hat Enterprise Linux 7. New parameters
Specifies the location of the installation program runtime image to be loaded. The syntax is the same as the syntax of the inst.repo parameter. This option ignores everything but the image; it cannot be used to specify the location of packages.
Updates a driver package with a package at the location specified. This option can be used multiple times. The location syntax is the same as the location syntax of the inst.repo parameter.
Configures geolocation usage in the installer to preset the language and time zone. The default value is provider_fedora_geoip. Valid values for this parameter include the following.

Table 2.2. Geolocation values

Disables geolocation.
Uses the Fedora GeoIP API.
Uses the Hostip.info GeoIP API.
Specifies that the frame buffer X driver should be used instead of a hardware specific driver. This option is equivalent to inst.xdriver=fbdev.
Specifies the boot interface. This option is mandatory if ip is specified more than once.
Configures the system for multilib packages, for example, to allow 32-bit packages to be installed on a 64-bit system.
Installs partition information into a GUID Partition Table (GPT) instead of the Master Boot Record (MBR).
Specifies a virtio port to be used to forward logs. The default value is org.fedoraproject.anaconda.log.0. If this port exists, it will be used.
Takes a Direct Access Storage Device (DASD) adaptor device bus identifier and, optionally, comma separated sysfs parameter and value pairs. Activates the DASD with the specified device bus ID and sets the mentioned sysfs parameters to the values specified. For example, rd.dasd=adaptor_id,readonly=0. This parameter can be specified multiple times to activate multiple DASDs.
Takes a SCSI over FCP (zFCP) adaptor device bus identifier, a world wide port name (WWPN), and a FCP LUN. Activates the zFCP device with the specified device bus identifier, port name, and LUN. This parameter can be specified multiple times to activate multiple zFCP devices.
Takes a network protocol type, a comma delimited list of subchannels, and, optionally, comma delimited sysfs parameter and value pairs. Activates the System z network device driver for the specified protocol, sets up the specified subchannels, and sets the parameters specified. This parameter can be specified multiple times to activate multiple network devices.
rd.znet=ctc,0.0.0600,0.0.0601,protocol=bar Changed parameters
Previously kssendmac. Adds headers to outgoing HTTP requests including the MAC addresses of all network interfaces. This is useful when using inst.ks=http to provision systems.
name server
Previously dns. Specifies the address of the name server. This option can be used multiple times. Deprecated parameters
Options in this list are deprecated. They will still work, but there are other options which offer the same functionality. Using deprecated options is not recommended and they are expected to be removed in future releases.
Specified the location of updates for the installation program. Use the inst.updates option instead.
Configured the installation method. Use the inst.repo= option instead.
In NFS installations, specified that the target was an ISO image located on an NFS server instead of an installable tree. The difference is now detected automatically, making this option the same as inst.repo=nfs:server:/path.
Configured the Domain Name Server (DNS). Use the nameserver= option instead.
netmask, gateway, hostname, ip, ipv6
These options have been consolidated under the ip option.
Specified the BOOTIF option used when installing from a PXE server. This is now detected automatically.
Configured the network device to be used during a Kickstart installation. Different values for this parameter have been replaced with different parameters as per the following table.

Table 2.3. kickstart parameter values

Current behavior
Not present
Attempt to activate all devices with DHCP, unless a device and configuration are specified with the ip or BOOTIF options.
Ignored (this is the same as the default behavior).
Ignored (BOOTIF is used as the default if specified).
Replaced with dracut option ip=ibft.
Replaced with BOOTIF=MAC.
Replaced with device specification in the dracut ip option.
Used to disable specified drivers. This is now handled by the rd.driver.blacklist dracut option with the following syntax:
Disabled support for the FireWire interface. You can disable the FireWire driver (firewire_ohci) by using the rd.driver.blacklist option instead:
rd.driver.blacklist=firewire_ohci Removed parameters
The following options have been removed. They were present in previous releases of Red Hat Enterprise Linux, but they cannot be used anymore.
This option forced Anaconda to use the /dev/ttyS0 console as the output. Use the console parameter to specify the /dev/ttyS0 console (or similar) instead.
essid, wepkey, wpakey
Configured wireless network access. Network configuration is now handled by dracut, which does not support wireless networking, rendering these options useless.
Used in the past to configure additional low-level network settings. All network settings are now handled by the ip option.
Allowed you to debug the loader. Use rd.debug instead.
Verified the installation media before starting the installation. Replaced with the rd.live.check option.
Specified a diskette as the Kickstart file source. Floppy drives are no longer a supported boot medium.
Configured a remote display. Replaced with the inst.vnc option.
Added UTF8 support when installing in text mode. UTF8 support now works automatically.
Disabled IPv6 support in the installation program. IPv6 is now built into the kernel so the driver cannot be blacklisted; however, it is possible to disable IPv6 using the ipv6.disable dracut option.
Upgrades have changed inRed Hat Enterprise Linux 7. For more information, see Chapter 1, How to Upgrade, Section 3.1.1, “Preupgrade Assistant”, and Section 3.1.2, “Red Hat Upgrade Tool”.
Configured a VLAN device. Replaced with the dracut vlan option.

2.2.3. Changes to firstboot Implementation

Red Hat Enterprise Linux 7 replaces firstboot with the Initial Setup utility, initial-setup, for better interoperability with the new installer. Basic firstboot functionality has been moved to the installer and initial-setup.
Third-party modules written for firstboot continue to work in Red Hat Enterprise Linux 7. However, firstboot is expected to be deprecated in future releases. Maintainers of third-party modules should therefore consider updating their modules for use with the installer or the Initial Setup tool.

2.2.4. Changed mount behavior at boot

Earlier versions of Red Hat Enterprise Linux booted regardless of whether all partitions specified in /etc/fstab could be mounted. This could result in a system appearing "up" and healthy, while booting without required partitions.
To prevent this situation, in Red Hat Enterprise Linux 7, if a partition defined in /etc/fstab cannot be mounted at boot, boot fails. If a partition should not cause boot to fail in the event that it cannot be mounted, use the new nofail parameter in /etc/fstab.
/dev/critical     /critical   xfs   defaults          1  2
/dev/optional     /optional   xfs   defaults,nofail   1  2
In this example, the device mounted at /optional would not cause boot to fail if it could not be mounted successfully.

2.2.5. Changes to /etc/issue file

In the previous versions of the Red Hat Enterprise Linux, the /etc/issue file contained the product name and the release number of the machine. As of Red Hat Enterprise Linux 7, the product name and the release number have been moved into the /etc/os-release file and the first line of /etc/issue now contains an agetty escape code \S. The \S escape code expands in the console displaying a product name and the release number of the machine. The code is represented by the PRETTY_NAME variable, which is defined in the /etc/os-release file.


The expansion of the \S escape code works only from the console. Using the expansion in an environment that does not support it will result in printing only "\S".
For more information about \S, see the agetty man pages.