Power Managment Hibernate / Ruhezustand hinzufügen Beschreibung: Bei Linux Mint kann es vorkommen das beim Herunterfahren der Button Ruhezustand / Hibernate fehlt. DIese kann man nachrüsten, wenn das System hibernate unterstützt. Ob das System hibernate unterstützt und auch aus diesem wieder aufwacht kann man mit diesem Befehl testen. Damit versetzt man das System in den hibernate sudo systemctl hibernate Wenn das geklappt hat, gibts zwei möglichkeiten.  Man erstellt sich eine Verknüpfung mit dem Befehl Wir fügen den Button zum Beenden Menü hinzu Hinzufügen zum Menü: Mittels sh Script, was eine SWAP Datei für Hibernate angelegt, danach wird der Menüeintrag erstellt. Dieses Script läuft ab Linux mint 22 nano setup_hibernate.sh Inhalt: #!/bin/bash # Script to setup hibernation in Linux Mint 22 # Author: Random Person # Data: 2024-08-12 # Based on: https://ubuntuhandbook.org/index.php/2021/08/enable-hibernate-ubuntu-21-10 # Print text inside a boxed border. box_title() { local len=$((${#1}+2)) printf "\n╔" printf -- "═%.0s" $(seq 1 $len) printf "╗\n║ $1 ║\n╚" printf -- "═%.0s" $(seq 1 $len) printf "╝\n\n" } # Setup swap file setup_swap() { echo echo "Setting up the swap file." echo "Please wait..." echo swapoff -a rm -f /swapfile dd if=/dev/zero of=/swapfile bs=1M count=$needed chmod 0600 /swapfile mkswap /swapfile sed -i '/swap/{s/^/#/}' /etc/fstab tee -a /etc/fstab <<< "/swapfile none swap sw 0 0" swapon -a } # Setup Hibernate setup_hibernate() { local resume_params="resume=UUID=$(findmnt / -o UUID -n) resume_offset=$(filefrag -v /swapfile|awk 'NR==4{gsub(/\./,"");print $4;}') " echo echo "Setting up hibernation." echo "Please wait..." echo # Adds kernel parameter in grub boot configuration file if grep resume /etc/default/grub>/dev/null; then sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT=\".*resume_offset=[0-9]* /GRUB_CMDLINE_LINUX_DEFAULT=\"$resume_params/" /etc/default/grub else sed -i "s/GRUB_CMDLINE_LINUX_DEFAULT=\"/GRUB_CMDLINE_LINUX_DEFAULT=\"$resume_params/" /etc/default/grub fi update-grub # Adds device major:minor numbers in resume configuration echo $(findmnt / -o MAJ:MIN -n) > /sys/power/resume echo "# Path Mode UID GID Age Argument" > /etc/tmpfiles.d/hibernation_resume.conf echo "w /sys/power/resume - - - - $(findmnt / -o MAJ:MIN -n)" >> /etc/tmpfiles.d/hibernation_resume.conf # Adds hibernation option in power-off menu apt install -y -qq polkitd-pkla mkdir -p /etc/polkit-1/localauthority/50-local.d tee /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla << 'EOB' >/dev/null [Re-enable hibernate by default in upower] Identity=unix-user:* Action=org.freedesktop.upower.hibernate ResultActive=yes [Re-enable hibernate by default in logind] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit ResultActive=yes EOB mkdir -p /etc/polkit-1/localauthority/90-mandatory.d tee /etc/polkit-1/localauthority/90-mandatory.d/enable-hibernate.pkla << 'EOB' >/dev/null [Enable hibernate] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions ResultActive=yes EOB mkdir -p /etc/polkit-1/rules.d tee /etc/polkit-1/rules.d/10-enable-hibernate.rules << 'EOB' >/dev/null polkit.addRule(function(action, subject) { if (action.id == \"org.freedesktop.login1.hibernate\" || action.id == \"org.freedesktop.login1.hibernate-multiple-sessions\" || action.id == \"org.freedesktop.upower.hibernate\" || action.id == \"org.freedesktop.login1.handle-hibernate-key\" || action.id == \"org.freedesktop.login1.hibernate-ignore-inhibit\") { return polkit.Result.YES; } }); EOB echo echo "Hibernation setup completed." echo "Please reboot your system for all changes to take effect." echo } main() { local available=$(df -m / | tail -n1 | awk '{print $4}') local swap=$(free -m | tail -n1 | awk '{print $2}') local needed=$(($1 * 1024)) box_title "Setup Hibernate" if [[ ! `id -u` -eq "0" ]] || [[ "$#" != "1" ]] || ! [[ $1 =~ ^[0-9]+$ ]]; then echo echo "Use: sudo bash setup-hibernate.sh [SIZE]" echo "[SIZE] => Swap size in GB." echo else # Check required swap file size available=$(($available + $swap)) if [ "$available" -gt "$needed" ]; then setup_swap setup_hibernate else echo echo "Hibernate setup aborted." echo "Available swap space: $available" echo "Needed swap space: $needed" echo fi fi } main "$@" Nun ausführbar machen und ausführen, die Größe der SWAP Partition für Hibernate chmod +x setup_hibernate.sh sudo ./setup_hibernate.sh [SIZE] Output: ... Found initrd image: /boot/initrd.img-6.8.0-51-generic Found linux image: /boot/vmlinuz-6.8.0-50-generic Found initrd image: /boot/initrd.img-6.8.0-50-generic Found linux image: /boot/vmlinuz-5.15.0-56-generic Found initrd image: /boot/initrd.img-5.15.0-56-generic Warning: os-prober will be executed to detect other bootable partitions. Its output will be used to detect bootable binaries on them and create new boot entries. Adding boot menu entry for UEFI Firmware Settings ... done Die folgenden NEUEN Pakete werden installiert: polkitd-pkla 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 9 nicht aktualisiert. Es müssen 24,2 kB an Archiven heruntergeladen werden. Nach dieser Operation werden 121 kB Plattenplatz zusätzlich benutzt. Vormals nicht ausgewähltes Paket polkitd-pkla wird gewählt. (Lese Datenbank ... 763234 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereitung zum Entpacken von .../polkitd-pkla_124-2ubuntu1_amd64.deb ... Entpacken von polkitd-pkla (124-2ubuntu1) ... polkitd-pkla (124-2ubuntu1) wird eingerichtet ... Trigger für man-db (2.12.0-4build2) werden verarbeitet ... Hibernation setup completed. Please reboot your system for all changes to take effect. Neustarten, danach sieht das Menü so aus, der Ruhezustand ist eingefügt: