Nenhum dispositivo framebuffer: como ativá-lo?

22

Estou tentando fazer com que uma placa sintonizadora PCMCIA funcione no meu servidor doméstico sem cabeçalho, executando o Debian Squeeze. Agora, como tenho problemas muito grandes em encontrar a linha de comando correta para capturar, transcodificar o fluxo final do vídeo para a rede usando o VLC, decidi ir passo a passo e trabalhar primeiro na saída local.

É aí que entra o problema: parece não haver dispositivo framebuffer (/ dev / fb0) para acessar a exibição de gráficos na tela anexada! E, de fato, notei que não tenho o Imagem do pingüim Linux na inicialização (não prestou atenção antes, pois a tela está conectada, mas sempre desligada e, de qualquer maneira, o computador está sempre ligado).

Como não estou muito familiarizado com os gráficos do Linux, gostaria de entender:

  • Isso está relacionado ao meu hardware específico (veja abaixo)? Ou é específico para o Debian Squeeze / a versão do kernel / ...?
  • Existe algum driver que eu preciso instalar / carregar manualmente?

Agora, algumas informações gerais:

  • O computador não possui uma placa gráfica dedicada, mas um chipset gráfico integrado (Intel G31 Express), embutido na placa-mãe (Gigabyte G31M-ES2L)
  • Eu não quero instalar um servidor X cheio de recursos, basta ter um dispositivo framebuffer para este teste em particular

Alguma ideia / comentário sobre o assunto?

    
por Federico 06.03.2012 / 17:34

4 respostas

35

Eu posso resolver sua questão, tendo trabalhado anteriormente com o FB do Linux.

Como o Linux faz o seu FB.

  1. Primeiro você precisa ter suporte ao FrameBuffer em seu kernel, correspondente ao seu hardware. A maioria das distribuições modernas tem suporte via módulos do kernel. Não importa se sua distro vem pré-configurada com um logotipo de inicialização, não uso um e tenho suporte a FB.

  2. Não importa se você tem uma placa gráfica dedicada, integrada funcionará, desde que o Hardware Framebuffer seja suportado.

  3. Você não precisa do X, que é o aspecto mais atraente de ter o FrameBuffer. Algumas pessoas não sabem melhor, então eles defenderam alguma forma de X para solucionar seus mal-entendidos.

  4. Você não precisa trabalhar diretamente com o FB, o que muitas pessoas assumem incorretamente. Uma biblioteca muito impressionante para desenvolvimento com o FrameBuffer é DirectFB e ainda tem algum suporte básico de aceleração. Eu sempre sugiro pelo menos que você verifique se você está iniciando um projeto baseado em FB com recursos completos (Navegador da Web, Jogo, GUI ...)

Específico para o seu hardware

  1. Use o FrameBuffer genérico da Vesa, seus módulos são chamados de vesafb . Você pode carregá-lo, se você o tiver disponível, com os comandos modprobe vesafb . muitas distribuições pré-configuradas, você pode fazer check-in em /etc/modprobe.d/ . blacklist vesafb talvez precise ser comentado com um # , em um blacklist-framebuffer.conf ou outro arquivo de lista negra.

  2. A melhor opção é um driver KMS específico para hardware. A principal delas para a Intel é a Intel GMA, não tendo certeza do nome de seus módulos. Você precisará ler sobre isso a partir dos documentos da sua distribuição. Esta é a opção FB com melhor desempenho. Eu pessoalmente sempre coloco o KMS em primeiro lugar, se possível.

  3. Use os drivers FB específicos do hardware herdado, não recomendado, pois às vezes são problemáticos. Eu evitaria essa opção, a menos que o último recurso fosse necessário.

Acredito que isso abrange todas as suas dúvidas e forneça as informações para que o dispositivo /dev/fb0 esteja disponível. Qualquer coisa mais específica precisaria de detalhes de distribuição, e se você é um pouco experiente, o RTFM deve ser tudo o que você precisa. (depois de ler isto).

Espero ter ajudado, Sua sorte sua perguntando sobre um dos meus tópicos! Este é um assunto negligenciado no UNIX-SE, pois nem todos (sabidamente) usam o FrameBuffer do Linux.

NOTA: UvesaFB ou VesaFB?

Você pode ter lido que as pessoas usam uvesafb over vesafb , pois tiveram um desempenho melhor. Isso geralmente era verdade, mas não em uma distro moderna com hardware moderno. Se o seu hardware gráfico suporta o modo protegido VESA (VESA > = 2.0), e você tem um kernel recente, o vesafb é agora uma escolha melhor.

    
por 06.03.2012 / 20:44
9

Eu finalmente encontrei a solução para o meu problema!

Em primeiro lugar, muitos agradecimentos a todos os que contribuíram e, em particular, à TechZilla e à explicação detalhada que ele forneceu, sem a qual eu acho que teria desistido há muito tempo!

Então, basicamente, tudo o que precisa ser feito é ativar o modesetting ( modeset=1 ) quando o módulo do kernel i915 for carregado. Isso pode ser feito das formas usuais:

  • por meio do parâmetro do kernel do GRUB,
  • por meio de um arquivo de configuração em /etc/modprobe.d
  • ou na linha de comando:

    # rmmod i915
    # modprobe i915 modeset=1
    

Na verdade, você não precisa fazer nada se instalar o pacote xserver-xorg-video-intel , que cria /etc/modprobe.d/i915-kms.conf contendo options i915 modeset=1 . No entanto, se alguém não quiser instalar o X (como no meu caso), o KMS não será ativado automaticamente, o que explica por que o dispositivo FrameBuffer não foi criado ...

    
por 08.03.2012 / 18:58
-2

Você pode tentar um framebuffer virtual como o Xvfb (X framebuffer virtual).

Descrição do pacote xvfb no squeeze

    
por 06.03.2012 / 17:57
-2

Desde que esta seja uma instalação debian padrão com nada extravagante e um kernel padrão, você deve conseguir um console VGA de contratações que use o dispositivo framebuffer com um parâmetro do kernel como "vga = 792" (que é de 24 bits 1024 × 768). Claro que o kernel relata como obsoleto, mas funciona.

Veja link para os parâmetros do kernel. Curiosamente, o parâmetro "vga=" não é considerado obsoleto.

Certifique-se de executar novamente o update-grub (2) e os curtidos após a alteração.

Também dê uma olhada no link que não é perfeito, mas permite que você faça alguns elementos gráficos extravagantes em um console.

    
por 06.03.2012 / 20:53