O resumo da hibernação não está funcionando no sistema Linux embutido

1

Eu estou tentando construir um sistema Linux embutido baseado em uma CPU Atmel AT91SAM9G25 SoC (ARM9 @ 400Mhz). Eu estou usando o bootloader AT91Bootstrap.

Como o assunto da minha postagem sugere, tenho um problema com o retorno da funcionalidade de hibernação. Suspender para o processo de disco parece funcionar bem, mas ao acordar, o sistema não restaura a sessão anterior.

O problema que estou enfrentando em detalhes é o seguinte:

Eu construí uma imagem do Linux para o meu sistema usando o buildroot e eu ativei / configurei de acordo os seguintes parâmetros do kernel:

Opções de gerenciamento de energia - > Suspender para RAM e espera

Opções de gerenciamento de energia - > Hibernação & Partição de continuação padrão /dev/mmcblk0p3

(A versão do kernel que estou usando é 4.0.4 e /dev/mmcblk0p3 é a partição de troca do sdcard.)

Quando inicializei o sistema pela primeira vez, percebi que a partição de swap não era montada automaticamente. Consegui montar a partição swap manualmente com os comandos mkswap /dev/mmcblk0p3 e swapon -a . Eu também inseri a linha correspondente no arquivo fstab:

/dev/mmcblk0p3  none            swap    sw              0       0

Após a reinicialização, não consegui encontrar nenhuma partição de swap montada. Para resolver esse problema, incluí os comandos mkswap e swapon mencionados no arquivo inittab. Após a reinicialização, a partição swap foi montada com sucesso na inicialização.

Com a partição swap montada, estou solicitando que o sistema entre em hibernação (suspenda em disco). O processo de suspensão parece funcionar como esperado.

O problema começa quando reconectar a energia. Embora o sistema pareça entender que ele despertou de um estado de suspensão, ele não restaura a sessão anterior. É como fazer uma inicialização a frio.

Suspender para a memória está funcionando bem. Eu posso colocar o sistema em suspensão com rtcwake -s20 -m mem e quando ele acordar a sessão anterior é restaurado com sucesso. Portanto, suponho que algo dê errado com a partição swap, mas fiquei sem ideias.

Eu tentei hibernar o sistema usando os seguintes comandos:

rtcwake -s20 -m disk
echo shutdown > /sys/power/disk
echo disk > /sys/power/state
pm-hibernate

mas todos eles falham como descrito acima.

Alguns resultados úteis do dmesg e do console podem ser encontrados aqui

Alguma sugestão ou ideia do que eu posso estar fazendo errado?

    
por Sotiris 22.04.2016 / 22:53

0 respostas

Tags