terça-feira, 9 de agosto de 2011

Boot Animado no Debian Squeeze



A equipe Debian, por prezar pela segurança e estabilidade, deixa de fora dos lançamentos de seu sistema alguns recursos que outras distros linux fazem questão de alardear aos quatro ventos. Um desses recursos é o boot gráfico animado que vem em praticamente todas as distribuições linux da atualidade e que agrada a maioria (senão todos) dos usuários.
Dois dos principais pacotes que oferecem esse recurso é o Plymouth e o Splashy dada a facilidade de instalação e configuração no Debian. Veremos como instalar o primeiro!


O Plymouth

O Plymouth é uma aplicação que roda bem no início do processo de boot (até mesmo antes do sistema de arquivos raiz ser montado!) e que fornece uma animação de inicialização gráfica, também conhecida como bootsplash, enquanto o processo de boot acontece em segundo plano. Em modo texto ou modo gráfico, as mensagens de inicialização são completamente ocultadas. Depois que o sistema de arquivos raiz é montado como leitura e escrita, as mensagens são direcionadas para /var/log/boot.log. Além disso, o usuário pode ver as mensagens a qualquer momento durante a inicialização pressionando a tecla Esc.
O Plymouth suporta vários "splash" e já vem com vários exemplos de temas para escolha do usuário.

Instalando o Plymouth
Em um terminal digite os seguintes comando:
$ sudo aptitude install plymouth plymouth-themes-all plymouth-x11 v86d
Após a instalação precisamos definir o tema splash a ser utilizado. Para listarmos os temas que vêem com o Plymouth digite no terminal:
$sudo plymouth-set-default-theme -l
Você deverá obter a seguinte listagem:
$ sudo  plymouth-set-default-theme -l
details
fade-in
glow
script
solar
spacefun
spinfinity
text
Basta escolher um dos temas e rodar o seguinte comando para gerarmos um novo initrd:
$sudo plymouth-set-default-theme spacefun --rebuild-initrd
Da forma como está teremos o tema padrão do Squeeze, denominado de spacefun, que é a animação de um foguete partindo da Terra para Saturno durante a inicialização, e o mesmo foguete retornando de Saturno para a Terra no desligamento/reinicialização do sistema.
Depois de definido o tema, agora temos que configurar a resolução do bootloader para que se adeque ao tema e à resolução do suportável pelo driver de vídeo. Para a maioria dos casos podemos usar a resolução padrão, que é 1024x768. Isso é feito alterando duas linhas no arquivo /etc/default/grub. Vamos editar esse arquivo no editor de texto padrão do Debian; digite num terminal como root:
$sudo nano /etc/default/grub
Localize a seguinte linha (geralmente é a sétima linha):
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
E edite-a deixando-a assim:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
A próxima linha a ser editada é a seguinte (geralmente a 21ª linha):
#GRUB_GFXMODE=640x480
Descomente-a deixando-a da seguinte forma:
GRUB_GFXMODE=1024x768
Agora é só rodar o comando para atualizar o bootloader:
$ sudo update-grub2
Agora basta reinicializarmos o sistema para vermos o Plymouth em ação. Se o spacefun não te agradou é só rodar novamente o comando de definição de tema como em:
$ sudo plymouth-set-default-theme solar --rebuild-initrd
Note que o tema spacefun foi trocado pelo solar. Proceda da mesma forma para o tema de sua preferência. Será necessário reiniciar o sistema novamente para conferir o resultado.


E quando as coisas não dão certo...

Bom, mas pode ocorrer de você fazer tudo isso e o máximo que conseguiu foi uma barra azul com branco crescente em uma tela preta durante o boot. Esse foi o meu caso! Isso deve-se ao fato do Plymouth trabalhar em sistemas com drivers que utilizem o DRM modesetting. Para os outros casos podemos utilizar a interface /dev/fb na inicialização do sistema (o conhecido modo Framebuffer). Para isso precisamos configurar mais alguns arquivos para nos certificarmos de que tudo correrá bem.
Primeiramente vamos editar o arquivo /etc/initramfs-tools/modules; adicione a seguinte linha no final do arquivo:
uvesafb mode_option=1024x768-24 mtrr=3 scroll=ywrap
Agora precisamos criar o arquivo splash na pasta /etc/initramfs-tools/conf.d/:
$ sudo nano /etc/initramfs-tools/conf.d/splash
Acrescente nesse arquivo a seguinte linha:

FRAMEBUFFER=y
Agora preciamos voltar ao arquivo do bootloader para que o framebuffer seja carregado já na inicialização e com a resolução conveniente:
$ sudo nano /etc/default/grub
Localize a linha que tínhamos alterado para GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" e deixe-a assim (o conteúdo fica em apenas uma linha):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1024x768-24,mtrr=3,scroll=ywrap"
Agora basta rodarmos os dois comando abaixo e reiniciarmos o sistema:
$ sudo update-grub2
$ sudo update-initramfs -u
Pronto, agora você tem um Debian mais bonito!

Atualização: Todos os procedimentos descritos aqui foram testados e são válidos para o kernel default do Debian (no caso o  2.6.32-5-686, se você usa a versão i686); eu instalei a versão mais atual do backports (2.6.39-bpo.2-686-pae) e junto com ela foram atualizados os pacotes linux-base e initramfs-tools e a animação de boot não funcionou (só ficou uma tela preta sem que o sistema inicializasse). Portanto, fiquem atentos!


Fonte: wiki.debian.org

21 comentários:

  1. @Glaucio,
    Eu tentei usar desde o lançamento do Squeeze, mas só conseguia uma faixa colorida e não a imagem do splash. Procurava a solução pra isso e, como só encontrei ha alguns dias resolvi compartilhar com o post somente agora.

    ResponderExcluir
  2. Lex.

    Parabéns pelo seu blog e por compartilhar seu conhecimento. Sou novo no Debian, instalei hj mesmo, e seu blog já me ajudou um absurdo.

    Valeu..

    ResponderExcluir
  3. Com a problemática placa-mãe K8M800-M2 e com o Kernel 3.0.0-12 não foi não. Mesmo depois do segundo processo continua aparecendo só a barrinha azul. Mas mto obrigado, já é melhor que o monte de letras do processo de kernel

    ResponderExcluir
  4. Nao estou conseguindo instalar o playmouth a mensagem eh que a rede esta muito longe e nao consegue se conectar ao servidor 

    ResponderExcluir
  5. Você tem acesso normal à internet, @Adrian Lucas Xavier? Pode ser que o servido esteja temporariamente fora do ar. Às vezes isso ocorre. Tente novamente em outro horário. Você configurou a lista de repositórios, não configurou. Dê uma olhada em http://debianmaniaco.blogspot.com/2011/02/souceslist-para-o-debian-60-squeeze.html para fazer isso.

    ResponderExcluir
  6. Fiz todos os procedimentos mas mesmo assim só fica a barra azul carregando... refiz o processo mas ainda persiste...

    ResponderExcluir
  7. paranbens funcionou direitinhu

    ResponderExcluir
  8. Olá meu amigo, no testing não rolou.
    Existe repositorio para o Plymouth?"O pacote plymouth não está disponível, mas é referenciado por outro pacote.Isto pode significar que o pacote está faltando, ficou obsoleto ouestá disponível somente a partir de outra fonte"ãoAlguma sugestão?Vou tentando aqui....

    ResponderExcluir
  9.  @Charles Veiga Santos,
    O pacote plymouth está nos repositórios do wheezy, apesar de eu não estar utilizando-o no wheezy. Provavelmente você esteja com os repositórios padrões e eles não o contenha. Adiciona "contrib non-free" aos teus repositórios.
    Eles devem ficar assim:

    ### Debian Wheezy Oficial
    deb http://ftp.br.debian.org/debian/ wheezy main contrib non-free
    deb-src http://ftp.br.debian.org/debian/ wheezy main contrib non-free

    ### Debian Wheezy Updates
    deb http://security.debian.org/ wheezy/updates main contrib non-free
    deb-src http://security.debian.org/ wheezy/updates main contrib non-free

    ResponderExcluir
  10. Alguém saberia me dizer, como fazer isso , usando o kernel que está no repositório do  backport?

    ResponderExcluir
  11. Parabéns. Aqui funcionou muito bem. Wheezy kernel 3.2.0-2-amd64.

    Sérgio

    ResponderExcluir
  12. no meu funcionou, só não deu tempo o foguetinho chegar em saturno...rsrsr.... mas ta valendo...

    ResponderExcluir
  13. como que faz para instalar outro kernel no Debian?
    já tentei com uns tutoriais na net mas nunca consigo

    ResponderExcluir
  14. tive que reiniciar meu pc, pressionando o botão restart da cpu, e agora meu Debian não inicia mais, consegui esse log de erro, mas não sei como proceder. alguém pode me ajudar? não quero formatar o pc de novo.


    Log of fsck -C -R -A -a
    Mon Aug 6 16:18:41 2012


    fsck from util-linux-ng 2.17.2
    Documentos contains a file system with errors, check forced.
    Documentos: Inodes that were part of a corrupted orphan linked list found.


    Documentos: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)
    fsck died with exit status 4


    Mon Aug 6 16:18:41 2012
    ----------------

    ResponderExcluir
  15. tive que reiniciar meu pc, pressionando o botão restart da cpu, e agora meu Debian não inicia mais, consegui esse log de erro, mas não sei como proceder. alguém pode me ajudar? não quero formatar o pc de novo.


    Log of fsck -C -R -A -a
    Mon Aug 6 16:18:41 2012


    fsck from util-linux-ng 2.17.2
    Documentos contains a file system with errors, check forced.
    Documentos: Inodes that were part of a corrupted orphan linked list found.


    Documentos: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
    (i.e., without -a or -p options)
    fsck died with exit status 4


    Mon Aug 6 16:18:41 2012

    ResponderExcluir
  16. Desligamentos abruptos com o hd em funcionamento sempre são prejudiciais ao mesmo. No mínimo você ganhou badblocks no hd. Rode o fsck para corrigir o erro assim:
    $ sudo fsck -p -f -v /dev/sdx (troque o x pelo número correspondente de sua partição raiz - onde o Debian está instalado).

    ResponderExcluir
  17. Muito obrigado.
    to aprendendo muito com seu blog

    ResponderExcluir
  18. no meu não deu certo
    a inicialização continuou a mesma de sempre
    só que excluiu quase todo do debian, temas programas e tudo
    só formatando kkk

    ResponderExcluir
  19. Primeiramente parabéns pelo blog amigo, me ajudou muito.
    Estou tentando fazer o boot animado mas não consigo, mesmo fazendo a ultima parte quando as coisas não dão certo, só aparece a barra azul com branco embaixo, uso uma placa de vídeo ATI, com driver proprietário e dual monitor. Se puder me ajudar, acho que no meu caso eu não deveria usar o FB correto? Obrigado

    ResponderExcluir
  20. Tiago Frison

    Para o seu caso, acrescenta o conteúdo abaixo no final do arquivo /etc/initramfs-tools/modules:

    # KMS
    drm
    radeon modeset=1

    ResponderExcluir