我在没有 DM 的情况下在 Arch 上运行 xfce。使用 xorg-xinit 来启动 x。默认情况下,启动后,我在 tty1 上收到登录提示,一切正常。
但是,我想更改在 tty6(或其他)上的登录提示符处删除的默认行为,而无需手动按 Ctrl+Alt+F6。
我花了很多时间阅读各种资源,Arch wiki,手册页,http://0pointer.de/blog/projects/systemd-docs.html, ETC。
但是,我仍然不明白。
我尝试过手动添加和删除文件 /etc/systemd/system/getty.target.wants/[电子邮件受保护]和[电子邮件受保护]。或者也使用 systemctl 来启用和禁用它们。
作为测试,还编辑 /usr/lib/systemd/system/ 的最后一行[电子邮件受保护]DefaultInstance=tty1 到 DefaultInstance=tty7,以及以上所有的组合。如果有效的话,会在 /etc/systemd/system 中创建。
我在 Arch 论坛上询问并得到了一个非常笼统的答复,大部分是蟋蟀的鸣叫声。我想做的事是否因某种原因而遭到反对?
我最终只是在 /etc/systemd/system 中创建一个服务文件,该文件调用其中包含 chvt 的 bash one liner。这给了我我想要的,但现在我无法滚动我设置为在 tty1 上不清除的启动消息。这个解决方案似乎也是一个糟糕的附加黑客。
执行此操作的正确方法是什么?
答案1
DefaultInstance 指的是服务的 systemd 实例,而不是应该作为父服务的实例。在包括 Debian 在内的许多 Linux 发行版上,inittab 仍然是生成 ttys 的地方。服务文件或多或少是为了跟踪它。
通常,显示管理器决定起始 tty 并在 tty7 或更高版本上生成一个 tty,然后切换到它,就像 chvt 一样。由于您没有使用 xinit 不会生成新的 tty,因此它只会在当前 TTY 上打开 X。请注意,X 通常使用 tty7 而不是 tty6。您应该在这里参考 Arch Linux wiki:https://wiki.archlinux.org/index.php/Xinit关于如何使用xinit。
所以你的选择是:
- 使用窗口管理器
- 使用多座位
- 自动登录
换句话说,您的窗口管理器负责处理会话身份验证。如果没有它,您将依赖登录的 tty 来实现此目的。因此,切换到另一个也需要登录它,在这种情况下,您必须切换到它并无论如何登录(或使用自动登录),这就是为什么显示管理器要求您提供登录凭据。
如果您的设置正确,您将无法切换 tty,除非它们自动登录,因为 startx 与 tty 绑定,除非您重新验证窗口管理器所做的事情。
答案2
解决了!
好的,由于没有更多回复,我将分享我所做的详细信息,以在重新启动后在 tty7 上出现登录提示。
1)在〜/ bin中创建了一行脚本“change.login.tty”
2)在/etc/systemd/system/中创建一个systemd服务文件“change.login.tty.service”
3)启用“change.login.tty.service”
$ systemctl enable change.login.tty.service
4) 将 /etc/systemd/logind.conf 编辑为 #NAutoVTs=7 和 #ReserveVT=6
5) 在 tty7 上启动 getty,(可能没有必要)
$ systemctl enable getty@tty7
6) 重新启动,在 tty7 上按提示登录并享受。
〜/bin/change.login.tty
#!/bin/bash
# This changes the login tty #
chvt 7
/etc/systemd/system/change.login.tty.service
[Unit]
Description=Change login tty number.
[Service]
Type=idle
ExecStart=/home/[user name]/bin/change.login.tty
[Install]
WantedBy=multi-user.target
/etc/systemd/logind.conf
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See logind.conf(5) for details.
[Login]
#NAutoVTs=7
#ReserveVT=7
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
#HandlePowerKey=poweroff
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
#HandleLidSwitch=suspend
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#HoldoffTimeoutSec=30s
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=yes
#InhibitorsMax=8192
#SessionsMax=8192
#UserTasksMax=33%
请通过发帖纠正错误或解释更简单的解决方案,而不是仅仅投票或指出错误。
它对我有用,你的结果可能会有所不同。