Hibernacja w systemie GNU Linux: kompletny i praktyczny przewodnik

Ostatnia aktualizacja: 14 stycznia 2026
  • Hibernacja w systemie GNU/Linux zapisuje cały stan pamięci RAM w pamięci wymiany i wyłącza komputer, natomiast stan uśpienia zachowuje pamięć w pamięci RAM, zapewniając niskie zużycie energii.
  • Aby hibernacja działała niezawodnie, wymagane jest wsparcie jądra oraz wystarczająca ilość przestrzeni wymiany, np. partycja wymiany lub dobrze skonfigurowany plik wymiany.
  • Różne narzędzia (systemd, pm-utils, uswsusp i PolicyKit) umożliwiają włączanie, kontrolowanie lub wyłączanie hibernacji i zawieszenia w zależności od dystrybucji i scenariusza użytkowania.
  • Wybór między zawieszeniem, hibernacją a ponownym uruchomieniem z przywróceniem sesji zależy od równowagi, jaką chcesz uzyskać między oszczędnością energii, szybkością powrotu do pracy i stabilnością systemu.

Hibernacja w systemie GNU/Linux

La hibernacja w GNU/Linux Pozostaje to jedną z tych funkcji, o których wszyscy słyszeli, ale która nie zawsze jest dobrze zrozumiana lub poprawnie skonfigurowana. Wielu użytkowników zgłasza się tutaj po problemach z systemem Windows lub laptopami, które niespodziewanie się wyłączają, i chce dokładnie wiedzieć, do czego służy każdy tryb zasilania i jak go kontrolować w swojej dystrybucji Linuksa.

W najnowszych wersjach jądra i głównych dystrybucjach sytuacja uległa znacznej poprawie, ale problemy nadal występują. Ważne niuanse między hibernacją, zawieszeniem i zamknięciem przy ponownym otwieraniu dokumentówOprócz szczegółów technicznych, takich jak wykorzystanie przestrzeni wymiany (na partycjach lub w plikach), które są ważne dla zrozumienia, przedstawimy to wszystko spokojnie, ale w sposób przejrzysty i praktyczny.

Hibernacja, zawieszenie i ponowne uruchomienie z przywróceniem sesji: czym się różnią

Zanim cokolwiek dotkniesz w ustawieniach, kluczowe jest zrozumienie co właściwie robi każdy tryb oszczędzania energiiPonieważ często dochodzi do pomylenia pojęć, a potem pojawia się strach przed utratą danych lub rozładowanymi bateriami.

Kiedy mówimy o hibernacji w systemach operacyjnych, mamy na myśli proces, w którym cały stan systemu zostaje zamrożonyOtwórz programy, dokumenty, usługi, ustawienia pulpitu, bufory itd. Cała ta zawartość pamięci RAM zostaje zapisana na trwałym nośniku danych (zwykle dysku wymiany), a komputer zostaje całkowicie wyłączony.

To daje do zrozumienia ze Hibernacja nie jest tym samym, co pozostawienie plików otwartych. To nie to samo, co wyłączenie komputera, ani to samo, co jego uśpienie. Jest to wolniejsze niż uśpienie do pamięci RAM, ale pozwala zaoszczędzić znacznie więcej energii, ponieważ komputer jest całkowicie wyłączony i nie pobiera prądu.

Z drugiej strony niektóre systemy oferują coś w rodzaju „ponownego uruchomienia z ponownym otwarciem dokumentu”, gdzie system normalnie się wyłącza, ale po ponownym uruchomieniu Aplikacje, które były otwarte, zostaną automatycznie uruchomione ponownie.W systemie GNU/Linux wiele dystrybucji naśladuje zachowanie tego środowiska graficznego, nie jest to jednak hibernacja: jest to nadal zimny rozruch, w którym wszystkie usługi są uruchamiane od podstaw.

