Fix /etc/fstab Boot Error & Emergency Mode with journalctl | INTROSERV
EUR
european

EUR

usa

USD

English En
Ex. VAT Ex. VAT 0%

How to Fix an /etc/fstab Boot Error Using journalctl

Level: Beginner / Intermediate
Estimated time: ~15 minutes
Goal: Analyze system logs using journalctl to identify and fix an /etc/fstab error that prevents the system from booting.

Introduction

A simple syntax error in /etc/fstab can prevent a server from booting, dropping you into an emergency maintenance shell. Recovering requires you to analyze system logs to pinpoint the exact point of failure. In this tutorial, we will use journalctl to query the systemd journal and view system logs Linux generates during startup. Understanding systemd logs is a critical skill for Linux log management, ensuring fast recovery and high availability for your services. Familiarity with basic journalctl commands is required to locate the mount point that caused the failure.

Linux log management and the logging stack

Before jumping into recovery, it is important to understand the components involved. Systemd (the init system and service manager for Linux) uses Systemd-journald (the system service that collects and stores logging data). This service gathers every Log (a record of events occurring within the system) into the Journal (the binary log data stored by Systemd-journald). These include system logs (records of system-wide events and state changes), boot logs (records of the system startup process), and kernel logs (messages generated by the core operating system kernel).

Depending on your configuration, these might be volatile logs (logs stored in memory that are lost on reboot) or persistent logs (logs that survive system reboots, typically stored on disk). The journal continuously grows, which is why log rotation (the process of archiving and managing old log files to save disk space) is handled automatically by systemd.

Prerequisites

Before you begin, make sure the following conditions are met:

  • Operating system: Tested on Ubuntu 22.04/24.04 LTS, Debian 12/13, AlmaLinux/Rocky 9/10
  • Access: Direct console access (IPMI, VNC, or physical console) to reach the emergency shell
  • Required knowledge: Confident use of the Linux command line and basic text editing

Info

On default Ubuntu and Debian installations, the root account is locked. Set a root password in advance with sudo passwd root - otherwise you won't be able to log in to emergency mode.
VPS instances are often provided with a root user enabled by default.

Step 1: Identifying the boot failure

A syntax error, typo, or missing device in /etc/fstab will trigger emergency mode, halting the boot process and prompting you with a message like:

Welcome to emergency mode! After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or "exit" to boot into default mode. Give root password for maintenance (or press Control-D to continue):

Enter your root password to access the prompt. At this stage, some file systems may not be mounted or may be mounted read-only.

Step 2: Use journalctl to view system logs Linux generates and analyze system logs

To identify what caused the failure, we must check the logs from the current boot.

Run the following command:

sudo journalctl -xb

Here, we use Journalctl (a command-line utility used to query the systemd journal). This is one of the most essential journalctl commands. It instructs the tool to show the logs for the current boot (-b) and include extra explanatory text (-x).

This output can be massive. We need to perform log filtering (the process of narrowing down log output based on specific criteria) to find the error.

To search within the pager (which uses less), type /fstab or /mount and press Enter.

Expected output snippet:

-- Subject: A start job for unit mnt-data.mount has failed -- Defined-By: systemd -- Support: http://www.ubuntu.com/support -- -- A start job for unit mnt-data.mount has finished with a failure. -- -- The job identifier is 123 and the job result is failed.

This indicates that a Unit (a configuration file that describes how to manage a resource in systemd) responsible for mounting /mnt/data failed. Specifically, the mount service unit (a unit configuration file that encodes information about a process managed by systemd) could not start.

Tip

You can use the spacebar to page down and q to quit the log viewer.

Step 3: Filtering systemd logs to find specific errors

If scrolling through the full boot log is too slow, we can analyze logs with journalctl using specific filters.

Run the following command to see only high-priority errors:

sudo journalctl -p err -b

Expected output:

May 23 10:00:01 server systemd[1]: Failed to mount mnt-data.mount - /mnt/data. May 23 10:00:01 server systemd[1]: Dependency failed for Local File Systems.

Tip

The Dependency failed for Local File Systems message appears only during boot time, not when running a manual systemctl start.

By journalctl filtering logs by priority (-p err), we eliminate informational messages.

We can also check service logs directly if we know the exact unit that failed. Run:

sudo journalctl -u mnt-data.mount

When you analyze logs with journalctl at the unit level, you isolate the exact configuration issue. Another method of journalctl filtering logs is to specify a time range, but for boot issues, filtering by unit is the most efficient approach.

Step 4: Fixing the /etc/fstab error

Now that the systemd journal has confirmed the problem is the /mnt/data mount point, we need to fix the configuration file.

First, attempt to edit the file. If you encounter a Read-only file system error when saving, you must remount the root filesystem as read-write, since emergency mode often mounts it read-only:

sudo mount -o remount,rw /

Next, back up the configuration file before making changes:

sudo cp /etc/fstab /etc/fstab.bak

Then, open the file (on RPM-based systems like AlmaLinux, Rocky, or RHEL, nano may not be installed by default, so install it first with sudo dnf install -y nano):

sudo nano /etc/fstab

Look for the line referencing /mnt/data (you can find the correct UUID using blkid):

UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data ext4 defualts 0 2

Notice the typo: defualts instead of defaults. Correct the typo:

UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data ext4 defaults 0 2

Save and exit the file. Then, reload the systemd manager configuration to ensure systemd is aware of the changes made to /etc/fstab:

sudo systemctl daemon-reload

Warning

Always verify UUIDs and syntax in /etc/fstab. An incorrect entry will cause the system to drop back into the emergency shell on the next boot.

Verification

Before rebooting, verify the syntax of your /etc/fstab using findmnt:

findmnt --verify

If it reports no errors, proceed to verify that the mount point works:

Run:

sudo mount -a

If the command returns no output, the syntax is correct and the mount succeeded. If you still have an error, the command will output an error message. The message may specify the exact reason on Debian 13 and AlmaLinux 10 (e.g., Unknown parameter 'defualts'), but on Ubuntu 24.04 the output is often generic (wrong fs type, bad option). On Ubuntu, run sudo dmesg | tail for details.

Once verified, exit the emergency shell to continue booting or reboot the system:

sudo systemctl reboot

After rebooting, you can check service logs again with journalctl commands to ensure the mount succeeded cleanly during the normal boot process:

sudo journalctl -u mnt-data.mount -b

Troubleshooting

  • Emergency shell is inaccessible: If the root account is locked and you cannot access the emergency shell, you must boot the server using a Live USB or recovery environment, mount the root partition, and edit /etc/fstab directly from there.
  • UUID changed: If you formatted a partition or replaced a disk, the UUID will change. Use sudo blkid to find the new UUID and update /etc/fstab accordingly.
  • Preventing boot failures for non-essential disks: For non-root, non-system volumes (like backup or data drives), add the nofail mount option to the /etc/fstab entry (e.g., ext4 defaults,nofail 0 2). This tells systemd to continue booting even if the device fails to mount.

Rollback

If the server booted successfully but the modified /mnt/data line causes unexpected application behavior, you can revert the mount by commenting out the line in /etc/fstab:

sudo sed -i 's|^UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data|#UUID=1234abcd-56ef-78gh-90ij-klmnopqrstuv /mnt/data|' /etc/fstab

Then unmount the volume to restore the previous state:

sudo umount /mnt/data

Conclusion

Effective Linux log management relies heavily on knowing how to navigate systemd logs. By using journalctl, you can view system logs Linux creates to efficiently analyze system logs and recover from critical boot failures like /etc/fstab misconfigurations. Mastering these tools ensures you can maintain uptime and diagnose complex issues across your infrastructure.

Document Version: 1.0
Last Updated: May 2026
Owner: Technical Documentation Team

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA