GNU/Linux >> Znalost Linux >  >> Linux

Která služba Systemd spouští textovou konzoli na zařízení Framebuffer?

Pracuji s embedded platformou a potřebuji mít /dev/fb0 jasné pro mé vlastní použití (zařízení přístupné přes sériovou konzoli, zatímco obrazovka slouží k zobrazení informací, bez X.).

Již jsem změnil default.target z grafického na víceuživatelské, ale nyní se na zařízení s framebufferem otevře getty s výzvou k přihlášení a já prostě nemůžu najít které služba je taková. Nechci náhodou zakázat přihlášení k sériové konzoli a lsof nezobrazuje nic s /dev/fb0 otevřít.

Distribuce je Yocto Linux, pokud to nějak pomůže.

Přijatá odpověď:

lsof nezobrazuje nic s /dev/fb0 otevřít.

nebude. V jádře Linuxu je zabudován program emulátoru terminálu. Neprojevuje se jako běžící proces s otevřenými úchyty souborů. Je navrstvený na framebufferu a subsystému vstupních událostí, ke kterému používá interní rozhraní jádra pro přístup. Systémům v aplikačním režimu se prezentuje jako řada kernel virtuálních terminálů zařízení, /dev/tty1 a tak dále; pseudosoubor pod /sys který ukazuje aktivní číslo KVT; a řadu video vyrovnávací paměti ve stylu CGA, /dev/vcsa1 a tak dále.

Jedním z těchto systémů v aplikačním režimu je samozřejmě getty +login systém, který lze nakonfigurovat tak, aby fungoval na těchto virtuálních terminálech jádra, a (jak jste zjistili) je ve výchozím nastavení. Můžete se snadno zbavit getty procesy využívající zdokumentované systemd mechanismy.

Ve starém systému 5 init systém, každý getty by byl záznam v /etc/inittab . V init BSD systém, každý getty je záznam v /etc/ttys . V systemd systému jsou věci trochu nepřímé.

  • Démon „login“, logind , ví o věcech, které se ve slangu systemd nazývají „sedadla“. „Seat“ nula je ta s primárním framebufferem a všemi těmito virtuálními terminály jádra.
  • Pro toto místo se logind pokusy o spuštění N systemd services, pojmenované [email protected] až po [email protected]N.service . Hodnota N se nastavuje v NAutoVTs nastavení v /etc/systemd/logind.conf .
  • Tyto systémové služby jsou vytvořeny z jednotky šablony služby s názvem [email protected] . Parametr šablony je, jak je uvedeno výše, název zařízení souboru zařízení virtuálního terminálu jádra , v /dev/ .
  • [email protected] je ve výchozí konfiguraci symbolický odkaz na [email protected] .
  • Je [email protected] který popisuje spuštění getty program, nastavte tak, aby prováděl svůj vstup/výstup prostřednictvím souboru virtuálního terminálového zařízení jádra.

Chcete-li cokoli z toho zastavit, navštivte /etc/systemd/logind.conf a nakonfigurujte login aby se automaticky nespouštěly žádné autovt služby (a nerezervovat si žádné virtuální terminály, chcete-li si to důkladně prostudovat).

Související:Jak změnit velikost stránek PDF?

To však není vše. Program terminálového emulátoru je v jádře stále aktivní a vše od protokolových zpráv směrovaných do jádra VT až po pravidelné blikání kurzoru způsobí, že emulátor terminálu naruší vaše používání framebufferu. Ale to je záležitost kódování programu, který máte, který používá framebuffer k vyjednávání s programem emulátoru terminálu jádra, což zde již bylo zodpovězeno.

Mimochodem, přihlášení k sériové konzoli probíhá zcela jinou cestou. generátor vytvoří instanci [email protected] template unit čas spouštění, který vytvoří instanci jednou pro každé zařízení konzoly jádra, které najde nebo se o něm dozví.

Další čtení

  • Osvědčený postup pro skrytí virtuální konzole při vykreslování videa do framebufferu
  • https://superuser.com/a/723442/38062
  • logind.conf . systémové manuálové stránky. freedesktop.org.
  • „vícemístný“ systemd. freedesktop.org.
  • systemd-getty-generator . systémové manuálové stránky. freedesktop.org.

Linux
  1. Správná náhrada Rc.local v Systemd místo opětovného vytvoření Rc.local?

  2. Linux – Jak linuxové jádro zná hlavní a vedlejší čísla zařízení?

  3. Nejlepší postup pro skrytí virtuální konzole při vykreslování videa do Framebufferu?

  1. Jak zastavit službu systemd

  2. Jak řeknu v servisním souboru systemd, když je USB připraveno?

  3. Jak zakážu přihlašování jádra do deníku systemd?

  1. Jak získat MAC adresy zařízení, která nejsou v síti

  2. Jak vypsat strom zařízení jádra

  3. Jaký je rozdíl mezi partx a kpartx?