Swapfile hibernacja

Witam wszystkich.
Borykam się z plikiem z tematem hibernacji.
Utworzyłem plik wymiany i chcę by działała hibernacja. Jakoś nie mogę się do szukać tutka.
Widziałem na youtube ale coś jest zakręcone.
sudo fallocate -l 8G /swapfile
sudo mkswap /swapfile
sudo chmod 600 /swapfile
sudo swapon /swapfile

sudo bash -c “echo /swapfile none swap defaults 0 0 >> /etc/fstab”

pozdrawiam

Tymi poleceniami na razie tylko utworzyłeś i aktywowałeś swapfile. Pomijam tu fakt, że zamiast fallocate rekomendują dd – ale to jest alternatywa, która też powinna zadziałać. Teraz powinieneś dodać odpowiednie parametry do kernela (czyli do /etc/default/grub w linii GRUB_CMDLINE_LINUX_DEFAULT) według schematu:

resume=<swap_file_partition> resume_offset=<swap_file_offset>

gdzie:

  • <swap_file_partition> to partycja, na której znajduje się swapfile, dla pewności sprawdź poleceniem findmnt -no UUID -T /swapfile
  • parametr <swap_file_offset> za Arch Wiki otrzymasz z polecenia filefrag -v /swapfile | awk '{ if($1=="0:"){print substr($4, 1, length($4)-2)} }' (są inne sposoby, ale ten daje bezpośredni wynik i nie wymaga tłumaczenia :stuck_out_tongue:)

Na koniec jeszcze mała uwaga, jeśli korzystasz z brfts to sytuacja wygląda trochę inaczej zarówno jeśli chodzi o utworzenie swapfile jak i hibernację do niego – odsyłam do linków, a w razie problemów pytaj :wink:

Możesz też użyć usługi w systemd która sama będzie tworzyła i usuwała swapfile

Rekomendacja dotyczy niektórych systemów plików - ‘pozastandardowych’ - na których mogą być problemy (nie znam szczegółów). Używam fallocate na Ext4 i nie zarejestrowałem dotychczas jakichkolwiek nieprawidłowości.


Nie tyle tworzyła i usuwała, ile zarządzała swap’em dynamicznie, dodając/usuwając pliki (o stałym, zdefiniowanym rozmiarze), w zależności od potrzeb.

Witajcie postanawiam odgrzebać mój temat ponieważ nie ukończyłem tej hibernacji.

Zacząłem od nowa.

dd if=/dev/zero of=swapfile bs=1K count=8M status=progress
chmod 600 swapfile  
mkswap swapfile 

Tworzenie obszaru wymiany w wersji 1, rozmiar = 8 GiB (bajtów: 8589930496)
brak etykiety, UUID=b5060ac4-a3a5-4af6-96ef-0e6b1fdf89ab

swapon swapfile

swapon: /home/rafiki20/swapfile: niebezpieczny właściciel pliku 1000, sugerowany 0 (root).
swapon: /home/rafiki20/swapfile: swapon nie powiodło się: Operacja niedozwolona

Próbowałem przez sudo i też nici :frowning:

sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab"
filefrag -v swapfile | awk '{ if($1=="0:"){print substr($4, 1, length($4)-2)} }'
resume=swapfile resume_offset=133103616

Jakie są następne kroki :confused:

Z tego wynika, że wszystkie wcześniejsze polecenia wykonywałeś z poziomu zwykłego użytkownika – błąd, wszystkie polecenia wykonujesz z uprawnieniami root.

Również źle, skoro zdecydowałeś się utworzyć swap w swoim katalogu domowym. Czyli zamiast /swapfile powinno być /home/rafiki20/swapfile

Kolejny błąd, tu podajesz UUID partycji na której znajduje się plik swap, czyli w twoim przypadku będzie to wynik findmnt -no UUID -T /home/rafiki20/swapfile

Mam nadzieję, że nie wpisałeś tego do terminala – te parametry (resume oczywiście do poprawy) podajesz w /etc/default/grub w linii:

GRUB_CMDLINE_LINUX_DEFAULT=

Potem oczywiście aktualizacja gruba, sudo update-grub

Nic więcej nie jest potrzebne, co najwyżej może być konieczne odblokowanie w ustawieniach systemowych opcji hibernacji, żeby się pojawiły w menu. Możesz też przetestować hibernację poleceniem systemctl hibernate

Ja zrobiłem wszystko według tego i hibernacja działa mi bez zarzutów.

Ok w grub mam napisą linię kodu.

GRUB_DEFAULT=saved
GRUB_TIMEOUT=5
GRUB_TIMEOUT_STYLE=hidden
GRUB_DISTRIBUTOR="Manjaro"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash apparmor=1 security=apparmor udev.log_priority=3"
GRUB_CMDLINE_LINUX=""

Mam wpisać

`resume=UUID=ec27ee41-d886-40b5-8374-98242d50b661 resume_offset=104730624

Tak + parametr resume_offset.

A co z tym ?? rozumiem ,że zostawić

"quiet splash apparmor=1 security=apparmor udev.log_priority=3"

A na końcu dodać to co wpisałem.

Zostawiasz, nowe wpisy dodajesz wewnątrz cudzysłowów. Bez znaczenia czy będą na początku, czy na końcu.


Jeszcze mały dodatek ode mnie, zajrzałem na wiki Archa i okazuje się, że zapomnieliśmy o jeszcze jednej rzeczy ważnej dla hibernacji, mianowicie o konfiguracji initframs. A więc w /etc/mkinitcpio.conf w HOOKS dodaj opcję resume i zrekonfiguruj initframs poleceniem sudo mkinitcpio -P

Dzięki za pomoc :wink:
Szkoda ,że po wywołaniu

systemctl hibernate
Failed to hibernate system via logind: Not enough swap space for hibernation
Eh, wymiękam może kiedyś się uda :frowning:

Do hibernacji potrzeba sporo swapu – minimum tyle ile masz RAM-u. Najwyraźniej dałeś mniej.

Komputer pokazuje 6,7GB
A ja mam 8GB ustawiony plik swapfile. Więc ;/

forum.manjaro.pl - polskie wsparcie Manjaro. Hostowane przez: vpsadmin - hosting Discourse