Pas de dispositif framebuffer: comment l'activer?

23

J'essaie de faire fonctionner une carte tuner PCMCIA sur mon serveur domestique sans tête, exécutant Debian Squeeze. Maintenant, comme j'ai de gros problèmes à trouver la bonne ligne de commande pour capturer, transcoder et diffuser la vidéo sur le réseau en utilisant VLC, j'ai décidé d'aller étape par étape et de travailler d'abord sur la sortie locale.

C'est là qu'intervient le problème: il ne semble pas y avoir de périphérique framebuffer (/ dev / fb0) auquel accéder pour afficher les graphiques sur l'écran ci-joint! Et en effet, j'ai remarqué que je n'ai pas l'image du pingouin Linux au démarrage (n'a pas fait attention avant car l'écran est attaché, mais toujours éteint, et de toute façon l'ordinateur est toujours allumé).

Comme je ne connais pas très bien les graphiques Linux, je voudrais comprendre:

  • Est-ce lié à mon matériel particulier (voir ci-dessous)? Ou est-ce spécifique à Debian Squeeze / une version du noyau / ...?
  • Existe-t-il un pilote dont j'ai besoin pour installer / charger manuellement?

Maintenant quelques informations générales:

  • L'ordinateur n'a pas de carte graphique dédiée, mais un chipset graphique intégré (Intel G31 Express), intégré sur la carte mère (Gigabyte G31M-ES2L)
  • Je ne veux pas installer un serveur X complet, juste avoir un périphérique framebuffer pour ce test particulier

Des idées / commentaires sur la question?

Federico
la source
1
Une fois que vous serez /dev/fb0opérationnel, assurez-vous d'accepter ma réponse. Il est rare que des personnes ayant une expérience réelle sur un sujet moins courant se déplacent pour donner une réponse au siège. Ils existent sur UNIX-SE, c'est un sujet relativement rare, donc moins d'experts existent.
JM Becker

Réponses:

36

Je peux répondre à votre question, ayant déjà travaillé avec le FB Linux.

Comment Linux fait son FB.

  1. Vous devez d'abord avoir le support FrameBuffer dans votre noyau, correspondant à votre matériel. La plupart des distributions modernes sont prises en charge via les modules du noyau. Peu importe si votre distribution est préconfigurée avec un logo de démarrage, je n'en utilise pas et j'ai le support FB.

  2. Peu importe si vous avez une carte graphique dédiée, intégrée fonctionnera tant que le Framebuffer matériel est pris en charge.

  3. Vous n'avez pas besoin de X, qui est l'aspect le plus attrayant d'avoir le FrameBuffer. Certaines personnes ne savent pas mieux, alors elles ont préconisé une certaine forme de X pour contourner leurs malentendus.

  4. Vous n'avez pas besoin de travailler directement avec le FB, ce que de nombreuses personnes supposent à tort. Une bibliothèque très impressionnante pour développer avec FrameBuffer est DirectFBqu'elle a même un support d'accélération de base. Je suggère toujours au moins de le vérifier, si vous démarrez un projet basé sur FB complet (navigateur Web, jeu, interface graphique ...)

Spécifique à votre matériel

  1. Utilisez le Vesa Generic FrameBuffer, ses modules s'appellent vesafb. Vous pouvez le charger, s'il est disponible, avec les commandes modprobe vesafb. de nombreuses distributions le préconfigurent désactivé, vous pouvez vous enregistrer /etc/modprobe.d/. blacklist vesafbpeut avoir besoin d'être commenté avec un #, dans un blacklist-framebuffer.confou un autre fichier de liste noire.

  2. La meilleure option est un pilote KMS spécifique au matériel. Le principal pour Intel est Intel GMA, ne sachant pas comment ses modules sont nommés. Vous devrez en prendre connaissance à partir de vos documents de distribution. C'est l'option FB la plus performante, personnellement, j'irais toujours KMS en premier si possible.

  3. Utilisez les pilotes FB spécifiques au matériel hérité, non recommandés car ils sont parfois bogués. J'éviterais cette option, sauf en dernier recours.

Je crois que cela couvre toutes vos questions et devrait fournir les informations nécessaires pour que cet /dev/fb0appareil soit disponible. Quelque chose de plus spécifique nécessiterait des détails de distribution, et si vous êtes un peu expérimenté, RTFM devrait être tout ce dont vous avez besoin. (après avoir lu ceci).

J'espère que j'ai aidé, votre chance vous posez des questions sur l'un de mes sujets! C'est un sujet négligé sous UNIX-SE, car tout le monde n'utilise pas (sciemment) le FrameBuffer Linux.

REMARQUE: UvesaFB ou VesaFB?

Vous pouvez avoir des gens utilisent lecture uvesafbplus vesafb, car il avait de meilleures performances. Cela était généralement vrai, mais pas dans une distribution moderne avec du matériel moderne. Si votre matériel graphique prend en charge le mode protégé VESA (VESA> = 2.0), et que vous avez un noyau un peu récent, vesafbc'est maintenant un meilleur choix.

JM Becker
la source
1
Merci beaucoup pour votre réponse !!! C'est bien au-delà de ce que j'attendais en termes de profondeur et de qualité !! J'apprécie vraiment quand je peux trouver des messages / réponses comme le vôtre, car non seulement ils donnent des solutions sur le problème spécifique, mais plus important encore, ils donnent des informations générales sur le fonctionnement interne qui peuvent être utiles aux autres pour des situations identiques ou connexes !!
Federico
1
En ce qui concerne mon problème, je vais l'examiner en fonction de vos commentaires et faire un rapport ici dès que j'obtiendrai des résultats satisfaisants ...
Federico
3
J'ai donc essayé modprobe vesa(ce dont je me souviens d'avoir essayé avant de poser la question ici) qui échoue parce que le module n'existe pas sur mon système ( FATAL: Module vesafb not found.) -> devra comprendre si cela est lié à mon matériel ou à ma distribution Linux (Debian Squeeze ). La bonne nouvelle est que cela modprobe uvesafbfonctionne et crée l' /dev/fb0appareil. Cependant, maintenant que j'ai lu votre réponse, je vais essayer de configurer les choses correctement et de trouver le pilote KMS ...
Federico
1
J'ai voté pour vos commentaires, je suis ravi de pouvoir vous aider!. Pour répondre à votre dernier commentaire, vous avez tort sur la solution 2. Vous pouvez ABSOLUMENT obtenir un KMS sans X, mais comme je l'ai dit, les vraies réponses se noient littéralement dans les ordures. Le nom du module matériel correct est appelé inteldrmfb, je l'ai découvert en faisant des recherches rapides. J'ai toujours ATI, donc le support Intel GPU n'est pas mon point fort. Vous devrez peut- être installer un package pour cela, mais je vais voir si je peux le découvrir.
JM Becker
1
O attends, j'ai fait une erreur ... Je viens de vérifier mon netbook Intel et le module l'est i915, mais il charge le Framebuffer connu sous le nom d'inteldrmfb. Vous devrez peut-être installer le package libdrm-intel1ou vérifier s'il est installé.
JM Becker
10

J'ai enfin trouvé la solution à mon problème !!

Tout d'abord, merci beaucoup à tous ceux qui ont contribué et en particulier TechZilla et l'explication détaillée qu'il a fournie sans laquelle je pense que j'aurais abandonné il y a longtemps!

Donc, fondamentalement, tout ce qui doit être fait est d'activer modesetting ( modeset=1) lorsque le i915module du noyau se charge. Cela peut être fait de la manière habituelle:

  • via le paramètre de noyau de GRUB,
  • via un fichier de configuration dans /etc/modprobe.d
  • ou sur la ligne de commande:

    # rmmod i915
    # modprobe i915 modeset=1
    

En fait, vous n'avez rien à faire si vous installez un package xserver-xorg-video-intel, qui crée des /etc/modprobe.d/i915-kms.confconteneurs options i915 modeset=1. Cependant, si quelqu'un ne veut pas installer X (comme dans mon cas), alors KMS n'est pas automatiquement activé, ce qui explique pourquoi le périphérique FrameBuffer n'a pas été créé ...

Federico
la source
2
Vous devriez quand même accepter ma réponse, car «comment activer KMS avec squeeze» n'était pas votre question initiale. Je crois avoir répondu à votre question initiale et vous avoir indiqué le chemin que vous vouliez. L'autre raison, vous n'obtenez que des points pour attribuer des réponses à «d'autres» personnes. Même s'il est bon de s'auto-récompenser si personne ne s'en approche, dans ce cas, cela n'a pas de sens. Vous pouvez cependant garder votre réponse affichée ou intégrer les informations en question. Dans les deux cas, ce serait bien. vraiment content d'avoir aidé! Je suis vraiment heureux que la solution KMS ait fonctionné, car elle devrait être plus rapide que VESA standard.
JM Becker
1
Je viens de changer la réponse acceptée à la vôtre! Étant un peu nouveau ici, je ne savais pas exactement quoi faire: mettre la solution dans la question elle-même, dans un commentaire à votre réponse acceptée, ou poster comme nouvelle réponse. J'ai pensé qu'en créant une nouvelle réponse acceptée, les gens liraient d'abord la question, puis votre réponse qui vient en haut car elle a plus de votes positifs et ensuite ma réponse ...
Federico
Bien que l'autre réponse soit approfondie, ce devrait être la réponse acceptée. Indépendamment de l'éloquence de l'auteur.
Moog
-2