Zaletą hibernacji w porównaniu z ponownym uruchomieniem z przywróceniem aplikacji jest to, że Jądro i przestrzeń użytkownika nie uruchamiają się ponownie od nowa.Zamiast tego przywracany jest pełny obraz poprzedniego stanu. Dzięki temu, gdy wszystko działa poprawnie, możesz wznowić pracę dokładnie tam, gdzie ją przerwałeś, bez konieczności ponownego otwierania dokumentów czy rekonfigurowania okien.

Tryby zasilania w systemie GNU Linux

Czym jest zawieszenie w systemie Linux i dlaczego warto z niego korzystać?

W trybie uśpienia system operacyjny generuje żywy obraz obecnego stanu (Twoje programy, Twoje dokumenty, pulpit), ale zamiast zapisać je na dysku, pozostawia je w pamięci RAM, która jest ulotna.

Gdy jądro się zawiesza, wyłącza praktycznie wszystkie urządzenia sprzętowe: dysk, ekran, większość chipsetu… Jedynym elementem, który pozostaje zasilany, jest Pamięć RAM i minimalne parametry płyty głównej tak, aby mógł się „obudzić”, gdy naciśniesz klawisz, poruszysz myszką lub otworzysz pokrywę laptopa.

Ten tryb jest świetny, gdy chcesz niemal natychmiastowy powrót do pulpitu I nie martwisz się tak bardzo o zużycie energii, gdy komputer jest bezczynny. Nowoczesny laptop może pozostawać w trybie uśpienia przez jeden do trzech dni na zasilaniu bateryjnym, ale w tym czasie nadal pobiera trochę energii, aby podtrzymać działanie pamięci RAM.

Zawieszenie standardowe jest szczególnie zalecane, jeśli masz ponad 2 GB pamięci RAM i mało miejsca na dysku (na przykład na małych dyskach SSD) lub jeśli wkrótce znowu będziesz korzystać z komputera. Jest to typowe w przypadku zamknięcia pokrywy na kilka minut między zajęciami lub przerwy na lunch.

Zawieszenie hybrydowe: połączenie pamięci RAM i dysku

Istnieje trzeci, mniej znany sposób: zawieszenie hybrydoweW tym przypadku system przechodzi cały proces hibernacji (zrzuca zawartość pamięci na dysk, zwykle do pamięci wymiany), ale zamiast wyłączyć się całkowicie, przechodzi w stan wstrzymania w pamięci RAM.

  Contpaq: Funkcje i zalety

Tworzy to mieszany scenariusz: jeśli bateria wytrzyma, Podniesiesz system tak szybko, jak w przypadku normalnego zawieszenia.Jeśli jednak zabraknie prądu, obraz zapisany na dysku pozwoli na przywrócenie sesji, tak jakby była ona w stanie hibernacji.

Odwrotną stroną tego jest to, że Wejście i wyjście zajmuje więcej czasu. To coś więcej niż tylko stan wstrzymania, ponieważ zapisuje dane na dysku i jednocześnie zasila pamięć RAM. Dlatego jest często używany na serwerach lub stacjach roboczych, które wymagają dodatkowego poziomu zabezpieczeń przed utratą stanu.

Jak działa hibernacja wewnętrznie w systemie GNU/Linux

Podczas hibernacji systemu GNU/Linux jądro wykonuje serię dość dobrze zdefiniowanych kroków, przechwycić i przywrócić pełny stan maszynyNie chodzi tu po prostu o „zapisanie pamięci RAM do pliku” i tyle.

Typowy proces zawieszenie na dysku (suspend-to-disk) Ogólna sekwencja jest następująca:

  • Procesy użytkownika są zatrzymane aby zamrozić jego stan i zapobiec dalszej modyfikacji pamięci podczas przechwytywania.
  • Urządzenia sprzętowe są zamrażane lub zatrzymywane, aby zapobiec zmianom pamięci związanym z kontrolerami i DMA.
  • Powstaje obraz hibernacji: Cała zawartość pamięci RAM jest kopiowana z wyłączonymi przerwami.
  • Urządzenia sprzętowe są ponownie aktywowane w sposób kontrolowany.
  • Obraz jest napisany w przestrzeń wymiany, który jest następnie uważany za obszar zawieszenia (swsusp lub linux-suspend).
  • Na koniec wszystkie urządzenia zostają zawieszone, a komputer całkowicie wyłączony.

Po ponownym uruchomieniu system startowy Sprawdź, czy istnieje prawidłowy obraz hibernacji:

  • Tak jest, Nie uruchamia się normalnie.ale odczytuje obraz z wymiany.
  • Urządzenia zostają ponownie zamrożone, aby zapobiec zakłóceniom.
  • Obraz jest kopiowany z pamięci podręcznej do pamięci RAM i reaktywować procesy i urządzenia takie, jakie były przed hibernacją.

Ciekawy szczegół zaobserwowany w testach w warunkach rzeczywistych: po hibernacji stara „partycja wymiany linux” jest oznaczona jako linux-suspend lub swsusp w narzędziach takich jak GParted czy parted. Ta zmiana typu jest jedną z wskazówek, na podstawie których system decyduje, czy przywrócić system z hibernacji, czy zacząć od nowa.

Znaczenie zamiany podczas hibernacji

Cały ten mechanizm wymaga spełnienia jednego kluczowego wymogu: hibernacji w systemie Linux Potrzebujesz odpowiedniej przestrzeni wymianyzarówno pod względem rozmiaru, jak i konfiguracji. Bez pamięci wymiany system nie będzie miał gdzie przechowywać obrazu pamięci RAM.

Zamiana może być:

  • A partycja dedykowana z systemem typu linux-swap.
  • Un plik wymiany znajduje się w normalnym systemie plików (na przykład w /swapfile).

W praktyce jądro traktuje oba jako przestrzeń wymiany w sposób transparentny. Jednak aby użyć plik wymiany jako miejsce docelowe hibernacji Musisz przekazać jądru za pomocą menedżera rozruchu takie parametry, jak: resume= (urządzenie) i resume_offset= (przesunięcie w pliku). Jeśli tego nie zrobisz, system uruchomi się od nowa i nie przywróci obrazu, nawet jeśli zostanie on zapisany na dysku.

Jeśli chodzi o rozmiar, klasyczną rekomendacją dla niezawodnej hibernacji jest to, że dysk wymiany powinien mieć co najmniej rozmiar fizycznej pamięci RAMPrawdą jest, że jeśli system jest mocno niewykorzystany, czasami można hibernować z nieco mniejszą przestrzenią wymiany, ale nie jest to pewne i nie należy tego uogólniać. W systemach z 32 GB lub 64 GB pamięci RAM lub większą, wielu administratorów odradza całkowitą hibernację ze względu na ograniczenia czasowe i dyskowe.

Warto również pamiętać, że istnieją mechanizmy takie jak: zram lub zswapktóre tworzą skompresowany obszar wymiany w samej pamięci RAM. Są one fantastyczne do poprawy wydajności w systemach z ograniczoną pamięcią, ale nie nadają się do hibernacji: są niestabilne, Obraz znikał po odcięciu zasilania..

Hibernacja na partycji wymiany a plik wymiany

Przez lata uważano, że posiadanie dedykowana partycja wymiany Jeśli chciałeś przejść w stan hibernacji bez komplikacji, zachowanie jądra i narzędzi takich jak initramfs było w dużej mierze oparte na tym klasycznym modelu.

Jednakże wiele nowoczesnych dystrybucji, np. ostatnie wersje Ubuntu, domyślnie używają tej opcji. plik wymiany zamiast partycjiNie oznacza to utraty możliwości hibernacji, zmienia się jedynie miejsce zapisywania stanu.

  Dystrybucje Linuksa: Kompletny przewodnik

W obu przypadkach podstawowy proces jest taki sam: Obraz z pamięci RAM trafia do trwałej przestrzeni wymianyRóżnica polega na tym, że w przypadku pliku wymiany system musi znać dokładny blok na dysku, w którym rozpoczyna się plik (stąd ten parametr). resume_offset) aby móc odczytać obraz wcześniej podczas uruchamiania.

