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.