28 julho 2008

Hibernação no Fedora

Uma das coisas que quis mexer agora, no período de recesso (férias é piada de mau gosto) é colocar funcionando a hibernação, que é a capacidade do sistema operacional suspender o funcionamento, salvar tudo o que foi feito e guardar em disco. Quando religar o micro, ele restaura tudo do ponto em que parou. O Windows tem essa opção, e isso é muito prático em notebooks, principalmente. Mas eu queria pô-lo rodando em desktops.
O kernel padrão do Linux tem já o suporte a software suspend, na memória e em disco. Mas eu queria colocar o suspend2, também conhecido como TuxOnIce (que vocês vêem o ícone aí do lado). Esse é mais completo, permite comprimir a imagem, checagem de erros, modo quiosque (guarda a imagem e não deleta ela), entre outras coisas. Ah, tem suporte aprimorado a processadores multicore e multiprocessamento simétrico.
E como eu sou chato, gosto de compilar o meu kernel. Sempre prefiro. A maneira fácil é pegar o repositório yum do TuxOnIce, instalar os pacotes recomendados, colocar o kernel deles, e pronto. Funciona muito bem. Mas eu quero compilar e fazer funcionar no meu kernel, porque depois que funcionar no desktop, vou fazer o mesmo para o notebook. E no Legolas, quero acrescentar umas otimizações para economia de energia.
Pois é, li configurações, futuquei um pouco, compilei e reiniciei muito o micro... Acabei descobrindo um galho no programa que cria o initrd do sistema. Descomprimi o pacote, fui lá, abri o init e alterei as chamadas. Funcionou! O problema é que os efeitos 3D no desktop (Compiz Fusion) foi para o saco: Uma grande tela branca. Depois de testar com o kernel "padrão" do TuxOnIce, coloco uma seção da configuração, a de dispositivos gráficos, exatamente igual como está no kernel "padrão", no meu. Funcionou. Ótimo!
Agora tem alguns detalhes a serem resolvidos:
  • O módulo de rede (o malfadado forcedeth) precisa ser desativado quando o micro entra em hibernação, e reativado quando o micro volta do "sono". Tem como fazer isso, eu coloquei mas não necessariamente funcionou. Resumo: Preciso fazer um rmmod forcedeth ; modprobe forcedeth para ele achar a rede.
  • Ligar a opção da tela de desligamento no framebuffer, para termos um gráfico simpático mostrando que a máquina está entrando em hibernação, com direito a barra de progresso.
  • Fazer uma limpeza na configuração do kernel, deixei algumas partes como o "original", logo um monte de tralha ligada desnecessariamente.
Bem, depois vou dar uma geral e partir para criar o kernel novo para o notebook. Além de ligar as opções de hibernação, quero colocar as otimizações sugeridas pelo utilitário powertop, da Intel, e o suporte ao bootsplash. Aí sim, vai ficar legal. E depois, vou ver se escrevo um artigo para algum site de Linux por aí, já que isso é bom, útil e vai valer a pena para alguém.

Marcadores: , , , ,

0 Comments:

<< Home