GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welcher Systemd-Dienst startet die Textkonsole auf dem Framebuffer-Gerät?

Ich arbeite mit einer eingebetteten Plattform und brauche /dev/fb0 klar für meinen eigenen Gebrauch (das Gerät, auf das über die serielle Konsole zugegriffen werden kann, während der Bildschirm zur Anzeige von Informationen verwendet wird, ohne X.).

Ich habe default.target bereits geändert von grafisch zu Mehrbenutzer, aber jetzt öffnet es getty mit Anmeldeaufforderung auf dem Framebuffer-Gerät und ich kann einfach nicht welches finden Dienst ist das. Ich möchte nicht zufällig die Anmeldung an der seriellen Konsole und lsof deaktivieren zeigt nichts mit /dev/fb0 öffnen.

Die Distribution ist Yocto Linux, falls Ihnen das weiterhilft.

Akzeptierte Antwort:

lsof zeigt nichts mit /dev/fb0 öffnen.

Es wird nicht. Es gibt ein Terminal-Emulator-Programm, das in den Linux-Kernel integriert ist. Es manifestiert sich nicht als laufender Prozess mit offenen Dateihandles. Es ist über dem Framebuffer und dem Input-Event-Subsystem geschichtet, auf das es über interne Kernel-Schnittstellen zugreift. Es präsentiert sich für Systeme im Anwendungsmodus als eine Reihe von virtuellen Kernel-Terminals Geräte, /dev/tty1 und so weiter; eine Pseudo-Datei unter /sys das zeigt die aktive KVT-Nummer; und eine Reihe von Videopuffergeräten im CGA-Stil, /dev/vcsa1 und so weiter.

Eines dieser Systeme im Anwendungsmodus ist natürlich getty +login System, das für den Betrieb auf diesen virtuellen Kernel-Terminals konfiguriert werden kann, und (wie Sie festgestellt haben) standardmäßig ist. Sie können getty leicht loswerden Prozesse mit dokumentierten systemd-Mechanismen.

In einem alten System 5 init System, jedes getty wäre ein Eintrag in /etc/inittab . In einem BSD init System, jedes getty ist ein Eintrag in /etc/ttys . In einem systemd-System sind die Dinge etwas indirekt.

  • Der „Login“-Dæmon, logind , kennt Dinge, die im systemd-Slang „Seats“ genannt werden. „Platz“ Null ist derjenige mit dem primären Framebuffer und all diesen virtuellen Kernel-Terminals.
  • Für diesen Platz logind an Versuche, N zu starten systemd-Dienste mit dem Namen [email protected] durch zu [email protected]N.service . Der Wert von N wird in den NAutoVTs gesetzt Einstellung in /etc/systemd/logind.conf .
  • Diese systemd-Dienste werden aus einer Dienstvorlageneinheit erstellt , benannt [email protected] . Der Vorlagenparameter ist, wie oben, der Gerätename der Gerätedatei des virtuellen Kernel-Terminals , in /dev/ .
  • [email protected] ist in der Standardkonfiguration ein symbolischer Link zu [email protected] .
  • Es ist [email protected] das beschreibt, wie ein getty ausgeführt wird Programm, das seine Ein-/Ausgabe über die Datei des virtuellen Terminalgeräts des Kernels durchführt.

Um all dies zu stoppen, besuchen Sie /etc/systemd/logind.conf und konfigurieren Sie logind autovt nicht automatisch zu starten Dienste (und keine virtuellen Terminals zu reservieren, wenn Sie es genau wissen wollen).

Verwandt:Wie kann man die Seiten eines PDFs skalieren?

Das ist jedoch noch nicht alles. Das Terminal-Emulator-Programm ist immer noch im Kernel aktiv, und alles, von Protokollnachrichten, die an ein Kernel-VT gerichtet sind, bis hin zum regelmäßigen Blinken des Cursors, wird dazu führen, dass der Terminal-Emulator Ihre Verwendung des Framebuffers stört. Aber das ist eine Frage der Codierung des Programms, das Sie haben, das den Framebuffer verwendet, um mit dem Kernel-Terminal-Emulator-Programm zu verhandeln, das hier bereits beantwortet wurde.

Die Anmeldung an der seriellen Konsole erfolgt übrigens auf einem ganz anderen Weg. Ein Generator erstellt eine Instanz von [email protected] Template-Einheit eine Startzeit, instanziiert sie einmal für jedes Kernel-Konsolengerät, das sie findet oder über das sie informiert wird.

Weiterführende Literatur

  • Best Practice zum Ausblenden der virtuellen Konsole beim Rendern von Video in Framebuffer
  • https://superuser.com/a/723442/38062
  • logind.conf . systemd Handbuchseiten. freedesktop.org.
  • „Mehrplatz“-Systemd. freedesktop.org.
  • systemd-getty-generator . systemd Handbuchseiten. freedesktop.org.

Linux
  1. Der richtige Ersatz für Rc.local in Systemd, anstatt Rc.local neu zu erstellen?

  2. Linux – Woher kennt der Linux-Kernel Geräte-Major- und Minor-Nummern?

  3. Linux – Wie kann man feststellen, welches Modul den Kernel verschmutzt?

  4. Kate gibt Debug-Meldungen auf der Konsole aus, von der es gestartet wird

  5. Wie deaktiviere ich die Kernel-Anmeldung im systemd-Journal?

Probieren Sie den e3-Linux-Texteditor aus

Der Lebenszyklus des Linux-Kernel-Testens

Systemctl-Befehle zum Verwalten des Systemd-Dienstes

10 praktische systemd-Befehle:Eine Referenz

Verwalten von cgroups mit systemd

Behalten Sie einen Verlauf aller Änderungen an einer Textdatei