((/news-custom/public/logo_freebsd.png|logo du système d’exploitation, FreeBSD|C|logo du système d’exploitation, FreeBSD))
En ce moment, je travaille sur l’intégration de la prochaine version stable (__4.10__) de [Xfce|http://www.xfce.org/] sous FreeBSD.
Un des composants, [xfce4-session|http://docs.xfce.org/xfce/xfce4-session/start] gère l’hibernation et le »suspend to RAM » (mise en veille). J’ai donc voulu voir, comment cela été pris en charge par [FreeBSD|http://www.freebsd.org/].
L’essais a été effectué sur :
///olivier@bornem:~ $ uname -rsp
FreeBSD 8.2-RELEASE-p3 i386
olivier@bornem:~ $ ///
!!!!État des lieux
Il faut savoir, que par défaut l’??ACPI|Advanced Configuration and Power Interface?? est déjà activé $$Si l’on démarre avec les paramètres prédéfinis.$$. Cependant on doit rechercher les informations concernant les différentes méthodes de mise en veille.
///olivier@bornem:~ $ sysctl -a | grep acpi.supported
hw.acpi.supported_sleep_state: S3 S4 S5
olivier@bornem:~ $ ///
Sur cet ordinateur, on peut voir que trois états ( »sleep states ») sont « pris en charge » par le __système__.
On peut également voir, si le ??BIOS|Basic Input Output System?? est capable de le gérer.
///olivier@bornem:~ $ sysctl -a | grep acpi.s4bios
hw.acpi.s4bios: 0
olivier@bornem:~ $ ///
Dans mon cas, la valeur est à zéro, donc mon BIOS n’a pas ce support.
On peut tester les différents états (il faut être __root__) avec l’utilitaire @@acpiconf@@.
///root@bornem:~ # acpiconf -s 3 ///
L’état __S4__ (correspondant à l’hibernation) est équivalent à __S5__, j’en déduis donc que je ne pourrais pas utiliser cette fonctionnalité.
L’état __S3__ ( »suspend to RAM ») est pleinement fonctionnel.
!!!!Intégration avec le gestionnaire de bureau
xfce4-session possède une dépendance, [UPower|http://upower.freedesktop.org/] $$Cette bibliothèque n’est pas fonctionnelle sous tous les ??BSD|Berkeley Software Distribution??$$, responsable de la gestion de la consommation (en autre).
Pour pouvoir l’employer, il faut autoriser certaines opérations, grâce notamment à __polkit__.
On va tout d’abord rechercher les actions possibles concernant __UPower__.
///olivier@bornem:~ $ pkaction | grep upower
org.freedesktop.upower.hibernate
org.freedesktop.upower.qos.cancel-request
org.freedesktop.upower.qos.request-latency
org.freedesktop.upower.qos.request-latency-persistent
org.freedesktop.upower.qos.set-minimum-latency
org.freedesktop.upower.suspend
olivier@bornem:~ $ ///
J’ai uniquement besoin du support de »suspend », j’en profite donc pour créer un fichier @@.pkla@@ (l’extension est primordiale) situé dans @@/usr/local/etc/polkit-1/localauthority/50-local.d/@@.
Voici son contenu :
///root@bornem:~ # cat /usr/local/etc/polkit-1/localauthority/50-local.d/org.freedesktop.upower.pkla
[Suspend]
Identity=unix-group:users
Action=org.freedesktop.upower.suspend
ResultAny=yes
ResultInactive=yes
ResultActive=yes
root@bornem:~ # ///
Tous les utilisateurs appartenant au groupe __users__ sont autorisés à mettre en veille (en RAM) le système.