Jump to content
From ArchWiki

Status de tradução: Esse artigo é uma tradução de uswsusp. Data da última tradução: 2020-02-23. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

µswsusp (userspace software suspend) é um conjunto de ferramentas de espaço de usuário usadas para hibernação (suspender para disco) e suspender (suspender para RAM ou standby) em sistemas Linux. Isso consiste em:

s2ram - um wrapper em torno do mecanismo do kernel de suspensão para RAM, permitindo que o usuário execute algumas manipulações de adaptador gráfico do usuário antes de suspender e depois de retomar isso pode ajudar a trazer os gráficos (e todo o sistema) de volta à vida após o currículo. Incorpora a funcionalidade de vbetool e radeontool, bem como alguns truques próprios. Inclui uma lista de configurações de hardware de trabalho, juntamente com os conjuntos de operações apropriados a serem executados para retomá-los com êxito. Isso é feito por uma lista de permissões de hardware mantida pelo HAL - s2ram traduz as opções do banco de dados HAL em parâmetros s2ram.

  Nota: Como o HAL está obsoleto e os drivers do KMS podem salvar o estado da placa gráfica diretamente sem as peculiaridades do espaço do usuário, o desenvolvimento do s2ram está descontinuado e nenhuma outra entrada na lista de permissões é aceita. Se um driver KMS estiver em uso, o s2ram suspenderá diretamente a máquina.

s2disk - a implementação de referência do software userspace suspender (µswsusp); coordena as etapas necessárias para suspender o sistema (como travar os processos, preparar o espaço de troca, etc.) e manipula a gravação e leitura de imagens. s2disk já possui suporte a compressão e criptografia da imagem e outros recursos (por exemplo, uma boa barra de progresso, salvar a imagem em um disco remoto, jogar tetris enquanto retoma, etc.) podem ser facilmente adicionados.

s2both - combina as funcionalidades de s2ram e s2disk e é muito útil quando a bateria está quase esgotada. s2both escreve o instantâneo do sistema para o swap (assim como o s2disk), mas depois coloca a máquina em STR (assim como s2ram). Se a bateria tiver energia suficiente, você pode retomar rapidamente a partir do STR, caso contrário, você ainda pode retomar a partir do disco sem perder o seu trabalho.

## Instalação

Instale uswsusp-gitAUR.

## Configuração

Você deve editar `/etc/suspend.conf` antes de tentar suspender para o disco.

- Se estiver usando uma partição swap:

    resume device = /dev/disk/by-label/swap

sendo que `by-label/swap` deve ser substituído com o dispositivo de bloco correto contendo a partição swap.

- Se estiver usando um arquivo swap:

    resume device = /dev/sdXN  # a partição que contém o arquivo swap
    resume offset = 123456

sendo que `X` e `N` são a letra do dispositivo e o número da partição, respectivamente, e `123456` é a posição a partir do início do dispositivo de retomada no qual o cabeçalho do arquivo swap está localizado. O deslocamento da retomada pode ser obtido executando:

    # swap-offset seu_arquivo_swap

- O parâmetro `image size` (opcional) pode ser usado para limitar o tamanho da imagem de instantâneo do sistema criada por s2disk. Se não for possível criar uma imagem do tamanho desejado, o s2disk vai suspender de qualquer maneira, usando uma imagem maior. Se o tamanho da imagem estiver definido como 0, a imagem será o menor possível.

- O parâmetro `shutdown method` (opcional) especifica a operação que será executada quando a máquina estiver pronta para ser desligada. Se definido como `reboot`, a máquina será reinicializada imediatamente. Se definido para `platform`, a máquina será desligada usando operações especiais de gerenciamento de energia disponíveis no kernel, que podem ser necessárias para que o hardware seja reinicializado corretamente após o reinício, e pode fazer com que o sistema retome mais rapidamente. Se definido como `shutdown`, a máquina simplesmente será desligada, o que pode causar problemas para alguns hardwares.

- Se o parâmetro `compute checksum` estiver definido como `y`, as ferramentas s2disk e resume usarão o algoritmo MD5 para verificar a integridade da imagem.

- Se o parâmetro `compress` estiver definido como `y`, as ferramentas s2disk e resume usarão o algoritmo de compactação LZF para compactar/descompactar a imagem.

- Se `splash` estiver definido como `y`, s2disk e/ou resume usarão um sistema inicial. Atualmente, há suporte a splashy e fbsplash, os quais não estão disponíveis no Arch Linux.
  Nota: Isso exige opções adicionais ao `configure` para µswsusp (`--enable-splashy` e `--enable-fbsplash`, respectivamente).

- A opção `resume pause` introduzirá um atraso depois de retomar com sucesso da hibernação, para permitir que o usuário leia as estatísticas (velocidade de leitura e gravação, tamanho da imagem, etc.)

- Se `threads` estiver ativado, o s2disk usará vários encadeamentos para compactar, criptografar e gravar a imagem. Isso deve acelerar as coisas. Para detalhes, leia os comentários em suspend.c

### Suporte a criptografia

This article or section is out of date.

Reason: suspend-keygen não está mais disponível. Veja [1] (Discuss in Talk:Uswsusp (Português))

- gere uma chave com o utilitário suspend-keygen incluído no pacote;
- escreva o nome da chave em `/etc/suspend.conf`;

    encrypt = y
    RSA key file = caminho_para_arquivo_de_chave

### Recriar initramfs

Nota: Sempre que você modificar `/etc/suspend.conf`, você precisará reconstruir seu initramfs. Se você não fizer isso, e o Linux não conseguir encontrar sua imagem na inicialização, você não verá uma mensagem de erro indicando isso. Seu processo de inicialização irá travar depois de iniciar o hook `uresume`, normalmente após a mensagem com a versão libgcrypt.