Praktyczne eksperymenty na komputerach z systemem Debian i pochodnymi wykazały, że jeśli Partycja wymiany jest sformatowana lub usunięta W miejscu, w którym przechowywany był obraz hibernacji, kolejne uruchomienie będzie czyste, tak jakby hibernacja nigdy nie miała miejsca. To potwierdza, że ​​obraz rzeczywiście znajduje się w przestrzeni wymiany, a nie w innym miejscu na dysku.

Wymagania jądra i wsparcie w dystrybucjach

Oprócz przestrzeni wymiany konieczne jest, aby Jądro Linuxa ma włączoną obsługę hibernacjiJeśli skompilujesz własne jądro i wyłączysz tę opcję, bez względu na to, jak bardzo zmienisz konfigurację dystrybucji, nie będziesz mógł przejść w tryb hibernacji.

W praktyce większość dystrybucji korzysta z jądra spakowanego przez sam projekt i w takich przypadkach Hibernacja jest zazwyczaj włączona domyślnie. wraz z pozostałymi standardowymi funkcjami zarządzania energią i sterownikami.

Jednak nie wszystkie dystrybucje zawsze wyświetlają przycisk „Hibernuj” w graficznym menu. Niektóre, jak Ubuntu w niektórych wersjach, Domyślnie ukrywają tę opcję na pulpicie. chociaż jądro i infrastruktura hibernacji są w pełni operacyjne.

Jak włączyć hibernację w systemie Ubuntu za pomocą PolicyKit

W systemach Ubuntu, w których opcja hibernacji nie jest wyświetlana w menu wyłączania, możesz zrehabilitować w stosunkowo prosty sposób Pomysł polega na zmodyfikowaniu niektórych reguł PolicyKit w celu umożliwienia zwykłym użytkownikom wywoływania akcji hibernacji upower i logind.

Typowa procedura obejmuje na przykład utworzenie pliku konfiguracyjnego com.ubuntu.enable-hibernate.pklao treści podobnej do tej (dostosowanej do składni używanej przez Twoje narzędzia):


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.upower.hibernate
ResultActive=tak


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=tak

