计算机启动到 /dev/tty0 而不是 /dev/tty1

计算机启动到 /dev/tty0 而不是 /dev/tty1

我有两台计算机,都运行 Debian Bookworm,并升级到相同的程度并安装了最新的软件。两台机器都配置为启动到文本终端,这是它们在启动 X 之前需要执行的操作。

问题是一台计算机启动到/dev/tty0而不是,/dev/tty1这意味着在计算机 2 上运行的 xinit 命令在计算机 1 上不起作用。

计算机 1 的内核启动时/dev/tty0具有以下权限:

crw------- 1 ben  tty 4, 0 May 23 16:46 /dev/tty0
crw--w---- 1 root tty 4, 1 May 23 16:46 /dev/tty1
crw------- 1 ben  tty 4, 2 May 23 16:13 /dev/tty2

计算机 2 的内核启动时/dev/tty1具有以下权限:

crw--w---- 1 root tty 4, 0 May 23 05:55 /dev/tty0
crw--w---- 1 ben  tty 4, 1 May 23 16:29 /dev/tty1
crw------- 1 ben  tty 4, 2 May 23 16:13 /dev/tty2

启动适用于计算机 2 但不适用于计算机 1 的 X 的命令是:

xinit /home/ben/.xinitrc -- /usr/bin/X :0 vt1

用户 ben 在计算机 1 上没有访问 的权限tty1,因此 X 失败并显示一条no permission消息。

要在计算机 1 上启动 X,用户 ben 需要将xinit命令更改为使用vt2,然后导航到 来tty2运行它。

对我来说,令人困惑的是/dev/tty1计算机 1 上不提供该功能。

计算机 1 显示的终端为:

Ctrl+ alt+F1得到/dev/tty0

Ctrl+ alt+F2得到/dev/tty2

Ctrl+ alt+F3得到/dev/tty3

而在计算机 2 上,终端显示为:

Ctrl+ alt+F1得到/dev/tty0

Ctrl+ alt+F2得到/dev/tty1

Ctrl+ alt+F3得到/dev/tty2

/dev/tty1为了在计算机 1 上启动,我添加了console=/dev/tty1.机器冻结,屏幕空白,光标在左上方闪烁。它需要一个救援磁盘来重写grub.cfg文件并删除选项才能正常启动。

Systemd在两台机器上显示相同的active and running输出。[email protected]

我的问题是:如何配置计算机,使其/dev/tty1出现在计算机 1 上,从而使计算机 1 启动到dev/tty1而不是启动到/dev/tty0

我在这里问,因为在其他地方找不到答案。

编辑:感谢所有回复者!

cat /proc/fb 在两台机器上输出相同的内容:0 nouveaudrmfb。

我想我可以在启动时编写脚本更改 tty0 和 tty1 的所有权,但这感觉像是一种解决方法。这里没有其他机器需要这个。

答案1

设备节点的/dev/tty0作用类似于“当前选择的虚拟控制台是什么”的硬链接,尽管它实际上是在虚拟控制台驱动程序代码中实现的。

作为console=引导选项值,/dev/tty0意味着“我想使用通常的 KVM 物理控制台(及其整套虚拟控制台)作为系统控制台”。正如您所发现的,引导选项console=/dev/tty1无效(至少在 x86 硬件上):

通常root将拥有任何注销的 tty 设备,并且登录的用户将拥有登录进程分配给他们的 tty 设备的所有权。注销应该将 tty 设备归还给 的所有权root。但是,如果用户ben已成功获得 的所有权/dev/tty0,这可能意味着他们可能能够使用它(例如通过 SSH 连接登录)将内容注入到在任何实际虚拟控制台上本地登录的人的会话中 ( /dev/tty[1..N]) 。

的所有权/dev/tty0永远不应该改变根所有权。

您能看到以 root 身份运行的进程tty0fuser /dev/tty0?正常情况下不应该有。

[email protected]定义吗?如果是,这可能会导致问题:/dev/tty0永远不应该用于常规登录。

相关内容