Ubuntu 15.04 Suspender não é executado 'pm-suspend'

5

Após a atualização para o Ubuntu GNOME 15.04 (a partir de 14.10), notei que meus pm-utils hooks em /etc/pm/sleep.d não estão mais sendo executados no suspend / resume.

Eu tenho um script personalizado que salva o brilho antes de suspendê-lo e restaurá-lo após o reinício. Se eu executar manualmente sudo pm-suspend os ganchos são executados, mas se eu fechar a tampa do laptop (que suspende o Ubuntu), os scripts não são executados. Estou faltando alguma coisa?

O script de brilho em /etc/pm/sleep.d é (trabalhado em 14.04 e 14.10):

#!/bin/bash

case "" in
    suspend|suspend_hybrid|hibernate)
        cat /sys/class/backlight/acpi_video0/brightness > /tmp/.brightness_level
        # modprobe -r nvidiabl
        ;;
    resume|thaw)
        # modprobe nvidiabl
        cat /tmp/.brightness_level > /sys/class/backlight/acpi_video0/brightness
        rm /tmp/.brightness_level
        ;;
esac
    
por Sir_FZ 07.05.2015 / 11:10

1 resposta

7

Atualizar : encontrou uma solução melhor usando systemd sem scripts externos. Crie e ative o seguinte serviço:

[Unit]
Description=Save brightness on suspend
DefaultDependencies=no
RequiresMountsFor=/var/lib/systemd/backlight
Before=sleep.target
StopWhenUnneeded=yes

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/systemd/systemd-backlight save acpi_video0
ExecStop=/lib/systemd/systemd-backlight load acpi_video0
TimeoutSec=90s

[Install]
WantedBy=sleep.target

Ubuntu 16.04 Nota : o nome do dispositivo de retroiluminação de destino deve ter o prefixo "backlight:" (por exemplo, backlight:acpi_video0 ).

Ative executando: systemctl enable suspend-save-backlight.service (ou o que você quiser). Observe que acpi_video0 é o nome do link simbólico da luz de fundo em /sys/class/backlight , usado para controlar o brilho da tela, que pode variar em sistemas diferentes.

O exemplo acima usa o executável systemd-backlight do systemd para salvar e carregar o brilho antes de suspender e depois do reinício, respectivamente (inspirado em /lib/systemd/system/[email protected] , que salva / carrega o brilho na reinicialização / inicialização).

Solução antiga (vincula um serviço systemd ao meu gancho de suspensão pm-utils)

Encontrou o problema. De acordo com este artigo do ArchWiki :

  

O systemd não usa o pm-utils para colocar a máquina em repouso ao usar systemctl suspend, systemctl hibernate ou systemctl hybrid-sleep; Os ganchos do pm-utils, incluindo quaisquer ganchos personalizados , não serão executados. No entanto, o systemd fornece dois mecanismos semelhantes para executar scripts personalizados nesses eventos.

Portanto, a maneira correta de fazer isso com systemd (que é usado por padrão em 15.04) é criar os seguintes arquivos de serviço que executam meu script de controle de brilho em /etc/pm/sleep.d/ da seguinte forma:

  1. /etc/systemd/system/root-suspend.service :

    [Unit]
    Description=Local system suspend actions
    Before=sleep.target
    
    [Service]
    Type=simple
    ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness suspend
    
    [Install]
    WantedBy=sleep.target
    
  2. /etc/systemd/system/root-resume.service :

    [Unit]
    Description=Local system resume actions
    After=suspend.target
    
    [Service]
    Type=simple
    ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness resume
    
    [Install]
    WantedBy=suspend.target
    

Em seguida, execute o seguinte para ativar esses serviços:

systemctl enable root-suspend.service
systemctl enable root-resume.service

Consulte o artigo vinculado para mais detalhes.

    
por Sir_FZ 07.05.2015 / 13:32