Study guide

8.2 Boot Systems into Different Targets Manually

Red Hat Certified System Administrator RHCSA

Track your progress as you read

Finished sections get a check mark.

1 Introduction & Exam Overview

1.1 Current Exam Facts 1.2 Lab Setup & Performance-Based Study Strategy

2 Essential Tools: Shell, Redirection & Text Analysis

2.1 Shell Prompt and Command Syntax 2.2 Input-Output Redirection and Pipes 2.3 grep and Regular Expressions for Text Analysis

3 Essential Tools: Remote Access, Users & Text Editing

3.1 Access Remote Systems Using SSH 3.2 Log In and Switch Users in Multiuser Targets 3.3 Create and Edit Text Files

4 Essential Tools: Files, Links & Archives

4.1 Create, Delete, Copy, and Move Files and Directories 4.2 Hard and Soft Links 4.3 Archive and Compress with tar, gzip, and bzip2

5 Essential Tools: Permissions & System Documentation

5.1 List, Set, and Change Standard ugo/rwx Permissions 5.2 System Documentation: man, info, and /usr/share/doc

6 Manage Software: RPM and Flatpak

6.1 Configure Access to RPM Repositories 6.2 Install and Remove RPM Software Packages 6.3 Configure Access to Flatpak Repositories 6.4 Install and Remove Flatpak Software Packages

7 Create Simple Shell Scripts

7.1 Conditional Execution: if, test, and [] 7.2 Looping Constructs for Files and Input 7.3 Process Script Inputs ($1, $2, and Beyond) 7.4 Process Shell Command Output in Scripts

8 Operate Running Systems: Boot and Recovery

8.1 Boot, Reboot, and Shut Down a System Normally 8.2 Boot Systems into Different Targets Manually 8.3 Interrupt the Boot Process to Gain Access

9 Operate Running Systems: Processes and Tuning

9.1 Identify and Kill CPU/Memory Intensive Processes 9.2 Adjust Process Scheduling 9.3 Manage Tuning Profiles

10 Operate Running Systems: Logs, Services & File Transfer

10.1 Locate and Interpret System Log Files and Journals 10.2 Preserve System Journals 10.3 Start, Stop, and Check Status of Network Services 10.4 Securely Transfer Files Between Systems

11 Configure Local Storage: Partitions and LVM

11.1 List, Create, and Delete Partitions on GPT Disks 11.2 Create and Remove Physical Volumes 11.3 Assign Physical Volumes to Volume Groups 11.4 Create and Delete Logical Volumes

12 Configure Local Storage: Mounting and Expansion

12.1 Mount File Systems at Boot by UUID or Label 12.2 Add Partitions, Logical Volumes, and Swap Non-Destructively

13 Create and Configure File Systems: Local FS and Permissions

13.1 Create, Mount, and Use VFAT, ext4, and XFS File Systems 13.2 Extend Existing Logical Volumes 13.3 Diagnose and Correct File Permission Problems

14 Create and Configure File Systems: NFS and autofs

14.1 Mount and Unmount Network File Systems Using NFS 14.2 Configure autofs

15 Deploy and Maintain: Scheduling, Services & Targets

15.1 Schedule Tasks with at, cron, and systemd Timers 15.2 Start, Stop, and Enable Services at Boot 15.3 Configure Systems to Boot into a Specific Target

16 Deploy and Maintain: Time, Software Updates & Bootloader

16.1 Configure Time Service Clients 16.2 Install and Update Software from CDN, Remote Repos, and Local Files 16.3 Modify the System Bootloader

17 Manage Basic Networking

17.1 Configure IPv4 and IPv6 Addresses 17.2 Configure Hostname Resolution 17.3 Configure Network Services to Start Automatically at Boot 17.4 Restrict Network Access Using firewalld and firewall-cmd

18 Manage Users and Groups

18.1 Create, Delete, and Modify Local User Accounts 18.2 Change Passwords and Adjust Password Aging 18.3 Create, Delete, and Modify Local Groups and Memberships 18.4 Configure Privileged Access

19 Manage Security: Firewall, umask & SSH Keys

19.1 Configure Firewall Settings with firewall-cmd and firewalld 19.2 Manage Default File Permissions 19.3 Configure Key-Based Authentication for SSH

20 Manage Security: SELinux Modes and Contexts

20.1 Set Enforcing and Permissive Modes for SELinux 20.2 List and Identify SELinux File and Process Contexts 20.3 Restore Default File Contexts

21 Manage Security: SELinux Ports and Booleans

21.1 Manage SELinux Port Labels 21.2 Use Boolean Settings to Modify SELinux Settings

8.2 Boot Systems into Different Targets Manually

Key Takeaways Explain This Topic AI

systemd targets group units into boot goals; common ones are multi-user.target, graphical.target, rescue.target, and emergency.target.

systemctl get-default and systemctl set-default manage the persistent default target used on normal boots.

systemctl isolate name.target switches the running system toward that target immediately (manual change, not only at boot).

Rescue is a single-user maintenance mode with more services than emergency; emergency is minimal with root filesystem often read-only.

You can select a target for one boot from the GRUB kernel command line (systemd.unit=) without permanently changing the default.

Last updated: August 2026

8.2 Boot Systems into Different Targets Manually

Quick Answer: systemd targets are boot/operation goals. Check the default with systemctl get-default ; set it with systemctl set-default multi-user.target (or graphical.target ). Switch live with systemctl isolate rescue.target (careful). For one boot only, edit the GRUB kernel line to add systemd.unit=rescue.target (or another target). Know multi-user , graphical , rescue , and emergency for EX200.

Why targets matter

Classic SysV runlevels (3, 5, 1, …) map conceptually onto systemd targets . EX200 expects you to boot systems into different targets manually —maintenance modes, text multi-user without GUI, or graphical when required—and to understand how temporary switches differ from the default target stored on disk.

Related deploy objective (“configure systems to boot into a specific target”) emphasizes persistence via set-default . This section focuses on manual selection and the target model you need for both.

Targets vs services

  • Concept Role
  • Unit A systemd object: service, socket, mount, target, timer, …
  • Service Runs a daemon or oneshot process ( sshd.service )
  • Target A synchronization point / goal that pulls in other units via dependencies

Starting multi-user.target does not mean one binary named multi-user; it means “bring the system to a state where multi-user networking and gettys are up,” by activating many Wants/Requires relationships.

  • List targets: systemctl list-units --type=target
  • systemctl list-units --type=target --all
  • systemctl list-unit-files --type=target
  • Essential targets for RHCSA
  • multi-user.target
  • Non-graphical multi-user system
  • Networking, sshd (if enabled), text logins (gettys)
  • Common server default
  • Rough SysV analogy: runlevel 3
  • graphical.target
  • Multi-user plus graphical display manager / GUI stack
  • Typical desktop default when a GUI is installed
  • Rough SysV analogy: runlevel 5

If GUI packages are missing, setting this default can yield a degraded or failed graphical path—install needed groups/packages first in real life

  • rescue.target
  • Single-user-style maintenance mode
  • More of the base system is up than emergency (including more mounts/services depending on dependencies)
  • Often used for repair when you still want a relatively complete single-user environment
  • Requires root authentication for the rescue shell in normal configurations
  • Rough SysV analogy: runlevel 1 / rescue
  • emergency.target
  • Minimal environment for emergency repair
  • Sulogin prompt; root filesystem may be mounted read-only
  • Fewer dependencies—useful when rescue itself cannot start because of a broken unit
  • You may need mount -o remount,rw / before editing files
  • Other targets you will see
  • Target Notes
  • default.target Alias to the configured default (symlink under /etc/systemd/system/default.target )
  • network-online.target Synchronization point for “network is up” (services pull it; not a full boot mode)
  • reboot.target / poweroff.target / halt.target Shutdown-related goals
  • initrd-root-fs.target etc. Early boot inside initramfs—advanced

For EX200, master multi-user , graphical , rescue , and emergency first.

  • Inspecting the default and current state systemctl get-default
  • # example output: multi-user.target
  • ls -l /etc/systemd/system/default.target
  • # symlink to /usr/lib/systemd/system/multi-user.target or graphical.target
  • systemctl status multi-user.target
  • systemctl status graphical.target
  • systemctl is-active multi-user.target

get-default is the operator-friendly check. The symlink under /etc/systemd/system/default.target is what systemd uses as the default boot goal on a normal start.

  • Changing the default target (persistent) # Prefer multi-user (no GUI goal at boot)
  • sudo systemctl set-default multi-user.target
  • # Prefer graphical
  • sudo systemctl set-default graphical.target

systemctl get-default

set-default adjusts the symlink so the next normal boots use that target. It does not by itself rebuild the live session into a GUI; use isolate or reboot to experience the new default.

Exam pattern:

  • systemctl set-default multi-user.target
  • systemctl get-default confirms
  • systemctl reboot

After boot, confirm no display-manager requirement if that was the intent; who -r / target active state as applicable

Never only isolate if the task says the system must boot into a target by default—graders reboot.

  • systemctl isolate — manual switch on a running system sudo systemctl isolate multi-user.target
  • sudo systemctl isolate graphical.target
  • sudo systemctl isolate rescue.target

isolate activates the named target and stops units not belonging to its dependency tree . That is powerful and dangerous:

Isolating multi-user.target from a GUI session tears down graphical services.

Isolating rescue.target drops the machine toward rescue maintenance mode— SSH and multi-user services can die .

You can lock yourself out of a remote-only host if you isolate rescue without console access.

Use isolate when:

You have console access (or accept session loss).

You need to manually enter a maintenance mode without full reboot.

  • A task explicitly asks to switch targets now. # See what isolate would imply—still read man systemctl
  • man systemctl
  • # isolate is related to starting a target and stopping conflicting units

To leave rescue after maintenance (from the rescue environment), boot/isolate back to multi-user or reboot: sudo systemctl isolate multi-user.target

  • # or
  • sudo systemctl reboot
  • emergency vs rescue — choosing and entering sudo systemctl isolate emergency.target
  • sudo systemctl isolate rescue.target

Comparison for exams and real break/fix:

  • Concern rescue.target emergency.target
  • Footprint Larger single-user maintenance Minimal
  • Root FS Typically read-write capable path Often read-only until remount
  • When to use General maintenance, many repair tasks When even rescue fails or you need minimalism
  • Auth root password / sulogin style access root sulogin

If local root password is unknown, isolate alone may not help—you need Section 8.3 boot interrupt / password reset techniques.

One-shot boot into a target (GRUB kernel command line)

To boot once into a target without changing default.target :

Reboot and interrupt GRUB (often Esc or hold Shift on BIOS systems; UEFI behavior varies—use the lab’s documented key).

Highlight the kernel entry → e to edit.

Find the line starting with linux / linuxefi .

  • Append a space and: systemd.unit=rescue.target
  • or systemd.unit=emergency.target

Boot with Ctrl+x (or F10 on some systems).

This affects only that boot unless you also change the default on disk. Excellent for temporary recovery without forgetting to set the default back.

Alternative historical aliases sometimes seen in docs ( 1 , s , single ) may map to rescue-like behavior on some systems; prefer explicit systemd.unit= on modern RHEL for clarity.

  • Practical scenarios
  • Scenario A — Server should not boot to GUI systemctl get-default
  • sudo systemctl set-default multi-user.target
  • sudo systemctl reboot
  • # verify
  • systemctl get-default
  • systemctl status graphical.target # likely inactive if not pulled in
  • Scenario B — Enter rescue for maintenance, then return
  • From console: sudo systemctl isolate rescue.target
  • # authenticate; perform repairs
  • sudo systemctl isolate multi-user.target

Or reboot with systemd.unit=rescue.target once from GRUB if the system is unhealthy for isolate.

  • Scenario C — emergency shell, remount root RW, fix fstab typo # after emergency shell
  • mount -o remount,rw /
  • vim /etc/fstab
  • systemctl daemon-reload # if needed for unit changes
  • systemctl reboot

(Exact emergency tooling depends on how far the system got; initramfs emergencies differ slightly—see storage failures and Section 8.3.)

set-default vs isolate vs systemd.unit=

  • Method Persistence Scope
  • systemctl set-default … Permanent until changed Future normal boots
  • systemctl isolate … Temporary live switch Current boot session path
  • GRUB systemd.unit=… Single boot only Next boot only

Trap: Isolating multi-user.target is not the same as set-default multi-user.target . After reboot, the symlink default wins again.

Dependencies and “why did SSH die?”

Targets pull units through Wants= / Requires= / Conflicts= . Isolating a smaller target stops conflicting multi-user services. That is expected. Document for yourself: console first before rescue isolate on remote machines.

  • Inspect a target’s dependencies: systemctl show multi-user.target -p Wants -p Requires
  • systemctl list-dependencies multi-user.target
  • systemctl list-dependencies rescue.target
  • Common traps

Using isolate when the task requires set-default (fails after grader reboot).

Setting graphical.target without a working GUI stack → failed/degraded boot experience.

Isolating rescue over SSH only → lost session, no console plan.

Confusing emergency with rescue and fighting a read-only root without remount.

Typos in systemd.unit= on GRUB line → unexpected target or ignored token.

Editing GRUB for one boot but forgetting Ctrl+x to boot the edited entry.

Section checkpoint

You should name the major targets, read and set the default with get-default / set-default , manually switch with isolate when appropriate, boot once via GRUB systemd.unit= , compare rescue vs emergency, and choose the method that matches temporary vs persistent exam wording.