SF.*_*SF. 6 systemd framebuffer console
我正在使用嵌入式平台,需要/dev/fb0
清除供我自己使用(可通过串行控制台访问的设备,而屏幕用于显示信息,没有 X。)。
我已经default.target
从图形用户更改为多用户,但现在它在帧缓冲设备上打开 getty 并显示登录提示,但我无法找到那是哪个服务。我不想偶然禁用串行控制台登录,并且lsof
在/dev/fb0
打开时不显示任何内容。
如果有帮助的话,发行版是 Yocto Linux。
Jde*_*eBP 14
lsof
/dev/fb0
打开时不显示任何内容。
不会。Linux 内核中内置了一个终端模拟器程序。它不会表现为具有打开文件句柄的正在运行的进程。它位于帧缓冲区和输入事件子系统之上,它使用内部内核接口来访问。它以一系列内核虚拟终端设备的形式呈现给应用模式系统,/dev/tty1
等等;下面的伪文件/sys
显示了活动的 KVT 编号;以及一系列 CGA 风格的视频缓冲设备,/dev/vcsa1
等等。
这些应用程序模式系统之一当然是getty
+login
系统,它可以配置为在这些内核虚拟终端上运行,并且(如您所见)默认是。您可以getty
使用文档化的 systemd 机制轻松摆脱这些流程。
在旧的 System 5init
系统中,每个getty
都是/etc/inittab
. 在 BSDinit
系统中,每getty
一个都是/etc/ttys
. 在 systemd 系统中,事情有点间接。
logind
知道 systemd 俚语中称为“席位”的事情。“座位”零是具有主要帧缓冲区和所有这些内核虚拟终端的座位。 logind
尝试启动N 个systemd 服务,命名为autovt@tty1.service
to 。N的值在 中的设置中设置。autovt@ttyN.service
NAutoVTs
/etc/systemd/logind.conf
autovt@.service
。的模板的参数,如上述,内核虚拟终端的的设备名称的设备文件中/dev/
。autovt@.service
在默认配置中,是指向getty@.service
. getty@.service
描述了运行一个getty
程序,设置为通过内核虚拟终端设备文件进行输入/输出。因此,要停止任何此类操作,请访问/etc/systemd/logind.conf
并配置logind
不自动启动任何autovt
服务(并且不保留任何虚拟终端,如果您想对其进行彻底了解)。
然而,这还不是全部。终端模拟器程序在内核中仍然处于活动状态,从定向到内核 VT 的日志消息到光标的定期闪烁,所有内容都会导致终端模拟器干扰您对帧缓冲区的使用。但这是对使用帧缓冲区与内核终端仿真器程序协商的程序进行编码的问题,这里已经回答了这个问题。
顺便说一下,串行控制台登录是通过完全不同的途径进行的。一个发电机创建的实例serial-getty@.service
模板单元中的开机时间,每个内核控制台设备,一旦实例化它,它发现,或讲述。
logind.conf
. systemd 手册页。freedesktop.org。systemd-getty-generator
. systemd 手册页。freedesktop.org。 归档时间: |
|
查看次数: |
7755 次 |
最近记录: |