Edite seu arquivo `/etc/mkinitcpio.conf` e adicione "uresume" à entrada HOOKS.

    HOOKS="base udev autodetect block uresume filesystems"

e Gere novamente o initramfs.

### Exemplo de configuração

    /etc/suspend.conf

    snapshot device = /dev/snapshot

    resume device = /dev/disk/by-label/swap

    # tamanho da imagem é em bytes
    image size = 1468006400

    #suspend loglevel = 2

    compute checksum = y

    compress = y

    #encrypt = y

    #early writeout = y

    #splash = y

    # até 60 (segundos)
    #resume pause = 30

    threads = y

## Uso

### Autônomo

Para suspender para o disco, execute:

    # s2disk

Para suspender para a RAM, execute primeiro:

    # s2ram --test

para ver se sua máquina está no banco de dados das máquinas que sabe-se que funciona. Se retornar algo como `Machine matched entry xyz`, então prossiga e execute:

    # s2ram

Caso contrário, o parâmetro `--force` será necessário, possivelmente combinado com outros parâmetros (consulte `s2ram --help`). Pode falhar.

Agora você poderia tentar suspender chamando diretamente s2disk na linha de comando:

    # s2disk

Provavelmente, é necessário recorrer a uma ferramenta de espaço de usuário que chama internamente s2disk.

### Com systemd

Para colocar seu sistema em hibernação, conhecido como Suspensão para o Disco, com `systemctl hibernate`, edite o `systemd-hibernate.service`, adicionando:

    /etc/systemd/system/systemd-hibernate.service.d/override.conf

    [Service]
    ExecStart=
    ExecStartPre=-/usr/bin/run-parts -v -a pre /usr/lib/systemd/system-sleep
    ExecStart=/usr/bin/s2disk
    ExecStartPost=-/usr/bin/run-parts -v --reverse -a post /usr/lib/systemd/system-sleep

Depois disso, execute `systemctl hibernate` para colocar seu sistema em hibernação. Faça alterações semelhantes em `systemd-hybrid-sleep.service` (substitua s2disk por s2both) para ativar o modo de suspensão híbrido baseado no µswsusp.

## Solução de problemas

### Minha máquina não está na lista branca

Se s2ram não corresponder a sua máquina a uma entrada em sua lista de desbloqueio, ela exibirá algumas strings de identificação de propósito geral para sua máquina (as mesmas fornecidas `s2ram -i`). Neste caso, você pode tentar forçar s2ram a suspender sua máquina usando `s2ram -f`.

### `s2ram -f` não funciona

Se `s2ram -f` não funcionar, tente as diferentes alternativas oferecidas por s2ram. Execute `s2ram -h` para obter uma lista das opções possíveis:

    # s2ram -h

    Usage: s2ram [-nhi] [-fspmrav]

    Options:
        -h, --help:       this text.
        -n, --test:       test if the machine is in the database.
                          returns 0 if known and supported
        -i, --identify:   prints a string that identifies the machine.
        -f, --force:      force suspending, even on unknown machines.

    The following options are only available with -f/--force:
        -s, --vbe_save:   save VBE state before suspending and restore after resume.
        -p, --vbe_post:   VBE POST the graphics card after resume
        -m, --vbe_mode:   get VBE mode before suspend and set it after resume
        -r, --radeontool: turn off the backlight on radeons before suspending.
        -a, --acpi_sleep: set the acpi_sleep parameter before suspend
                          1=s3_bios, 2=s3_mode, 3=both
        -v, --pci_save:   save the PCI config space for the VGA card.

Experimente as seguintes variações:

      s2ram -f -a 1
      s2ram -f -a 2
      s2ram -f -a 3
      s2ram -f -p -m
      s2ram -f -p -s
      s2ram -f -m
      s2ram -f -s
      s2ram -f -p
      s2ram -f -a 1 -m
      s2ram -f -a 1 -s

Se nenhuma dessas combinações funcionar, inicie novamente, mas adicione a opção `-v`.

Note que misturar a opção `-a` e as opções do vbetool (`-p`, `-m`, `-s`) normalmente é apenas uma medida de último recurso, geralmente não faz muito sentido.

Se você encontrar várias combinações que funcionam (por exemplo, `s2ram -f -a 3` e `s2ram -f -p -m` funcionam na sua máquina), o método do kernel (`-a`) deve ser preferido sobre os métodos do espaço do usuário (`-p`, `-m`, `-s`).

Verifique todas as combinações em ambos os casos ao relatar o sucesso para os desenvolvedores do s2ram:

- ao executar o s2ram a partir do console
- ao executar o s2ram a partir do X

### s2ram não funciona com qualquer combinação de opções

Existe um truque que não corresponde a uma opção de linha de comando porque requer operações adicionais de você. Ele é marcado com NOFB na lista branca e usado para os laptops que são suspensos e retomados corretamente apenas se nenhum framebuffer for usado. Se você verificar que nenhuma opção de linha de comando do s2ram funciona, você pode tentar desabilitar o framebuffer. Para fazer isso, você precisa editar a configuração do gerenciador de inicialização, remover quaisquer valores possíveis `vga=<foo>` da linha do kernel e reinicializar. Isso, pelo menos, se você usar o framebuffer VESAFB (como no kernel padrão do Arch). Se você usar um driver de framebuffer diferente, consulte a documentação do driver para ver como desabilitá-lo.

## Veja também

- Site oficial do Uswsusp
- Arquivo HOWTO incluído no código-fonte do kernel Linux
- `/usr/share/doc/suspend/README` Documentação do Uswsusp
- `/usr/share/doc/suspend/README.s2ram-whitelist` README do s2ram-whitelist

Category:

- Power management (Português)

Hidden category:

- Pages or sections flagged with Template:Out of date