Auteur Sujet: Supprimer la mise en veille de fermeture écran d'un laptop avec Ubuntu server  (Lu 18117 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 170
    • Twitter LaFibre.info
Bon, je sais, ce n'est pas bien, mais j'utilise des PC portable avec un OS serveur : Ubuntu server
Bien sûr l'écran est inutile et ils doivent donc fonctionner écran fermé.

Jusqu'à Ubuntu server 13.10, on pouvait fermer l'écran du PC sans problème, il ne se mettait pas en veille. L'appui sur le "power putton" permettait quand même une extinction propre de la machine, car ACPI est installé par défaut.

Depuis Ubuntu server 14.04, si on ferme l'écran, il se met en veille. Je cherche un moyen de désactiver cette fonctionnalité proprement, sans supprimer complètement ACPI du système. En effet ACPI m'est utile pour l’arrêt propre via le "power putton".


Dans /etc/acpi j'ai deux fichiers uniquement qui ne gèrent que l'appui sur le "power putton" pour éteindre proprement le système, une fonctionnalité que je souhaite garder (qui était déjà présente depuis de nombreuses années sur les OS serveur Ubuntu):

Fichier /etc/acpi/powerbtn.sh : (ne sert que pour gérer le "power button" à priori)

#!/bin/sh
# /etc/acpi/powerbtn.sh
# Initiates a shutdown when the power putton has been
# pressed.

[ -r /usr/share/acpi-support/power-funcs ] && . /usr/share/acpi-support/power-funcs

# If logind is running, it already handles power button presses; desktop
# environments put inhibitors to logind if they want to handle the key
# themselves.
if pidof systemd-logind >/dev/null; then
    exit 0
fi

# getXuser gets the X user belonging to the display in $displaynum.
# If you want the foreground X user, use getXconsole!
getXuser() {
        user=`pinky -fw | awk '{ if ($2 == ":'$displaynum'" || $(NF) == ":'$displaynum'" ) { print $1; exit; } }'`
        if [ x"$user" = x"" ]; then
                startx=`pgrep -n startx`
                if [ x"$startx" != x"" ]; then
                        user=`ps -o user --no-headers $startx`
                fi
        fi
        if [ x"$user" != x"" ]; then
                userhome=`getent passwd $user | cut -d: -f6`
                export XAUTHORITY=$userhome/.Xauthority
        else
                export XAUTHORITY=""
        fi
        export XUSER=$user
}

# Skip if we just in the middle of resuming.
test -f /var/lock/acpisleep && exit 0

# If the current X console user is running a power management daemon that
# handles suspend/resume requests, let them handle policy This is effectively
# the same as 'acpi-support's '/usr/share/acpi-support/policy-funcs' file.

[ -r /usr/share/acpi-support/power-funcs ] && getXconsole
PMS="gnome-settings-daemon kpowersave xfce4-power-manager"
PMS="$PMS guidance-power-manager.py dalston-power-applet"
PMS="$PMS mate-settings-daemon"
PMS="$PMS unity-settings-daemon"

if pidof x $PMS > /dev/null; then
        exit
elif test "$XUSER" != "" && pidof dcopserver > /dev/null && test -x /usr/bin/dcop && /usr/bin/dcop --user $XUSER kded kded loadedModules | grep -q klaptopdaemon; then
        exit
elif test "$XUSER" != "" && test -x /usr/bin/qdbus; then
        kded4pid=$(pgrep -n -u $XUSER kded4)
        if test "$kded4pid" != ""; then
                dbusaddr=$(su - $XUSER -c "grep -z DBUS_SESSION_BUS_ADDRESS /proc/$kded4pid/environ")
                if test "$dbusaddr" != "" && su - $XUSER -c "export $dbusaddr; qdbus org.kde.kded" | grep -q powerdevil; then
                        exit
                fi
        fi
fi

# If all else failed, just initiate a plain shutdown.
/sbin/shutdown -h now "Power button pressed"

Fichier /etc/acpi/events/powerbtn : (ne sert que pour gérer le "power button" à priori)
# /etc/acpi/events/powerbtn
# This is called when the user presses the power button and calls
# /etc/acpi/powerbtn.sh for further processing.

# Optionally you can specify the placeholder %e. It will pass
# through the whole kernel event message to the program you've
# specified.

# We need to react on "button power.*" and "button/power.*" because
# of kernel changes.

event=button[ /]power
action=/etc/acpi/powerbtn.sh

Pour éteindre l'ordinateur directement et proprement via un simple appui sur le bouton power :

Commenter la ligne #action=/etc/acpi/powerbtn.sh
Rajouter la ligne action=/sbin/poweroff
Redémarrer le service : sudo acpid restart