Po utworzeniu pliku należy go umieścić w /etc/polkit-1/localauthority/50-local.d/Aby to zrobić, możesz otworzyć menedżera plików jako administrator (na przykład za pomocą gksudo nautilus (w środowiskach, które nadal obsługują tę funkcję) i wklej ją do tego katalogu.

Po ponownym uruchomieniu systemu pojawi się pulpit Ubuntu pokaże opcję hibernacji Oprócz funkcji wyłączania, restartowania i zawieszania, nadal wymagana jest oczywiście odpowiednio duża przestrzeń wymiany i jądro z obsługą hibernacji.

Konfiguracja hibernacji w systemie GNU Linux

Polecenia hibernacji i zawieszenia z poziomu terminala

Jeśli wolisz terminal lub używasz lekkich środowisk (Fluxbox, IceWM, Openbox, JWM itp.), w których nie ma wstępnie skonfigurowanych przycisków zasilania, możesz sterować hibernacja i zawieszenie bezpośrednio za pomocą poleceń.

Korzystanie z pm-utils

W wielu klasycznych dystrybucjach Debian/Ubuntu pakiet pm-utils Dostarcza kilka prostych poleceń:

  • pm-zawiesićTo powoduje zawieszenie maszyny w pamięci RAM. Większość urządzeń jest wyłączana, a stan jest utrzymywany w pamięci. Zużycie energii ulega znacznemu zmniejszeniu, ale energia nadal jest pobierana.
  • pm-hibernacja:hibernuje system poprzez zapisanie pamięci RAM na dysku (dysku wymiany) i całkowite wyłączenie komputera.
  • pm-zawieszenie-hybrydaPrzeprowadza hibernację dysku i zamiast wyłączać komputer, przełącza pamięć RAM w tryb uśpienia, osiągając w ten sposób „uśpienie hybrydowe”.

Podstawowe zastosowanie będzie wyglądać następująco:

sudo pm-suspend
sudo pm-hibernate
sudo pm-suspend-hybrid

W systemach opartych na Arch Linuxie i innych, które utrzymują go w swoich repozytoriach, można również używać tych poleceń, chociaż pm-utils zostało porzucone na rzecz systemd w wielu nowoczesnych dystrybucjach.

Korzystanie z systemd (systemctl)

W dystrybucjach z systemd (OpenSUSE, wiele wersji Arch i pochodnych, nowoczesny Debian itp.) zalecanym sposobem jest użycie systemctl:

  • zawieszenie systemctl: zawiesza pamięć RAM.
  • systemctl hibernacja:hibernuje na dysku.
  • systemctl hybrydowy sen: aktywuje zawieszenie hybrydowe.

Na przykład w OpenSUSE lub jakimkolwiek typowym systemie systemd możesz bezpośrednio wywołać:

sudo systemctl hibernacja

W wielu dystrybucjach, jeśli wolisz zachować zgodność ze starszymi narzędziami, pm-hibernacja Pozostaje dostępny i po prostu deleguje lub współistnieje z systemd, w zależności od konfiguracji.

Używanie uswsusp: s2ram, s2disk i s2both

Inną rodziną narzędzi, obecnie mniej powszechną, są uswsuspktóry udostępnia polecenia s2ram, s2disk i s2both. Był dostępny w Debianie i Ubuntu do niektórych wersji (Debian 10; Ubuntu 20.04 i nowsze wycofały go z użytku).

  • s2ram: zawiesza system do pamięci RAM (tryb S3). Jest to odpowiednik pm-suspend lub systemctl suspend.
  • s2disk: zapisuje cały stan na dysku i wyłącza maszynę (klasyczna hibernacja).
  • s2both:łączy obydwie rzeczy: zapisuje obraz na dysku, a następnie zawiesza go w pamięci RAM, osiągając hybrydowe zachowanie.
  Jak krok po kroku podzielić dysk 1 TB w systemie Windows

Polecenia będą następujące:

sudo s2ram
sudo s2disk
sudo s2both

Te narzędzia wymagają prawidłowej konfiguracji initramfs, aby po uruchomieniu mechanizm wznawiania nazywa się (wznawianie) i przywrócić obraz, jeśli istnieje.

Jak wyłączyć uśpienie i hibernację w systemach GNU/Linux

W niektórych środowiskach, takich jak sale lekcyjne, komputery współdzielone lub publiczne stanowiska robocze, uśpienie i hibernacja mogą powodować nieoczekiwane wyłączenia, problemy z siecią lub blokady, które trudno wyjaśnić użytkownikomW takich przypadkach najbardziej praktycznym rozwiązaniem jest całkowite wyłączenie tych funkcji.

Wyłącz za pomocą systemd (maska ​​docelowa)

Jeżeli Twój system używa systemd, wystarczy zamaskować cele związane ze snem i hibernacją tak, aby nie można było ich aktywować ani z menu graficznego, ani z terminala:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Przekierowuje te cele do / dev / nullInnymi słowy, symbolicznie wysyła je „do kosza”. Po ponownym uruchomieniu, każda próba uśpienia lub hibernacji zakończy się niepowodzeniem.

Jeśli później zechcesz przywrócić normalne zachowanie, będziesz musiał użyć tylko:

sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target

Wyłącz przyciski hibernacji i zawieszenia za pomocą PolicyKit

Inną, lepszą opcją jest użycie PolicyKit do usuwania uprawnień do zawieszania/hibernacji dla wszystkich użytkowników. Na przykład możesz tworzyć pliki w /etc/polkit-1/localauthority/90-mandatory.d/ się:

/etc/polkit-1/localauthority/90-mandatory.d/disable-suspend.pkla


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.upower.suspend
ResultActive=nie
WynikNieaktywny=nie
ResultAny=nie


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.login1.suspend
ResultActive=nie


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=nie

I dla hibernación:

/etc/polkit-1/localauthority/90-mandatory.d/disable-hibernate.pkla


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.upower.hibernate
ResultActive=nie
WynikNieaktywny=nie
ResultAny=nie


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.login1.hibernate
ResultActive=nie


Tożsamość=użytkownik-unix:*
Akcja=org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=nie

Po ponownym uruchomieniu przyciski uśpienia i hibernacji znikną z menu graficznych. zapobiegając nieumyślnemu ich aktywowaniu przez użytkownika.

Zablokuj skróty klawiaturowe i polecenia bezpośrednie

Nawet jeśli ukryjesz przyciski, niektóre komputery stacjonarne i klawiatury nadal je będą miały. specjalne klawisze uśpienia/hibernacji który może nadal działać. W starszych środowiskach z klasycznym GNOME można to było dostosować za pomocą poleceń takich jak:

gconftool -s /apps/gnome-power-manager/buttons/hibernate -t ​​​​ciąg interaktywny

Dodatkowo możesz tworzyć skrypty w /etc/pm/sleep.d/Jak /etc/pm/sleep.d/000cancel-hibernate-suspendktóry po prostu Anuluj wszelkie próby zawieszenia lub hibernacji przywrócenie kontroli nad systemem. Typowy szkielet wyglądałby następująco:

#! / Bin / sh
# zapobiega hibernacji i zawieszaniu
. «$PM_FUNCTIONS»
przypadek «${1}» w
zawiesić|hibernować)
hamować
;;
wznowić|odwilż)
wyjście 0
;;
to C

Nie zapomnij nadać mu uprawnień do wykonywania:

chmod 0755 /etc/pm/sleep.d/000cancel-hibernate-suspend

Kiedy hibernacja jest wskazana, a kiedy nie?

Mając na uwadze całą tę teorię, pozostaje kwestia praktyczna: Kiedy naprawdę warto przejść w stan hibernacji w systemie GNU/Linux? Nie ma jednej odpowiedzi, ale istnieją pewne rozsądne wytyczne.

Jeśli Twoim absolutnym priorytetem jest oszczędzać energię (Na przykład na laptopie, którego nie używasz przez wiele godzin) i masz dużo miejsca na dysku na obraz pamięci, hibernacja jest bardzo atrakcyjną opcją; możesz przeczytać, jak wybrać pomiędzy Wyłącz, wstrzymaj lub hibernuj swój komputerZużycie energii w trybie hibernacji wynosi zero, a po powrocie do normalnego trybu pracy urządzenie uruchamia się znacznie szybciej niż po zimnym starcie.

Jeśli zależy Ci na szybkości powrotu do pulpitu i nie zamierzasz używać komputera w trybie bezczynności. tylko na chwilęZawieszenie systemu do pamięci RAM może być wygodniejsze. Komputer nadal będzie zużywał trochę energii z baterii, ale wznowienie będzie niemal natychmiastowe.

W systemach z dużą ilością pamięci RAM lub w których stabilność po wznowieniu nie jest gwarantowana (nietypowy sprzęt, egzotyczne sterowniki itp.) często warto zrezygnować z hibernacji i wybrać dobrą funkcję wstrzymania oraz czysty restart z przywróceniem dokumentów kiedy był potrzebny.

Ostatecznie dokładne zrozumienie, w jaki sposób polegają one na wymianie, co jądro robi w tle i jak kontrolować je za pomocą narzędzi takich jak systemd, pm-utils, uswsusp lub PolicyKit, pozwala traktować hibernację i zawieszenie jako narzędzia na twoją korzyśća nie tak tajemnicze funkcje, które czasami działają, a czasami pozostawiają laptopa „zawieszonym” bez żadnego wyraźnego wyjaśnienia.

wyłącz tryb uśpienia lub hibernacji komputera
Podobne artykuł:
Wyłączanie, zawieszanie lub hibernacja komputera: co najlepiej przedłuży jego żywotność