GNU/Linux >> Linux Esercitazione >  >> Linux

Quale servizio Systemd avvia la console di testo sul dispositivo Framebuffer?

Sto lavorando con una piattaforma incorporata e ho bisogno di avere /dev/fb0 chiaro per uso personale (il dispositivo accessibile tramite console seriale mentre lo schermo viene utilizzato per visualizzare informazioni, senza X.).

Ho già cambiato default.target da grafico a multiutente, ma ora si apre getty con il prompt di accesso sul dispositivo framebuffer e non riesco proprio a individuare quale il servizio è quello. Non voglio disabilitare per caso l'accesso alla console seriale e lsof non mostra nulla con /dev/fb0 aperto.

La distribuzione è Yocto Linux, se può esserti d'aiuto.

Risposta accettata:

lsof non mostra nulla con /dev/fb0 aperto.

Non lo farà. C'è un programma di emulazione di terminale integrato nel kernel Linux. Non si manifesta come un processo in esecuzione con handle di file aperti. È sovrapposto al framebuffer e al sottosistema degli eventi di input, a cui utilizza le interfacce interne del kernel per accedere. Si presenta ai sistemi in modalità applicazione come una serie di terminali virtuali del kernel dispositivi, /dev/tty1 e così via; uno pseudo-file in /sys che mostra il numero KVT attivo; e una serie di dispositivi di buffer video in stile CGA, /dev/vcsa1 e così via.

Uno di quei sistemi in modalità applicazione è ovviamente getty +logind system, che può essere configurato per funzionare su questi terminali virtuali del kernel e (come hai scoperto) è di default. Puoi facilmente sbarazzarti di getty processi utilizzando meccanismi di sistema documentati.

In un vecchio System 5 init sistema, ogni getty sarebbe un record in /etc/inittab . In un BSD init sistema, ogni getty è un record in /etc/ttys . In un sistema systemd, le cose sono un po' indirette.

  • Il demone "login", logind , conosce cose chiamate "posti" nel gergo systemd. "Seat" zero è quello con il framebuffer primario e tutti quei terminali virtuali del kernel.
  • Per quel posto, logind tenta di avviare N servizi systemd, denominati [email protected] fino a [email protected]N.service . Il valore di N è impostato in NAutoVTs impostazione in /etc/systemd/logind.conf .
  • Questi servizi di sistema vengono creati da un'unità modello di servizio , denominato [email protected] . Il parametro del modello è, come sopra, il nome del dispositivo del file del dispositivo del terminale virtuale del kernel , in /dev/ .
  • [email protected] è, nella configurazione predefinita, un collegamento simbolico a [email protected] .
  • È [email protected] che descrive l'esecuzione di un getty programma, impostato per eseguire il suo input/output tramite il file del dispositivo terminale virtuale del kernel.

Quindi, per fermare tutto questo, visita /etc/systemd/logind.conf e configura logind non avviare automaticamente alcun autovt servizi (e non prenotare terminali virtuali, se vuoi essere approfondito).

Correlati:come ridimensionare le pagine di un PDF?

Tuttavia, questo non è tutto. Il programma dell'emulatore di terminale è ancora attivo nel kernel, e qualsiasi cosa, dai messaggi di registro diretti a un kernel VT fino al regolare lampeggio del cursore, farà sì che l'emulatore di terminale interferisca con l'uso del framebuffer. Ma si tratta di codificare il programma che hai che usa il framebuffer per negoziare con il programma emulatore di terminale del kernel, a cui è già stata data risposta qui.

A proposito, l'accesso alla console seriale avviene tramite un percorso abbastanza diverso. Un generatore crea un'istanza di [email protected] template unit un tempo di avvio, istanziandolo una volta per ogni dispositivo della console del kernel che trova o di cui viene parlato.

Ulteriori letture

  • Best practice per nascondere la console virtuale durante il rendering di video su framebuffer
  • https://superuser.com/a/723442/38062
  • logind.conf . pagine di manuale di sistema. freedesktop.org.
  • sistema "multiposto". freedesktop.org.
  • systemd-getty-generator . pagine di manuale di sistema. freedesktop.org.

Linux
  1. Il sostituto corretto per Rc.local in Systemd invece di ricreare Rc.local?

  2. Linux:in che modo il kernel Linux conosce i numeri maggiori e minori del dispositivo?

  3. Linux:come determinare quale modulo contamina il kernel?

  4. Kate fornisce messaggi di debug sulla console da cui è stato avviato

  5. Come disabilitare l'accesso del kernel al journal di systemd?

Prova l'editor di testo e3 Linux

Il ciclo di vita dei test del kernel Linux

Comandi Systemctl per gestire il servizio Systemd

Gestire cgroup con systemd

Come ottenere gli indirizzi MAC dei dispositivi che non sono nella rete

Come elencare l'albero dei dispositivi del kernel