Kein Framebuffer-Gerät: Wie wird es aktiviert?

23

Ich versuche, eine PCMCIA-Tunerkarte in meinem kopflosen Heimserver zum Laufen zu bringen, auf dem Debian Squeeze ausgeführt wird. Da ich große Probleme habe, die richtige Befehlszeile für die Aufnahme zu finden, das Video mithilfe von VLC zu transkodieren und an das Netzwerk zu übertragen, habe ich mich dazu entschlossen, Schritt für Schritt vorzugehen und zuerst an der lokalen Ausgabe zu arbeiten.

Hier kommt das Problem ins Spiel : Es scheint kein Framebuffer-Gerät (/ dev / fb0) zu geben, auf das zugegriffen werden kann, um Grafiken auf dem angehängten Bildschirm anzuzeigen! Und tatsächlich ist mir aufgefallen, dass ich beim Booten kein Linux-Pinguin-Image habe (habe vorher nicht darauf geachtet, da der Bildschirm angeschlossen ist, aber immer ausgeschaltet ist und der Computer sowieso immer eingeschaltet ist).

Da ich mit Linux-Grafiken nicht sehr vertraut bin, möchte ich Folgendes verstehen:

  • Bezieht sich das auf meine spezielle Hardware (siehe unten)? Oder ist es spezifisch für Debian Squeeze / eine Kernel-Version / ...?
  • Gibt es einen Treiber, den ich manuell installieren / laden muss?

Nun einige allgemeine Informationen:

  • Der Computer verfügt nicht über eine dedizierte Grafikkarte, sondern über einen integrierten Grafikchipsatz (Intel G31 Express), der auf dem Motherboard integriert ist (Gigabyte G31M-ES2L).
  • Ich möchte keinen X-Server mit vollem Funktionsumfang installieren, sondern nur ein Framebuffer-Gerät für diesen speziellen Test

Irgendwelche Ideen / Kommentare zu diesem Thema?

Federico
quelle
1
Wenn Sie /dev/fb0fertig sind, akzeptieren Sie bitte unbedingt meine Antwort. Selten kommen Leute mit wirklicher Erfahrung zu einem weniger verbreiteten Thema, um eine HQ-Antwort zu geben. Sie existieren unter UNIX-SE, einem relativ seltenen Thema, daher gibt es weniger Experten.
JM Becker

Antworten:

36

Ich kann Ihre Frage beantworten, nachdem ich zuvor mit der Linux-FB gearbeitet habe.

Wie Linux seine FB macht.

  1. Zuerst müssen Sie in Ihrem Kernel FrameBuffer-Unterstützung haben, die Ihrer Hardware entspricht. Die meisten modernen Distributionen unterstützen Kernelmodule. Es spielt keine Rolle, ob Ihre Distribution mit einem vorkonfigurierten Boot-Logo geliefert wird, ich verwende keines und habe FB-Unterstützung.

  2. Es spielt keine Rolle, ob Sie eine dedizierte Grafikkarte haben. Die integrierte Grafikkarte funktioniert, solange der Hardware-Framebuffer unterstützt wird.

  3. Sie brauchen kein X, was der verlockendste Aspekt des FrameBuffers ist. Einige Leute wissen es nicht besser, deshalb haben sie sich für eine Form von X ausgesprochen, um ihre Missverständnisse zu umgehen.

  4. Sie müssen nicht direkt mit der FB arbeiten, was viele Leute fälschlicherweise annehmen. Eine großartige Bibliothek für die Entwicklung mit FrameBuffer DirectFB, die sogar grundlegende Beschleunigungsunterstützung bietet. Ich schlage immer vor, es zumindest auszuprobieren, wenn Sie ein FB-basiertes Projekt mit vollem Funktionsumfang starten (Webbrowser, Spiel, GUI ...).

Speziell für Ihre Hardware

  1. Verwenden Sie den Vesa Generic FrameBuffer, dessen Module aufgerufen werden vesafb. Sie können es mit den Befehlen laden, wenn Sie es zur Verfügung haben modprobe vesafb. Viele Distributionen vorkonfigurieren es deaktiviert, Sie können einchecken /etc/modprobe.d/. blacklist vesafbmüssen möglicherweise mit einer #, in einer blacklist-framebuffer.confoder einer anderen Blacklist-Datei auskommentiert werden.

  2. Die beste Option ist ein hardwarespezifischer KMS-Treiber. Die wichtigste für Intel ist Intel GMA, nicht sicher, wie die Module heißen. Sie müssen es in Ihren Distributionsdokumenten nachlesen. Dies ist die FB-Option mit der besten Leistung. Ich persönlich würde immer zuerst KMS verwenden, wenn dies möglich ist.

  3. Verwenden Sie die für Legacy-Hardware spezifischen FB-Treiber. Diese werden nicht empfohlen, da sie manchmal fehlerhaft sind. Ich würde diese Option meiden, sofern nicht das letzte Mittel erforderlich ist.

Ich glaube, dies deckt alle Ihre Fragen ab und sollte die Informationen liefern, um dieses /dev/fb0Gerät verfügbar zu machen. Alles, was spezifischer ist, benötigt Distributionsdetails. Wenn Sie etwas Erfahrung haben, sollten Sie nur RTFM benötigen. (nachdem ich das gelesen habe).

Ich hoffe ich habe geholfen, Sie haben Glück, dass Sie nach einem meiner Themen gefragt haben! Dies ist ein unter UNIX-SE vernachlässigtes Thema, da nicht jeder (wissentlich) den Linux-FrameBuffer verwendet.

HINWEIS: UvesaFB oder VesaFB?

Sie können Lese Menschen nutzen uvesafbüber vesafb, da es eine bessere Leistung hatte. Dies stimmte im Allgemeinen, aber nicht in einer modernen Distribution mit moderner Hardware. Wenn Ihre Grafikhardware den geschützten Modus VESA (VESA> = 2.0) unterstützt und Sie einen etwas neueren Kernel haben, vesafbist dies die bessere Wahl.

JM Becker
quelle
1
Vielen vielen Dank für Ihre Antwort !!! Es ist weit über das, was ich in Bezug auf Tiefe und Qualität erwartet hatte !! Ich schätze es sehr, wenn ich Posts / Antworten wie Ihre finde, weil sie nicht nur Lösungen für das spezifische Problem liefern, sondern vor allem allgemeine Informationen über das Innenleben liefern, die anderen in den gleichen oder verwandten Situationen hilfreich sein können !!
Federico
1
In Bezug auf mein Problem werde ich es auf der Grundlage Ihrer Eingaben untersuchen und hier zurückmelden, sobald ich zufriedenstellende Ergebnisse erhalte ...
Federico
3
Also habe ich versucht modprobe vesa(was ich mich erinnern kann, bevor ich die Frage hier gestellt habe), was fehlgeschlagen ist, weil das Modul auf meinem System nicht existiert ( FATAL: Module vesafb not found.) -> muss verstehen, ob dies mit meiner Hardware oder meiner Linux-Distribution zusammenhängt (Debian Squeeze) ). Gute Nachricht ist, dass modprobe uvesafbfunktioniert und das /dev/fb0Gerät erstellt. Nachdem ich Ihre Antwort gelesen habe, werde ich jedoch versuchen, die Dinge richtig einzurichten und den KMS-Treiber zu finden ...
Federico
1
Ich habe für Ihre Kommentare gestimmt. Ich bin aufgeregt, dass ich Ihnen helfen kann. Um auf Ihren letzten Kommentar einzugehen, sind Sie in Bezug auf Lösung 2 falsch. Sie können ABSOLUT ein KMS ohne X erhalten, aber wie ich bereits sagte, ertrinken echte Antworten buchstäblich im Müll. Der Name des korrekten Hardwaremoduls wird aufgerufen inteldrmfb, ich habe es in kurzen Recherchen herausgefunden. Ich habe immer ATI, daher ist die Unterstützung von Intel GPUs nicht meine größte Stärke. Möglicherweise müssen Sie ein Paket dafür installieren, aber ich werde sehen, ob ich es herausfinden kann.
JM Becker
1
Oh warte, ich habe einen Fehler gemacht ... Ich habe gerade mein Intel Netbook überprüft und das Modul ist i915, aber es lädt den als inteldrmfb bekannten Framebuffer. Möglicherweise müssen Sie das Paket installieren libdrm-intel1oder prüfen, ob es installiert ist.
JM Becker
10

Ich habe endlich die Lösung für mein Problem gefunden !!

Zunächst vielen herzlichen Dank an alle, die dazu beigetragen haben und insbesondere an TechZilla und die ausführliche Erklärung, ohne die ich wohl längst aufgegeben hätte!

Im Grunde ist es also alles, was getan werden muss, das Modesetting ( modeset=1) zu aktivieren, wenn das i915Kernelmodul geladen wird . Dies kann auf die übliche Weise erfolgen:

  • über den GRUB-Kernel-Parameter
  • über eine Konfigurationsdatei in /etc/modprobe.d
  • oder in der Kommandozeile:

    # rmmod i915
    # modprobe i915 modeset=1
    

In der Tat, brauchen Sie nichts weiter zu tun , wenn Sie Paket installieren xserver-xorg-video-intel, die erstellt /etc/modprobe.d/i915-kms.confenthalten options i915 modeset=1. Wenn jedoch jemand X nicht installieren möchte (wie in meinem Fall), wird KMS nicht automatisch aktiviert. Dies erklärt, warum das FrameBuffer-Gerät nicht erstellt wurde.

