Linux Mint Linux Mint ist eine Linux-Distribution für PC in zwei parallel verfügbaren Ausgaben. Die Hauptausgabe, einfach Linux Mint genannt, basiert auf der Linux-Distribution Ubuntu und ist in drei Editionen verfügbar, nämlich mit der jeweiligen Desktop-Umgebung als Cinnamon-, MATE- und Xfce-Edition. Hardware Installation Asus Vivobook S Wifi installation Beschreibung bei einer frischen installation, ist Wifi nicht vorhanden. Die Wifi Karte wird nicht als USB/PCI Karte erkannt. Daher muss ein weiteres Kernelmodul installiert werden. Damit wir das können, vorrübergehend mit einer USB Netzwerkkarte arbeiten oder ein Smartphone per USB mit Thetering anschließen. Installation sudo apt update && sudo apt install rtl8821ce-dkms   Mittlere Maustaste deaktivieren um ungewollten schließen von Tabs/Fenstern zu verhindern Beschreibung: Bei einigen Notebooks ist es echt ätzend das die mittlere Maustaste nicht sichtbar szwichen der linken und rechten taste liegt. Will man eigentlich nur einen Linksklick machen, und kommt zu weit rechts, wird der Tab geschlossen anstatt das er wieder aktiviert / angezeigt wird. Gott sei Dank kann man mit xinput oder  xmodmap die Taste auch deaktivieren. Ist ein bisschen mühselig aber lohnt sich. Edit: die xmodmap variante funktioniert besser und ist auchn och einfacher zu implementieren. ich schlage vor erstmal Lösung xmodmap zu nehmen XINPUT-Methode Installation xinput sudo apt-get install xinput IDs herausfinden Nun die ID unseres Gerätes (Touchpad) herausbekommen xinput list Ausgabe: xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Wacom HID 52CD Pen stylus id=10 [slave pointer (2)] ⎜ ↳ Wacom HID 52CD Finger touch id=11 [slave pointer (2)] ⎜ ↳ MSFT0001:00 06CB:CE78 Mouse id=12 [slave pointer (2)] ⎜ ↳ MSFT0001:00 06CB:CE78 Touchpad id=13 [slave pointer (2)] ⎜ ↳ Wacom HID 52CD Pen eraser id=15 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Video Bus id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Integrated Camera: Integrated C id=8 [slave keyboard (3)] ↳ Ideapad extra buttons id=9 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)] id=12und 13 kommt unsererm Tochpad am nähesten. Wie wir sehen ist Tocuhpad und Mouse mit der gleichen ID vorhanden. Warum auch immer. Wir führen diese Prozedur für beide IDs durch. Wir holen  uns die Tasten von Gerät mit der ID 12 bei euch kann es ne ander ID sein. Wie wir sehen ist warum auch immer . Die Buttons für 12 und 13 sind identisch xinput get-button-map [id] Ausgabe für 12 xinput get-button-map 12 1 2 3 4 5 6 7 Ausgabe für 13 xinput get-button-map 13 1 2 3 4 5 6 7 Taste deaktivieren In dierser Liste von Zahlen entpricht in der Regel die zweite Zahl die mittlere Maustaste. Wir deaktivieren diese in dem wir sie auf 0 setzen. Wichtig ist das wir alle folgenden Zahlen auch mit eintragen. xinput set-button-map [ID] 1 0 3 [restliche Zahlen] Beispiel: xinput set-button-map [ID] 1 0 3 4 5 6 7 Nun für beide ids xinput set-button-map 12 1 0 3 4 5 6 7 xinput set-button-map 13 1 0 0 4 5 6 7 Beim Systemstart ausführen lassen Nun öffnen wir Startprogramme klicken auf das Plus und wählen benutzerdefinierter Befehl aus Nun Namen vergeben mit ID 12 Den Befehl reinpacken : xinput set-button-map 12 1 0 3 4 5 6 7 Das ganze wiederholen wir dann auch für die ID 13 Fertig. Nun kein generve mehr mit schließen von mittlerer Maustate auf dem Tocuhpad. Bei allen anderen Mäusen die ventuell noch angeschlossen sind funktioniert die mittlere Maustatse immer noch. Wenn man die auch deaktivieren möchte, dann von der Maus die id raussuchen und das gleiche Spiel nochmals ;-) Mit xmodmap Methode   Mauszeiger-Mapping: Bei der Mauszeiger-Konfiguration repräsentiert jede Zahl eine bestimmte Maustaste. Normalerweise ist 1 die linke Maustaste, 2 die mittlere Maustaste und 3 die rechte Maustaste. Bedeutung der Zahlen in xmodmap : Der Befehl xmodmap -e "pointer = 1 0 3" gibt an, wie die Maustasten neu zugeordnet werden sollen. 1 behält die Funktion der linken Maustaste bei. 0 ist ein spezieller Platzhalter, der "keine Zuordnung" oder "deaktiviert" bedeutet. Wenn Sie also 0 als Wert für eine Maustaste einstellen, wird diese Taste deaktiviert. 3 behält die Funktion der rechten Maustaste bei. xmodmap -e "pointer = 1 0 3" Nun das ganze als Autostart einbetten. Nun öffnen wir Startprogramme klicken auf das Plus und wählen benutzerdefinierter Befehl aus Nun Namen vergeben : mittlere Maustaste deaktivieren Den Befehl reinpacken : xmodmap -e "pointer = 1 0 3" Fertig. Nun kein generve mehr mit schließen von mittlerer Maustate auf dem Tocuhpad. Swap Datei vergrößern Um die Größe einer Swap-Datei unter Linux zu vergrößern, folgen Sie diesen Schritten: Swap-Datei deaktivieren: Deaktivieren Sie zunächst die aktuelle Swap-Datei. In diesem Beispiel nehmen wir an, dass die Swap-Datei /swapfile heißt. sh sudo swapoff /swapfile Swap-Datei vergrößern: Verwenden Sie das dd -Kommando, um die Swap-Datei zu vergrößern. Angenommen, Sie möchten die Swap-Datei auf 4GB vergrößern (und die aktuelle Swap-Datei hat eine Größe von 2GB). sudo dd if =/dev/zero of=/swapfile bs=1M count=4096 Ersetzen Sie 4096 durch die gewünschte Größe in Megabytes. Swap-Datei formatieren: Setzen Sie die richtigen Berechtigungen und formatieren Sie die Datei als Swap. sh sudo chmod 600 /swapfile sudo mkswap /swapfile Swap-Datei aktivieren: Aktivieren Sie die Swap-Datei erneut. sh sudo swapon /swapfile Überprüfen: Überprüfen Sie, ob die Swap-Datei korrekt aktiviert wurde und die neue Größe hat. sh sudo swapon --show Eintrag in /etc/fstab überprüfen: Stellen Sie sicher, dass die Swap-Datei in der /etc/fstab eingetragen ist, damit sie beim Booten automatisch aktiviert wird. Der Eintrag sollte in etwa so aussehen: sh /swapfile none swap sw 0 0 Durch diese Schritte sollten Sie die Größe Ihrer Swap-Datei erfolgreich vergrößert haben. Partiton aufs maximum vergrößern wenn die Festplatte vergößert wurde Beschreibung: Es kann mal vor kommen, das eine Festplatte z.b in einer VM vergrößert wird. Leider wird das Dateisystem nicht mit angepasst. Hier ein Script das die macht. Dies Script hat allerdings Pakete Voraussetzungen die noch installiert werden müssen. Voraussetzungen: apt-get install bc e2fsprogs parted util-linux cloud-utils Das Script: nano /root/extend_to_max.sh Inhalt #!/bin/bash # # extend_to_max.sh – Erweitert eine Partition (und das Dateisystem) # auf den maximal verfügbaren freien Speicher. # # Benutzung: # ./extend_to_max.sh -d # # Beispiel: # ./extend_to_max.sh -d /dev/sda2 # # ACHTUNG: Vor Änderungen unbedingt ein vollständiges Backup anfertigen! # print_help() { echo "Usage: $0 -d " echo " -d Zielpartition (z.B. /dev/sda2)" } # Parameter prüfen if [ "$#" -eq 0 ]; then print_help exit 1 fi while getopts "d:h" opt; do case $opt in d) DEVICE="$OPTARG" ;; h) print_help exit 0 ;; ?) print_help exit 1 ;; esac done if [ -z "$DEVICE" ]; then echo "Fehler: Kein Gerät angegeben!" print_help exit 1 fi # Root-Prüfung if [ "$(id -u)" -ne 0 ]; then echo "Dieses Script muss als root ausgeführt werden." exit 1 fi echo "Erweitere Partition $DEVICE auf maximal verfügbaren Speicher..." # Bestimme den übergeordneten Datenträger und die Partitionsnummer. PARENT=$(lsblk -no pkname "$DEVICE" 2>/dev/null) if [ -n "$PARENT" ]; then DISK="/dev/$PARENT" else DISK=$(echo "$DEVICE" | sed 's/[0-9]*$//') fi PART_NUM=$(echo "$DEVICE" | sed 's/.*\([0-9]\+\)$/\1/') echo "Verwende Datenträger: $DISK, Partition: $PART_NUM" # Starte die Erweiterung mit growpart. # (growpart erweitert standardmäßig bis zum maximal verfügbaren freien Platz) echo "Starte growpart..." growpart "$DISK" "$PART_NUM" if [ $? -ne 0 ]; then echo "Fehler: growpart konnte die Partition nicht erweitern." exit 1 fi # Erweitere anschließend das Dateisystem (hier wird ext2/3/4 vorausgesetzt). echo "Passe das Dateisystem an ($DEVICE) an..." resize2fs "$DEVICE" if [ $? -ne 0 ]; then echo "Fehler: resize2fs konnte das Dateisystem nicht erweitern." exit 1 fi echo "Partition und Dateisystem wurden erfolgreich auf den maximal verfügbaren Speicher erweitert." exit 0 Script Ausführbar machen chmod +x /root/extend_to_max.sh Erklärung: Parameterverarbeitung : -d : Gibt die Partition an, die vergrößert werden soll (z.B. /dev/sda1 ). Überprüfung der Partition : Das Skript überprüft, ob die angegebene Partition existiert. Vergrößern der Partition : Das Skript verwendet growpart , um die Partition zu vergrößern. Vergrößern des Dateisystems : Das Skript verwendet resize2fs , um das Dateisystem auf der Partition zu vergrößern. Hilfe anzeigen: ./extend_to_max.sh Vergrößerung : ./extend_to_max.sh -d /dev/sda1 Upgrade Fehler Upgrade Fehler mit Nodejs Beschreibung: Beim ganz normalen apt full-upgrade bleibt apt beim folgendem paket hängen: /nodejs_14.21.3-deb-1nodesource1_amd64.deb  Ausgabe: Entpacken von nodejs (14.21.3-deb-1nodesource1) über (12.22.9~dfsg-1ubuntu3) ... dpkg: Fehler beim Bearbeiten des Archivs /var/cache/apt/archives/nodejs_14.21.3- deb-1nodesource1_amd64.deb (--unpack): Versuch, »/usr/include/node/common.gypi« zu überschreiben, welches auch in Pake t libnode-dev 12.22.9~dfsg-1ubuntu3 ist dpkg-deb: Fehler: »einfügen«-Unterprozess wurde durch Signal (Datenübergabe unte rbrochen (broken pipe)) getötet Fehler traten auf beim Bearbeiten von: /var/cache/apt/archives/nodejs_14.21.3-deb-1nodesource1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1) Abhilfe: Dann liegt die Wahrscheinlichkeit nahe, das es eine eigene source.list für nodejs gibt. /etc/apt/sources.list.d/nodesource.list Diese Datei löschen und apt update, dann nochmals apt full-upgrade sudo rm /etc/apt/sources.list.d/nodesource.list sudo apt update sudo apt full-upgrade reboot Nodejs installieren Da wir ja keine source.list für nodejs mehr ahben, laden wir in Zukunft immer das aktuelle paket runter. Somit vermeiden wir, dieses Problem nochmals zu bekommen. Unter https://deb.nodesource.com den aktuellen Befehl kopieren, zur Erstelleung des Artikels war es nodejs 20 https://deb.nodesource.com curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - &&\ sudo apt-get install -y nodejs Ausgabe: Holen:1 https://deb.nodesource.com/node_20.x jammy/main amd64 nodejs amd64 20.2.0-deb-1nodesource1 [30,3 MB] Es wurden 30,3 MB in 5 s geholt (5.801 kB/s). (Lese Datenbank ... 705326 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereitung zum Entpacken von .../nodejs_20.2.0-deb-1nodesource1_amd64.deb ... Entpacken von nodejs (20.2.0-deb-1nodesource1) über (12.22.9~dfsg-1ubuntu3) ... nodejs (20.2.0-deb-1nodesource1) wird eingerichtet ... Trigger für man-db (2.10.2-1) werden verarbeitet ... Fertig grub-efi-amd64-signed grub-efi-arm64-signed unmet dependencies: Beschreibung: The following packages have unmet dependencies: shim-signed : Depends: grub-efi-amd64-signed (>= 1.191~) but 1.187.6+2.06-2ubuntu14.4 is to be installed or grub-efi-arm64-signed (>= 1.191~) but it is not installable or base-files (< 12.3) Lösung: Zweites Terminal aufmachen. sudo apt --only-upgrade install grub-efi-amd64-signed Danach das mintupgrade  Setup abbrechen mit strg+c im ersten Terminal und dann mintupgrade neu starten, dazu wieder mintupgrade eingeben bzw Pfeiltaste nach oben sudo mintupgrade Alles nochmals durchlaufen lassen, dann hat man so ein Ergebnis ;-)     Kontextmenü pendant zu Senden an Desktop hinzufügen Beschreibung: Es gibt Situationen, da möchte man gern eine Verknüpfung von einer Datei auf dem Schreibtisch haben. Lösung: Abhängigkeiten installieren. Gedit ein Texteditor mit Zeilennummern vorran. apt install gedit Nun die Datei für die Action erstellen. Actions das sind die Kotextmenüeinträge, diese werden mittels Action Dateien im Verzeichnis ~/.local/share/nemo/actions/ erstellt. Das ist das Verzeichnis für User Actions. Damit sie als Action Dateien erkannt werden, haben sie die Endung   .nemo_action Hinweis: Wenn man globale Actions möchte, was wir hier nicht wollen, denn jeder hat ja ein anderes User Verzeichnis dann känmen die Actions in dieses Verzeichnis : /usr/share/nemo/actions/ und die Skripte in /usr/share/nemo/scripts/ gedit ~/.local/share/nemo/actions/create-desktop-link.nemo_action Nun den Inhalt einfügen. Im Exec bereich darauf achten das das Home Verzeichnis richtig ist, denn ~ funktioniert hier nicht [Nemo Action] Name=Erstelle Verknüpfung auf Desktop Comment=Erstellt eine Verknüpfung auf dem Desktop zur gewählten Datei Exec=/home/duffy/.local/share/nemo/scripts/create_desktop_link.sh %F Icon-Name=emblem-symbolic-link Selection=s Extensions=any; Nun das Script was von unserem Kontextmenü aufgerufen wird erstellen gedit ~/.local/share/nemo/scripts/create_desktop_link.sh Das Zielverzeichnis im Script anpassen. Bei mir ist es Schreibtisch weil ich Linux Mint in Deutsch installiert habe, könnte aber auch Desktop heißen. Oder Ihr wollt ein ganz anderes Verzeichnis. Dieses dann anpassen. Inhalt #!/bin/bash for file in "$@" do ln -s "$file" ~/Schreibtisch/ done Das Script ausführbar machen chmod +x ~/.local/share/nemo/scripts/create_desktop_link.sh Danach nemo im terminal neustartenwird zwar der Eintrag angezeigt, aber nicht ausgeführt nemo -q Nun sieht das ganze so aus: Nun die erstellte Verknüpfung senden per Email Eintrag Beschreibung: In den neueren Versionen von Linux MInt, fehlt der Eintrag senden per Email. Wir können uns diesen Eintrag aber einfach selbst wieder bauen. Warum der allerdings weg ist, weiß ich nicht. Installation: eine neue Datei mit dem Namen   send-email.nemo_action im Benutzerverzeichnis unter /home/DEIN_BENUTZERNAME/.local/share/nemo/actions/ Sollte das Verzeichnis actions nicht existieren erstellen wir diesen. proforma einfach das Verzeichnis erstellen lassen,wenn es das schon gibt, gibts halt ein Fehler ;-) mkdir /home/DEIN_BENUTZERNAME/.local/share/nemo/actions/ dann nano /home/DEIN_BENUTZERNAME/.local/share/nemo/actions/send-email.nemo_action Inhalt [Nemo Action] Name=Senden per E-Mail Comment=Datei mit Evolution senden Exec=Exec=/home/DEIN_BENUTZERNAME/.local/bin/send_email.sh %F Icon-Name=mail-send Selection=Any Extensions=nodirs; Script ausführbar machen chmod +x /home/DEIN_BENUTZERNAME/.local/share/nemo/actions/send-email.nemo_action Was macht der Eintrag: Diese Konfiguration erstellt einen Eintrag „Senden per E-Mail“, der unser Script send Mail (wird gleich erstellt) öffnet und die ausgewählte Datei als Anhang hinzufügt. Selection=Any erlaubt die Auswahl von einer oder mehreren Dateien, aber keine Verzeichnisse ( nodirs ). Das Sendmail Script nano /home/DEIN_BENUTZERNAME/.local/bin/send_email.sh Inhalt #!/bin/bash # Starten der mailto-URI mit den angehängten Dateien uri="mailto:?body=Siehe Anhang&subject=Dateianhang" # Hinzufügen jeder Datei als Anhang for file in "$@" do uri="${uri}&attach=$(realpath "$file")" done # Starte Evolution mit der zusammengesetzten URI evolution "$uri" Wenn man es Ohne Subject unjhd Emailtext haben möchte: #!/bin/bash # Starten der mailto-URI mit den angehängten Dateien uri="mailto:?subject=" # Hinzufügen jeder Datei als Anhang for file in "$@" do uri="${uri}&attach=$(realpath "$file")" done # Starte Evolution mit der zusammengesetzten URI evolution "$uri" Dann ausführbar machen chmod +x /home/DEIN_BENUTZERNAME/.local/bin/send_email.sh Fertig Software installation snapd aktivieren, ist standardmäßig deaktiviert. Installation wird von den Entwicklern unterbunden. Beschreibung: Die entwickler vpn Linux mint haben sich dazu entschlossen, snapd nicht zu unterstützen. Sie verbieten sogar die Installations Wenn mit apt install snapd installiert wird bekommt man diesen Fehler zurück: sudo apt install snapd Paketlisten werden gelesen… Fertig Abhängigkeitsbaum wird aufgebaut… Fertig Statusinformationen werden eingelesen… Fertig Paket snapd ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst wurde oder nur aus einer anderen Quelle verfügbar ist. E: Für Paket »snapd« existiert kein Installationskandidat. Abhilfe: Dies Datei löschen, die die Repo verbietet sudo rm /etc/apt/preferences.d/nosnap.pref Nun kann snapd und wer will optional den UI Store gleich mit installieren. sudo apt update sudo apt install snapd #Optional den Store sudo snap install snap-store Damit die Programme im Startmenü von Linux Mint auftauchen, war bei mir teilweise ein Neustart des Rechners notwendig. Erst dann hat sich das Menü aktualisiert. Fertig. Bedienung: sudo snap install .nsap Sollte die Datei nicht aus dem store kommen, bekommt Ihr diese Fehlermeldung: Fehler: cannot find signatures with metadata for snap ".snap" Dann liber in den Store schauen ob es das Paket vielleicht gibt. snap find Wenn Ihr dem Projekt vertraut wo Ihr das heruntergeladen habt, dann mit den flag --dangerous sudo snap install --dangerous snap Netzwerk DNS Cache leeren Beschreibung: Manchmal bleiben noch zu viele alte DNS Einträge gespeichert, die sich schon lange geändert haben. sudo systemd-resolve --flush-caches Mit dem oben angeben Befehl läasst sich unter linux mit Systemd der Cache löschen   RDP-Server für Cinnomon Session installieren Beschreibung: Einfacher RDP Zugriff, (als eigene Session, Das heißt der Reale Login bleibt bestehen und ein Virtual Desktop wird per RDP anleget) Installation apt install xorgxrdp xrdp Nun den Cinnamon Desktop als Standard Window Manager eintragen für den Benutzer eintragen. Muss für jeden Benutzer der die RDP Sitzung erhalten soll durchgeführt werden. Also mit dem Benutzer anmelden und dann nano ~/.xsession Inhalt env -u SESSION_MANAGER -u DBUS_SESSION_BUS_ADDRESS cinnamon-session Fertig. Nun kann per RDP-Verbunden werden. Verbundener Desktop Fehler Passwort Popup bei Rechte anfordnern funktioniert nicht Beschreibung: Programme wie gdebi usw. Fragen beim System nach sudo rechten mit einem Popup. Leider kommt dieser Popup nicht und Programme hängen sich auf. Es sieht so aus als wenn das Polickit defekt ist oder aber wenn xRDP installiert wurde muss noch eine Datei entfernt werden. Siehe weiter unten Startet man ein Programm was sudo rechte anfordert im Terminal bekommt man diesen Fehler, in userem Beispiel wollen wir den Wireguird-Client starten, eine Gui für Wireguardverbinden: Error checking for authorization org.freedesktop.policykit.pkexec.wireguird: GDBus.Error:org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying Abhilfe: Neuinstalltion Polickit  sudo apt-get install --reinstall policykit-1 sudo apt-get install --reinstall dbus RDP-Datei in .bak verschieben sudo rm /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf   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: