![进一步阅读](https://linux22.com/image/101940/%E8%BF%9B%E4%B8%80%E6%AD%A5%E9%98%85%E8%AF%BB.png)
我目前正在尝试使用机器人操作系统制作一架自主无人机(活性氧)。为此,我安装了树莓派精简版(杰西)在一个树莓派3目前正在使用ROS动力学在上面。因为它是树莓派精简版,安装时没有附带窗口管理器或桌面环境。我决定去Openbox 窗口管理器为了方便起见,并在其上安装了终端。我只需调用sudo startx
,窗口管理器就会打开,可以通过Ctrl+ alt+ F2` 访问它。
现在我的问题在于我不理解在系统范围终端内创建新会话的过程。它首先被称为系统范围终端吗?我使用Ctrl+ Shift+调用的这些会话是什么F?其中一些可容纳显示管理器其中一些可容纳终端,虽然我想象,整个桌面环境也可以容纳。有我可以查看的手册页吗?
答案1
他们是内核虚拟终端设备,通过一个多路复用到物理帧缓冲区和人工输入设备上终端仿真器内置于内核本身的程序。对于运行在内核之上的应用程序来说,它们看起来就像任何其他终端设备,例如串行终端设备。 (他们有线路规则,但没有调制解调器控制。)
该系统实现了终端登录通过运行一个getty
程序(或等效程序)和一个login
接受用户凭据并调用的程序登录会话。
这X服务器程序还需要使用物理帧缓冲区和人机输入设备。它需要与内核终端仿真器协商共享它们。它通过分配一个虚拟终端并告诉内核将其与内核终端仿真器断开连接来实现这一点。
这就是为什么 X 服务器看起来“运行”在特定终端上。当内核终端仿真器看到用于切换到分配的虚拟终端的热键和弦时,它将帧缓冲区和人工输入设备的控制权交给 X 服务器。当 X 服务器看到切换到另一个虚拟终端的热键和弦时,X 服务器将控制权交回。
这些热键和弦不一定是对称的。在我的一个系统上,由内核终端仿真程序实现的用于切换到虚拟终端 #2 的热键和弦是Alt+ F2,而由 X 服务器实现的相同操作的热键和弦是Ctrl+ Alt+ F2。
到那个时刻图形登录, A显示管理器处理启动 X 服务器招待员程式。当然,您只是直接启动 X 服务器而不使用显示管理器。用户凭据经过身份验证后,桌面管理器显示一个桌面环境,其中包括一组X客户端不同复杂程度的应用。对于复杂的桌面环境,有一大堆服务器程序通过桌面总线(在我的一个系统上,所谓的“小巧轻量”的 GNOME 编辑器需要 D-BUS 代理和其他九个服务器程序正在运行。)
其中一些 X 客户端程序可以是其他终端模拟器、用户空间模拟器,例如 LXTerminal、Unicode RXVT、GNOME Terminal、Terminate、roxterm、evilvte、xterm 等。它们不直接使用物理帧缓冲区和人工输入设备,而是利用伪终端设备。
进一步阅读
答案2
系统使用旧的 SysVinit 或新的 systemd 进行初始化。取决于您的发行版。
SysVinit 上有运行级别。只需在终端中输入runlevel
即可获取号码
- 0 关闭电源
- 1/S 单用户模式(..为了简单起见)
- 2 多用户文本(基于 Debian 的默认设置)
- 3 多用户文本(基于 Red Hat 默认)
- 4 -
- 5 多用户+图形用户界面
- 6 重启
在 systemd 上情况有所不同。unknown
输入时出现或 错误runlevel
systemctl list-units --type=target
打印目标列表,例如:
- 图形目标
- 多用户目标
- ...
在运行级别2或者没有图形目标
你只有文本控制台。您可以通过按 CTRL+F[1-7] 在终端会话之间切换
在运行级别5或者图形目标
OpenBox、KDE 无论正在启动(~/.xinitrc
我猜),基于 X11/Xorg/Wayland/Mir 无论什么,热键的映射方式都不同。默认情况下,按 Ctrl + Alt + F2 会将您带到 tty2。