首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X11如何与内核交互/执行登录

X11如何与内核交互/执行登录
EN

Unix & Linux用户
提问于 2017-04-26 07:42:34
回答 2查看 2.4K关注 0票数 16

正如我所理解的基于文本的与Linux内核的交互,一个名为init的程序启动getty (或agetty),该程序连接到/dev下的TTY设备之一,并提示输入用户名。之后,运行一个名为login的程序,该程序提示输入用户的密码,如果正确,则启动用户的首选shell (例如bashcsh)。此时,bash通过TTY设备与内核进行交互。

这个登录过程是如何为X11工作的?X11是否通过TTY与内核交互?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2017-04-26 08:47:28

shell使用TTY设备(如果连接到TTY设备)来获取用户输入和产生输出,而不是其他设备。shell连接到TTY的事实是由getty决定的(并由login保存);大多数情况下,shell并不关心它是否连接到TTY。它与内核的交互通过系统调用进行。

X11服务器不知道登录(就像shell一样)。X11中的登录过程以两种方式工作:

  • 用户要么登录到终端,然后启动X(通常使用startx);
  • 或者使用“显示管理器”启动X服务器,该管理器提示用户输入登录和密码(或任何所需的身份验证信息)。

X11服务器获取输入和产生输出的方式与shell非常不同。在输入端,X知道shell不需要的设备,从鼠标开始;它通常使用自己的驱动程序直接管理这些设备。即使对于键盘,X也有自己的驱动程序来补充内核的处理(据我所知,例如,在Linux上,X使用TTY驱动程序从键盘读取原始输入,然后使用自己的驱动程序解释)。在输出端,X直接驱动显示设备,不需要内核的帮助,也不需要通过TTY设备。

但是,许多系统上的X11服务器确实使用TTY设备来与内核同步:在支持虚拟终端的系统上,X需要“保留”它正在运行的VT,并处理VT切换。在此过程中还有其他一些微妙之处;因此,在Linux上,X调整TTY以禁用GPM (一个允许使用鼠标文本模式的程序)。X也可以共享VT..。

在过去的一些工作站上,与内核之间没有太多的显式同步;如果不运行xconsole,最终可能会在X11显示的顶部以“文本模式”显示内核消息。

票数 17
EN

Unix & Linux用户

发布于 2017-04-26 11:49:07

内核绝对没有登录或登录的概念-它只关心在某个用户ID下运行的进程(这也与内核无关!)登录程序(无论是终端上的getty还是X11显示管理器上的getty)以root方式运行,然后使用setuid()和相关调用为本地解析器(NSS和libc内容--也不是内核业务)建议使用的任何UID设置环境。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/361352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档