Voici mon fichier /proc/acpi/wakeup :
Device  S-state   Status   Sysfs node
LID0      S3    *enabled
HDEF      S4    *disabled  pci:0000:00:1b.0
PXS2      S4    *disabled  pci:0000:03:00.0
PXS3      S3    *enabled   pci:0000:04:00.0
PXS4      S4    *disabled
PXS5      S4    *disabled
PXS6      S4    *disabled
USB1      S0    *enabled   pci:0000:00:1d.0
USB2      S0    *enabled   pci:0000:00:1d.1
USB3      S0    *enabled   pci:0000:00:1d.2
USB4      S0    *enabled   pci:0000:00:1d.3
USB7      S0    *enabled   pci:0000:00:1d.7
SLT0      S4    *disabled
SLT1      S4    *disabled
SLT2      S4    *disabled
SLT3      S4    *disabled
SLT6      S4    *disabled

La ligne qui nous intéresse est LID0      S3    *enabled pour l'événement lid (« couvercle » en anglais) qui vérifie l'état du capteur de fermeture du couvercle.
Il est inutile de modifier ce fichier qui n'est pas un fichier de configuration mais un fichier virtuel informant de l'état.


Comment faire pour modifier afin que LID0 soit *disabled ?


Fichier /etc/default/acpid : tout est commenté
# Options to pass to acpid
#
# OPTIONS are appended to the acpid command-line
#OPTIONS=""

# Linux kernel modules to load before starting acpid
#
# MODULES is a space separated list of modules to load, or "all" to load all
# acpi drivers, or commented out to load no module
#MODULES="battery ac processor button fan thermal video"
#MODULES="all"


J'ai cherché du coté du paquet pm-utils mais il n'est pas installé :

# pm-suspend
Le programme 'pm-suspend' n'est pas encore installé. Vous pouvez l'installer en tapant : apt install pm-utils
# pm-hibernate
Le programme 'pm-hibernate' n'est pas encore installé. Vous pouvez l'installer en tapant : apt install pm-utils

Il y a quand même un dossier /etc/pm avec 2 fichiers en rapport à pm-utils :

/etc/pm/sleep.d/10_grub-common
/etc/pm/sleep.d/10_unattended-upgrades-hibernate
(sleep.d est le seul dossier de /etc/pm et il y a seulement ces deux fichiers dans sleep.d)

La suppression de 10_unattended-upgrades-hibernate n'empêche pas l'ordinateur de se mettre en veille.

Breizh 29

  • Client Bouygues Fibre +
  • Abonné Orange Fibre
  • *
  • Messages: 4 279
  • Guilers 29820 (29N)
C'est sure qu'un serveur sur portable est assez déroutant  :o

thenico

  • Expert.
  • Abonné OVH
  • *
  • Messages: 1 009
  • FTTH >500 Mb/s (13)
C'est sure qu'un serveur sur portable est assez déroutant  :o
Il y a plus étrange: un laptop qui fait routeur (avec l'inter-vlan) pour une société de 100 personnes.


kgersen

  • Modérateur
  • Abonné Bbox fibre
  • *
  • Messages: 9 091
  • Paris (75)
2 solutions:

si le fichier /etc/systemd/logind.conf existe, edite le  ajoute/modlf la ligne
HandleLidSwitch=ignore

sinon
edit /etc/acpi/event/lidbtn et commentes les 2 lignes 'action' et 'event' (ajoutes un # devant)

vivien

  • Administrateur
  • *
  • Messages: 47 170
    • Twitter LaFibre.info
Supprimer la mise en veille de fermeture écran d'un laptop avec Ubuntu server
« Réponse #4 le: 02 juillet 2014 à 16:43:14 »
Merci kgersen !

Effectivement, il suffit de mettre la ligne #HandleLidSwitch=suspend à HandleLidSwitch=ignore dans le fichier /etc/systemd/logind.conf !


#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# See logind.conf(5) for details

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
Controllers=blkio cpu cpuacct cpuset devices freezer hugetlb memory perf_event net_cls net_prio
ResetControllers=
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
HandleLidSwitch=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#IdleAction=ignore
#IdleActionSec=30min

Ne pas oublier un redémarrage pour la prise en compte du paramètre.

Edit mai 2016 : Fichier pour Ubuntu 16.04 LTS avec la modification HandleLidSwitch=ignore
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See logind.conf(5) for details.

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
HandleLidSwitch=ignore
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=yes
#UserTasksMax=12288

jack

  • Professionnel des télécoms
  • *
  • Messages: 1 676
  • La Madeleine (59)
Supprimer la mise en veille de fermeture écran d'un laptop avec Ubuntu server
« Réponse #5 le: 02 juillet 2014 à 18:30:02 »
Pour shut le PC, tu n'utilises pas alt + syst + o ? j'suis décu  ;D

kfred

  • Abonné K-Net
  • *
  • Messages: 11
  • Saulxures les Nancy 54
Bonjour et merci pour la manip!
Ça m'enlève une grosse épine du pied :-)