Błąd rozruchu /etc/fstab: tryb awaryjny i journalctl | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Jak naprawić błąd rozruchu /etc/fstab za pomocą journalctl

Poziom: Początkujący / Średnio zaawansowany
Szacowany czas: ~15 minut
Cel: Przeanalizować logi systemowe za pomocą journalctl, aby zidentyfikować i naprawić błąd w /etc/fstab, który uniemożliwia uruchomienie systemu.

Wprowadzenie

Prosty błąd składni w /etc/fstab może uniemożliwić uruchomienie serwera i przenieść Cię do awaryjnej powłoki konserwacyjnej. Odzyskanie systemu wymaga analizy logów systemowych, aby wskazać dokładne miejsce awarii. W tym poradniku użyjemy journalctl do przeszukiwania dziennika systemd i wyświetlenia logów systemowych generowanych przez Linuksa podczas uruchamiania. Zrozumienie logów systemd to kluczowa umiejętność w zarządzaniu logami w Linuksie, zapewniająca szybkie odzyskiwanie i wysoką dostępność usług. Podstawowa znajomość poleceń journalctl jest potrzebna, aby zlokalizować punkt montowania, który spowodował awarię.

Zarządzanie logami w Linuksie i stos logowania

Zanim przejdziesz do odzyskiwania systemu, warto zrozumieć zaangażowane komponenty. Systemd (system init i menedżer usług w Linuksie) korzysta z Systemd-journald (usługi systemowej, która zbiera i przechowuje dane logów). Usługa ta gromadzi każdy log (zapis zdarzeń zachodzących w systemie) w dzienniku (Journal) (binarnych danych logów przechowywanych przez Systemd-journald). Obejmują one logi systemowe (zapisy zdarzeń i zmian stanu w skali całego systemu), logi rozruchu (zapisy procesu uruchamiania systemu) oraz logi jądra (komunikaty generowane przez jądro systemu operacyjnego).

W zależności od konfiguracji mogą to być logi nietrwałe (logi przechowywane w pamięci, tracone po ponownym uruchomieniu) lub logi trwałe (logi, które przetrwają restarty systemu, zwykle zapisywane na dysku). Dziennik stale rośnie, dlatego rotacja logów (proces archiwizowania i zarządzania starymi plikami logów w celu oszczędzania miejsca na dysku) jest obsługiwana automatycznie przez systemd.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że spełnione są następujące warunki:

  • System operacyjny: Przetestowano na Ubuntu 22.04/24.04 LTS, Debian 12/13, AlmaLinux/Rocky 9/10
  • Dostęp: Bezpośredni dostęp do konsoli (IPMI, VNC lub konsola fizyczna), aby dostać się do powłoki awaryjnej
  • Wymagana wiedza: Swobodna obsługa wiersza poleceń Linuksa i podstawowa edycja tekstu

Info

W domyślnych instalacjach Ubuntu i Debiana konto root jest zablokowane. Ustaw hasło roota z wyprzedzeniem poleceniem sudo passwd root, w przeciwnym razie nie zalogujesz się do trybu awaryjnego.
Instancje VPS są często dostarczane z domyślnie włączonym użytkownikiem root.

Krok 1: Rozpoznanie awarii rozruchu

Błąd składni, literówka lub brakujące urządzenie w /etc/fstab uruchomią tryb awaryjny, wstrzymają proces rozruchu i wyświetlą komunikat podobny do poniższego:

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):

Wpisz hasło roota, aby przejść do wiersza poleceń. Na tym etapie niektóre systemy plików mogą nie być zamontowane lub mogą być zamontowane tylko do odczytu.

Krok 2: Użycie journalctl do wyświetlenia i analizy logów systemowych generowanych przez Linuksa

Aby zidentyfikować przyczynę awarii, musimy sprawdzić logi z bieżącego rozruchu.

Wykonaj poniższe polecenie:

sudo journalctl -xb

Używamy tu Journalctl (narzędzia wiersza poleceń do przeszukiwania dziennika systemd). To jedno z najważniejszych poleceń journalctl. Nakazuje narzędziu wyświetlić logi bieżącego rozruchu (-b) oraz dołączyć dodatkowy tekst objaśniający (-x).

Wynik może być ogromny. Musimy przeprowadzić filtrowanie logów (zawężanie wyniku do wpisów spełniających określone kryteria), aby znaleźć błąd.

Aby przeszukiwać zawartość pagera (który korzysta z less), wpisz /fstab lub /mount i naciśnij Enter.

Fragment oczekiwanego wyniku:

-- 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.

Oznacza to, że nie powiodło się działanie jednostki (unit) (pliku konfiguracyjnego opisującego, jak zarządzać zasobem w systemd) odpowiedzialnej za zamontowanie /mnt/data. Konkretnie nie udało się uruchomić jednostki montowania (mount unit) (pliku konfiguracyjnego jednostki, który zawiera informacje o procesie zarządzanym przez systemd).

Tip

Spacją przewijasz o stronę w dół, a klawiszem q zamykasz przeglądarkę logów.

Krok 3: Filtrowanie logów systemd w celu znalezienia konkretnych błędów

Jeśli przewijanie całego logu rozruchu jest zbyt wolne, możemy analizować logi za pomocą journalctl, stosując konkretne filtry.

Wykonaj poniższe polecenie, aby zobaczyć tylko błędy o wysokim priorytecie:

sudo journalctl -p err -b

Oczekiwany wynik:

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

Komunikat Dependency failed for Local File Systems pojawia się tylko podczas rozruchu, a nie przy ręcznym uruchomieniu systemctl start.

Dzięki filtrowaniu logów w journalctl według priorytetu (-p err) eliminujemy komunikaty informacyjne.

Możemy też bezpośrednio sprawdzić logi usługi, jeśli znamy dokładną jednostkę, która zawiodła. Wykonaj:

sudo journalctl -u mnt-data.mount

Gdy analizujesz logi za pomocą journalctl na poziomie jednostki, izolujesz dokładny problem konfiguracyjny. Inną metodą filtrowania w journalctl jest określenie przedziału czasu, ale w przypadku problemów z rozruchem filtrowanie według jednostki jest najskuteczniejsze.

Krok 4: Naprawa błędu w /etc/fstab

Skoro dziennik systemd potwierdził, że problemem jest punkt montowania /mnt/data, musimy poprawić plik konfiguracyjny.

Najpierw spróbuj edytować plik. Jeśli podczas zapisu pojawi się błąd Read-only file system, musisz ponownie zamontować główny system plików w trybie do odczytu i zapisu, ponieważ tryb awaryjny często montuje go tylko do odczytu:

sudo mount -o remount,rw /

Następnie wykonaj kopię zapasową pliku konfiguracyjnego przed wprowadzeniem zmian:

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

Potem otwórz plik (w systemach opartych na RPM, takich jak AlmaLinux, Rocky czy RHEL, nano może nie być domyślnie zainstalowany, więc najpierw zainstaluj go poleceniem sudo dnf install -y nano):

sudo nano /etc/fstab

Znajdź wiersz odwołujący się do /mnt/data (poprawny UUID znajdziesz poleceniem blkid):

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

Zwróć uwagę na literówkę: defualts zamiast defaults. Popraw literówkę:

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

Zapisz plik i zamknij edytor. Następnie przeładuj konfigurację menedżera systemd, aby systemd uwzględnił zmiany wprowadzone w /etc/fstab:

sudo systemctl daemon-reload

Warning

Zawsze weryfikuj UUID-y i składnię w /etc/fstab. Nieprawidłowy wpis spowoduje, że przy następnym uruchomieniu system ponownie przejdzie do powłoki awaryjnej.

Weryfikacja

Przed ponownym uruchomieniem zweryfikuj składnię /etc/fstab za pomocą findmnt:

findmnt --verify

Jeśli nie zgłoszono błędów, sprawdź, czy punkt montowania działa:

Wykonaj:

sudo mount -a

Jeśli polecenie nie zwraca żadnego wyniku, składnia jest poprawna, a montowanie się powiodło. Jeśli nadal występuje błąd, polecenie wyświetli komunikat o błędzie. W Debianie 13 i AlmaLinux 10 komunikat może wskazywać dokładną przyczynę (np. Unknown parameter 'defualts'), ale w Ubuntu 24.04 wynik jest często ogólny (wrong fs type, bad option). W Ubuntu wykonaj sudo dmesg | tail, aby uzyskać szczegóły.

Po weryfikacji wyjdź z powłoki awaryjnej, aby kontynuować rozruch, lub uruchom system ponownie:

sudo systemctl reboot

Po restarcie możesz ponownie sprawdzić logi usługi poleceniami journalctl, aby upewnić się, że montowanie powiodło się bez błędów podczas zwykłego rozruchu:

sudo journalctl -u mnt-data.mount -b

Rozwiązywanie problemów

  • Powłoka awaryjna jest niedostępna: Jeśli konto root jest zablokowane i nie możesz uzyskać dostępu do powłoki awaryjnej, musisz uruchomić serwer z nośnika Live USB lub środowiska odzyskiwania, zamontować partycję główną i edytować /etc/fstab bezpośrednio stamtąd.
  • UUID uległ zmianie: Jeśli sformatowano partycję lub wymieniono dysk, UUID się zmieni. Użyj sudo blkid, aby znaleźć nowy UUID, i odpowiednio zaktualizuj /etc/fstab.
  • Zapobieganie awariom rozruchu przez dyski nieistotne: W przypadku woluminów niebędących głównymi ani systemowymi (takich jak dyski kopii zapasowych lub danych) dodaj do wpisu w /etc/fstab opcję montowania nofail (np. ext4 defaults,nofail 0 2). Dzięki temu systemd kontynuuje rozruch, nawet jeśli urządzenia nie uda się zamontować.

Wycofanie zmian

Jeśli serwer uruchomił się poprawnie, ale zmodyfikowany wiersz /mnt/data powoduje nieoczekiwane zachowanie aplikacji, możesz cofnąć montowanie, komentując ten wiersz w /etc/fstab:

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

Następnie odmontuj wolumin, aby przywrócić poprzedni stan:

sudo umount /mnt/data

Podsumowanie

Skuteczne zarządzanie logami w Linuksie w dużej mierze zależy od umiejętności poruszania się po logach systemd. Dzięki journalctl możesz wyświetlać logi systemowe generowane przez Linuksa, aby sprawnie je analizować i odzyskiwać system po krytycznych awariach rozruchu, takich jak błędna konfiguracja /etc/fstab. Opanowanie tych narzędzi pozwala utrzymać dostępność i diagnozować złożone problemy w całej infrastrukturze.

Wersja dokumentu: 1.0
Ostatnia aktualizacja: maj 2026
Właściciel: Zespół dokumentacji technicznej

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