Federico
quelle
2
Sie sollten meine Antwort trotzdem akzeptieren, da "Wie aktiviere ich KMS mit Squeeze" nicht Ihre ursprüngliche Frage war. Ich glaube, ich habe Ihre erste Frage beantwortet und Sie auf Ihren beabsichtigten Weg geleitet. Der andere Grund ist, dass Sie nur Punkte für die Vergabe von Antworten an andere Personen erhalten. Auch wenn es gut ist, sich selbst zu belohnen, wenn niemand in die Nähe kommt, macht es in diesem Fall keinen Sinn. Ihre Geldbuße hält Ihre Antwort jedoch auf dem Laufenden, oder integrieren Sie fragliche Informationen. So oder so wäre es in Ordnung. Wirklich froh, dass ich geholfen habe! Ich bin wirklich froh, dass Sie die KMS-Lösung zum Laufen gebracht haben, da sie schneller sein sollte als normales VESA.
JM Becker
1
Ich habe gerade die akzeptierte Antwort auf deine zurückgesetzt! Da ich hier ein bisschen neu bin, wusste ich nicht genau, was ich tun sollte: Platzieren Sie die Lösung in der Frage selbst, in einem Kommentar zu Ihrer akzeptierten Antwort oder posten Sie sie als neue Antwort. Ich dachte mir, dass die Leute beim Erstellen einer neuen akzeptierten Antwort zuerst die Frage lesen würden, dann Ihre Antwort, die oben steht, da sie mehr positive Stimmen hat, und dann meine Antwort ...
Federico
Während die andere Antwort gründlich ist, sollte dies die akzeptierte Antwort sein. Egal wie eloquent der Autor bittet.
Moog
-2

Sie können einen virtuellen Framebuffer wie Xvfb (X virtual framebuffer) ausprobieren.

Beschreibung des xvfb-Pakets in squeeze

Artifex
quelle
1. Dies ist ein "virtueller" FrameBuffer, kein direkter Hardware-FrameBuffer. 2. Es ist ein X-Server und speziell die Frage Nr. X.
JM Becker
-2

Solange es sich um eine Standard - Debian - Installation mit nichts Besonderem und einem Standard - Kernel handelt, sollten Sie in der Lage sein, eine VGA - Konsole zu erwerben, die das Framebuffer - Gerät mit einem Kernel - Parameter wie "vga = 792" (24 Bit 1024 × 768) verwendet ). Sicher, der Kernel meldet es als veraltet, aber es funktioniert.

Siehe http://www.kernel.org/doc/Documentation/kernel-parameters.txt zu den Kernel-Parametern finden . Interessanterweise wird dort der Parameter "vga =" nicht als veraltet angezeigt.

Stellen Sie sicher, dass Sie update-grub (2) und ähnliche Programme nach der Änderung erneut ausführen.

Schauen Sie sich auch http://packages.debian.org/squeeze/svgalib-bin an, es ist nicht perfekt, aber es ermöglicht Ihnen, einige ausgefallene Grafikaufgaben auf einer Konsole auszuführen.

aseq
quelle
3
Nein, es funktioniert unter VIELEN Umständen nicht mehr. Dies ist die Antwort, über die ich immer spreche. Wenn Sie GRUB2 verwenden, funktioniert dies nur beim Booten mit den alten 16Verzögerungen. Es ist auch veraltet, was zumindest Sie anerkennen, was pragmatisch bedeutet, dass Sie KEINE NEUEN SETUPS MIT IHM TUN. Der alte vga=Müll bootet nicht, wenn Sie Ihre Hardwaremodule deaktiviert haben /etc/modprobe.d/und viele Distributionen als solche vorkonfiguriert sind.
JM Becker
Als nächstes Problem ist svgalib-bin eine Bibliothek, kein '/ dev / fb0'-Gerät. Alles, was svgalib will, muss mit svgalib entwickelt werden. Es kann verwendet werden, um einen FB zu ersetzen, aber es ersetzt den FB nicht "buchstäblich". Ich habe letzten Kommentar tatsächlich einen Fehler gemacht, als ich sagte "Fehler beim Booten", ich meinte "Fehler beim Laden der FB, wird wahrscheinlich auf Standard-VGA zurückgreifen"
JM Becker
3
Das ist wirklich nicht einmal deine Schuld, unsere Community hinterlässt schrecklich veraltete Dokumentationen. Jeder Affe antwortet im Internet, was ein modernes Verständnis für das Biest erschwert. Viele Menschen geben sogar einfach auf, denn die eigentliche Antwort ist neu und begraben unter jahrelangem Nachdenken über veraltete Lösungen.
JM Becker
1
Der Parameter "vga =" funktioniert bei Verwendung von squeeze. Ich habe es nur vorgeschlagen, da es eine einfache, schnelle Lösung ist, anstatt zu untersuchen, durch was es ersetzt wurde. kernel.org/doc/Documentation/kernel-parameters.txt zeigt "vga =" nicht als veraltet an. Der einzige Grund, den ich kenne, liegt an einer schnellen, kaum lesbaren Boot-Meldung des Kernels ... es kommt zu Verwirrung ... dem Text von kernel.org zufolge ist "vga =" NICHT veraltet. Was sollen wir glauben?
Aseq
1
Übrigens ist mein Vorschlag, svgalib zu verwenden, weil der Benutzer nicht X verwenden möchte. Ich verstehe die Schuldigen von svgalib, aber es gibt nur wenige andere Optionen.
Aseq