pm-utils: Nenhuma rede em scripts suspensos?

7

Gostaria de colocar um script em /etc/pm/suspend.d/ que precise de acesso à rede (por um tempo muito curto) antes de permitir que o sistema seja suspenso. No entanto, mesmo com scripts chamados "001_something" em /etc/pm/suspend.d/ e /usr/lib/pm-utils/sleep.d/ , não obtenho nenhum acesso à rede. Parece que isso está desativado antes que os scripts sejam executados.

Por que a rede está desativada? Como posso ativá-lo?

Além disso, não consigo usar o pm-suspend.log em /var/log . Parece que o arquivo da parte suspensa é sobrescrito assim que o sistema é retomado?

O seguinte foi observado em daemon.log :

Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleep requested (sleeping: no enabled: yes)·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleeping or disabling...·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): now unmanaged·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): device state change: activated -> unmanaged (reason 'sleeping') [100 10 37]·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): deactivating device (reason 'sleeping') [37]·

Estou usando o Debian Testing com o Gnome 3.

EDIT: O problema não está relacionado ao pm-utils. Até onde eu sei, o NetworkManager desabilita a rede (em nm-manager.c: do_sleep_wake). Eu não sei como resolver isso, ainda. Consulte NetworkManager: rede desativada ao enviar o sistema para dormir

    
por C-Otto 29.11.2012 / 16:08

1 resposta

7

1. Peculiaridades?

Primeiro, confirmo que sua suspensão está funcionando corretamente. Dê uma olhada na página quirks e confirme que sua suspensão está funcionando corretamente e não apenas parecendo que está funcionando corretamente.

2. Seu script 001 é algo executável?

Verifique se o seu script 001_something é executável!

% chmod +x 001_something

3. Seu script 001_something parece correto?

Verifique se seu script está de acordo com o que o pm-utils está esperando.

Exemplo de script

#!/bin/bash
case "$1" in
    hibernate|suspend)
        ACTION BEFORE SUSPEND/HIBERNATE
        ;;
    thaw|resume)
        ACTION AFTER RESUME
        ;;
    *)
        ;;
esac
exit $?

OBSERVAÇÃO: Você está colocando suas tentativas de usar a rede na parte hibernate|suspend correta da instrução case / switch?

4. arquivo no diretório .d funcionando (/etc/pm/suspend.d/ ou /usr/lib/pm-utils/sleep.d/)?

Em seguida, eu confirmaria que o seu script 001_something está, de fato, sendo escolhido pelo suspend / hibernate corretamente, fazendo com que ele simplesmente faça um eco em um arquivo, apenas para que você saiba que está funcionando.

echo "yup I'm working" > /tmp/pmck_'date +%Y-%T'.log

Você deverá ver arquivos como pmck_2013-16:08:11.log in /tmp .

5. / var / log?

Se o diretório .d acima estiver funcionando, eu faria um 001_something e copiei o arquivo /var/log/pm-suspend.log que você acha que está sendo substituído por algum outro arquivo em /tmp , Assim, você pode pelo menos confirmar que o registro está correto. Isso pode te dar uma ideia do que está acontecendo.

cp /var/log/pm-suspend.log /tmp/pmlg_'date +%Y-%T'.log

6. Número do gancho do sono?

Você também pode alterar o nome do seu arquivo de gancho para 00-something em vez de 001_something ? Não tenho certeza, mas a página man indica esses valores.

SLEEP HOOK ORDERING CONVENTION
       00 - 49
           User and most package supplied hooks. If a hook assumes that all of the usual services and userspace infrastructure
           is still running, it should be here.

       50 - 74
           Service handling hooks. Hooks that start or stop a service belong in this range. At or before 50, hooks can assume
           that all services are still enabled.

       75 - 89
           Module and non-core hardware handling. If a hook needs to load/unload a module, or if it needs to place non-video
           hardware that would otherwise break suspend or hibernate into a safe state, it belongs in this range. At or before
           75, hooks can assume all modules are still loaded.

       90 - 99
           Reserved for critical suspend hooks.

7. Conectividade de rede?

Adicione o seguinte ao seu script 001_something :

TMP=/tmp/pmip_'date +%Y-%T'.log

# network status?
ip link show > $TMP

# dns working?
dig google.com +answer >> $TMP

# can we ping google?
ping -c 5 www.google.com >> $TMP

8. Bug com pm-utils, HAL e Wheezy?

Eu encontrei este relatório de bug debian e me pergunto se isso pode ser a causa do seu problema. O bug descreve um problema com o HAL e o pm-utils. Parece que a remoção do HAL corrige o problema de rede.

9. Depuração mais detalhada do pm-utils

Além disso, há este link que oferece conselhos para questões de suspensão / retomada específicas do Debian. Há menção a uma maneira de aumentar o log de pm-utils definindo uma variável, PM_DEBUG=true no arquivo /usr/lib/pm-utils/pm-functions .

trecho

Enabling Debugging for pm-utils

The log of suspend and resume processes are in file /var/log/pm-suspend.log. It contains moderately verbose information by default. More information can be enabled for debugging by inserting line export PM_DEBUG=true into the beginning of file /usr/lib/pm-utils/pm-functions.

Talvez isso possa ser útil para dar mais informações sobre o que está acontecendo com o pm-utils!

10. ACPI desligando a rede antes de pm-utils ?

Se o problema não parece estar com pm-utils , pode ser por causa de acpi . Quando você fecha a tampa do laptop, um evento acpi é acionado e esse evento tem uma ação associada a ele.

Arquivo de EVENTO

% more /etc/acpi/events/lm_lid
event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e

Arquivo de ação

% more /etc/acpi/actions/lm_lid.sh
#! /bin/sh

test -f /usr/sbin/laptop_mode || exit 0

# lid button pressed/released event handler

/usr/sbin/laptop_mode auto

Olhando mais de perto o laptop_mode , você verá que essa ferramenta é responsável por fazer várias coisas, uma das quais é gerenciar o status de seus dispositivos de rede.

O modo laptop mantém um diretório, /etc/laptop-mode/conf.d , semelhante a outras ferramentas unix. Existem arquivos relacionados aos dispositivos de rede ethernet e wireless.

Na configuração principal. arquivo, /etc/laptop-mode/laptop-mode.conf , é a capacidade de ativar mensagens mais detalhadas. Talvez isso lance alguma luz adicional sobre o que está acontecendo?

VERBOSE_OUTPUT=1

Resumo das coisas acima para testar com base no feedback do OP

1: A suspensão depende do uso da bateria e do LED de suspensão do meu notebook. Caso contrário, não entendo como a página da Web mencionada me ajudará a descobrir.

2: É.

3: Parece correto.

4: eu recebo esses arquivos.

5: Eu recebo os arquivos de log correspondentes, mas eles não são úteis para mim.

6: 00 em vez de 001 não mostra nenhuma diferença.

7: As coisas nesta seção apenas testam a conectividade de rede. Como disse na minha pergunta, eu não tenho conectividade de rede assim que o script é executado. O dispositivo wlan0 está inativo. Os arquivos de log: link .

OBSERVAÇÃO: Eu não tinha dig instalado (erro msg. no paste.debian.net log), no entanto, é claro que não há acesso à rede disponível (como foi dito). Eu posso ver que está baixo, inspecionando a saída do iwconfig, ip link show, ping, ... O script perl é o script em questão.

BTW, assim que a primeira linha de /usr/lib/pm-utils/bin/pm-action é executada (de upowerd), a rede já está inativa.

8: hal foi instalado, removê-lo não altera nada.

    
por 08.02.2013 / 16:39