Pular para o conteúdo

Fazendo seu Linux hibernar

Neste meu primeiro artigo quero falar de um dos recursos que eu acho mais interessantes do Windows: o hibernar. O boot é extremamente rápido, uma vez que o hibernar apenas cria um "snapshot" do sistema, o grava em arquivo e ao reiniciar apenas carrega esse para a memória. O legal é que também podemos fazer isso no Linux com a ajuda de um patch chamado Software Suspend.
Davidson Esteves Nunes davidsonbhz
Hits: 60.332 Categoria: Linux Subcategoria: Kernel
  • Indicar
  • Impressora
  • Denunciar

Parte 3: Configuração

Depois de tudo instalado, falta editar o arquivo de configuração. Vá em /etc/hibernate e edite o arquivo hibernate.conf.

De acordo com o README, a configuração default não faz muita coisa, apenas salva e restaura o relógio, descarrega alguns módulos que podem travar a hibernação. Se você tem outros módulos no kernel que podem travar ou sistema de arquivos em rede como NFS abertos ou interfaces de rede que precisam ser baixadas antes de hibernar, o lugar de mexer é aqui. Fique à vontade para ler o README todo e cada opção deste arquivo! ;)

Por enquanto vamos observar esta linha:

FilewriterLocation /suspend_file 1000

Ela especifica o nome do arquivo de snapshot e o seu tamanho em MB.

Depois de editar o arquivo e adequá-lo às suas necessidades, salve e execute o comando hibernate. Ele irá gerar o arquivo de imagem no HD e mostrará o seguinte:

# hibernate

hibernate: Creating 1000 MB filewriter target.
ABORTING: resume2 is not setup correctly. Unless you have setup your bootloader
correctly, resuming will most likely fail. To correct this, add
"resume2=file:/dev/hda1:0x8b1d0" to your kernel command line in your
LILO or GRUB configuration file and reboot.
hibernate: Aborting.

Como você pode ver ele gera o arquivo do snapshot, mas como é a primeira vez que você executa o script, é necessário fazer algumas alterações no seu arquivo lilo.conf. Veja como ficou o meu lilo.conf:

image = /boot/vmlinuz-xmas
  root = /dev/hda1
  initrd = /boot/initrd
  append = "resume2=file:/dev/hda1:0xbd18"
  label = Linux2.6_xmas
  read-only

Detalhe importante! O valor hda1:0xbd18 refere-se à posição do arquivo em seu HD, portanto utilize o valor que o script gera na sua máquina, não use o copiar e colar simplesmente. ;)

   1. Introdução
   2. Mãos a obra!
   3. Configuração
   4. Testando
   5. Finalizando

Implementando a segurança em servicos de acesso remoto

Criando discos virtuais em máquinas remotas

Compilando e testando o novo X11R6.9

Compilando um kernel Linux

Mitigando Erro de Kernel: Neighbour Table Overflow

Como instalar o bootsplash no Debian 3.1 Sarge a partir do zero

Instalando o kernel 2.6.13 pré-compilado no Slackware 10.2

Atualizando o Slackware 9.1 para o kernel 2.6.5

#1 Comentário enviado por lennon.jesus em 28/11/2005 - 14:58h
Cara,

Ainda não tive tempo de testar... Mas já gostei!
Espero que funcione, hehe!
Realmente é uma "mão na roda". A melhor coisa do mundo é poder começar de onde paramos sem maiores enrolações.
Parabéns!

Abraços,
Lennon Jesus
#2 Comentário enviado por humbhenri em 28/11/2005 - 20:27h
Vale lembrar que no Ubuntu 5.10 a hibernação já vem por default
#3 Comentário enviado por diegospeed em 28/11/2005 - 22:24h
Olá,

Muito interessante, vou testar aki...

Artigo muito bomm de grande valia para todos... Parabéns...

Abraço...
#4 Comentário enviado por Grobsch em 29/11/2005 - 07:57h
Cara, já havia baixado o suspend e estava pronto para testá-lo, apenas vou antes atualizar o kernel, quando me deparo com seu artigo, bem providencial. Conversava com o Bruno do BigLinux e ele sugeriu este suspend, parece que ele irá deixar como padrão no Big, e talvez eu o coloque no GoblinX, apesar de não gostar de acrescentar patches ao kernel.

Abs
#5 Comentário enviado por a.fernando em 30/11/2005 - 09:09h
Parabens,

Gostei muito do seu artigo.

O assunto é de extrema utilidade para mim que uso notebook para trabalhar.

Valeu!
#6 Comentário enviado por Grobsch em 01/12/2005 - 13:39h
Hummm... Não consegui ainda compilar para o kernel 2.6.14.3.. o erro:
In file included from kernel/power/atomic_copy.c:10:
include/asm/suspend2.h: In function `fix_processor_context':
include/asm/suspend2.h:132: error: `per_cpu__init_tss' undeclared (first use in this function)
include/asm/suspend2.h:132: error: (Each undeclared identifier is reported only once
include/asm/suspend2.h:132: error: for each function it appears in.)
include/asm/suspend2.h:138: error: `per_cpu__cpu_gdt_table' undeclared (first use in this function)
make[2]: ** [kernel/power/atomic_copy.o] Erro 1
make[1]: ** [kernel/power] Erro 2
make: ** [kernel] Erro 2

Vou tentar mais... qq ajuda será útil...
#7 Comentário enviado por Grobsch em 02/12/2005 - 10:01h
Acabei removendo a tal função e compilei, vou testar hoje.
#8 Comentário enviado por LM25TTD em 05/02/2006 - 19:40h
Alguem sabe como configurar esta função sem conflitar com o driver nvidia?
#9 Comentário enviado por cycne em 28/02/2006 - 19:44h
Muito bom o artido, amigo LM25TTD , tive o mesmo problema!

( aqui é driver nvidia 8178 e kernel 2.6.15 DEBIAN!! :P )

primeiro o hibernate nao funcionava com driver da nvidia , aí achei um patch pro driver da nvidia que resolveu o problema!, aí vem o problema n°2 , o quando a maquina voltava do hibernar e abria o grafico bonitinho , o terminal fica todo como se estivesse fora de frequencia... bom faça o seguinte...
aqui vc vai saber como patchear seu driver nvidia de acordo com a versão
http://wiki.suspend2.net/DistroAndHardwareSetup/Nvidia?highlight=%28nvidia%29

agora vc usa o hibernate com o --force que vai funcionar!

### Resolvendo o problema do console ###
baixe esse patch pro kernel:
http://dev.gentoo.org/~spock/projects/vesafb-tng/

.. inclusive ou escrever um artigo sobre , pois esse patch é muito bom , voce pode mudar a resolução do terminal em tempo real , sem prescisar rebootar , e pode por uma resolução diferente em cada um com o fbset, alem de nao prescisar mais daqueles códigos toscos no lilo ou grub: vga=792
agora vc comenta o vga=
e escolhe a sua resolução assim: append="video=vesafb:ypan,1280x1024-32"

agora vai funcionar q é uma maravilha :) , aqui o meu append= esta assim:
append="quiet resume2=file:/dev/sda1:0xb32530 video=vesafb:ypan,1280x1024-32"

espero ter ajudado!!!!
abraços!!
#10 Comentário enviado por evangelistat em 04/06/2007 - 11:19h
nunca tinha pensado na capacidade do linux hibernar . por isso achei o artigo curioso e interessante .Parabéns.
Sds.
#11 Comentário enviado por xiloba em 28/05/2011 - 22:40h
legal o post.
Estive procurando por isso e também achei as seguintes possibilidades, sem instalar nada no ubuntu 10.04:
para hibernar:
#s2disk
para suspender:
# echo -n > /sys/power/state
:)

Contribuir com comentário

Entre na sua conta para comentar.