Vous pouvez essayer un framebuffer virtuel comme Xvfb (X framebuffer virtuel).

Description du package xvfb dans squeeze

artifex
la source
1. il s'agit d'un FrameBuffer «virtuel» et non d'un véritable FrameBuffer matériel direct. 2. C'est un serveur X, et en particulier la question ne demandait pas de X.
JM Becker
-2

Tant qu'il s'agit d'une installation Debian standard sans rien d'extraordinaire et d'un noyau standard, vous devriez pouvoir obtenir une console VGA de location qui utilise le périphérique framebuffer avec un paramètre de noyau tel que "vga = 792" (qui est de 24 bits 1024 × 768 ). Bien sûr, le noyau le signale comme obsolète, mais cela fonctionne.

Voir http://www.kernel.org/doc/Documentation/kernel-parameters.txt pour les paramètres du noyau. Fait intéressant, le paramètre "vga =" ne s'affiche pas comme obsolète.

Assurez-vous de relancer update-grub (2) et les likes après le changement.

Jetez également un œil à http://packages.debian.org/squeeze/svgalib-bin ce n'est pas parfait mais il vous permet de faire des trucs graphiques fantaisistes sur une console.

aseq
la source
3
Non ça ne marche plus, dans BEAUCOUP de circonstances. C'est la réponse dont je parle toujours. Si vous utilisez GRUB2, cela ne fonctionne que lors du démarrage avec les 16décélérations héritées . Il est également obsolète, ce que vous reconnaissez au moins, de manière pragmatique, cela signifie NE PAS FAIRE DE NOUVELLES CONFIGURATIONS AVEC ELLE. Les vieilles vga=ordures échoueront au démarrage, si vos modules matériels sont désactivés /etc/modprobe.d/et que de nombreuses distributions sont préconfigurées comme telles.
JM Becker
Donc, problème suivant, svgalib-bin est une bibliothèque et non un périphérique '/ dev / fb0'. Tout ce qui veut svgalib, doit être développé avec svgalib. Il peut être utilisé pour remplacer un FB, mais il ne remplace pas «littéralement» le FB. En fait, j'ai fait une erreur lors du dernier commentaire, quand j'ai dit "échec au démarrage", je voulais dire "échec du chargement de FB, reviendra probablement à la version standard"
JM Becker
3
Ce n'est même pas de votre faute, notre communauté laisse une documentation horriblement dépassée. Tout le monde a de vieilles réponses partout sur Internet, ce qui rend difficile la compréhension moderne de la bête. Beaucoup de gens abandonnent même simplement, car la vraie réponse est nouvelle et enfouie sous des années de solutions obsolètes.
JM Becker
1
Le paramètre "vga =" fonctionne lors de l'utilisation de squeeze. Je l'ai simplement suggéré car c'est une solution rapide et facile, au lieu de rechercher ce qu'il remplace. kernel.org/doc/Documentation/kernel-parameters.txt n'affiche pas "vga =" comme obsolète. La seule raison que je connaisse est due à un message de démarrage rapide à peine lisible par le noyau ... la confusion s'ensuit ... donc selon le texte de kernel.org "vga =" n'est PAS déconseillé. Que devons-nous croire?
aseq
1
Au fait, ma suggestion d'utiliser svgalib est parce que l'utilisateur ne veut pas utiliser X. Je comprends les coupables de svgalib, mais il y a peu d'autres options.
aseq