TTY自动登录
关键程序getty
以设置TTY1自动登录为例:
编辑 /etc/systemd/system/getty@tty1.service.d/autologin.conf 添加内容:
另一种方法是用
systemctl edit getty@tty1.service
命令,但实测debian11无法通过这种方法添加,只能手动创建配置文件,可能是systemd版本的原因。
[Service]
#自动启动X时添加#Type=simple
ExecStart=
#Archwiki已更新为后面的版本#ExecStart=-/sbin/agetty --autologin 自动登录用户名 --noclear %I 38400 linux
ExecStart=-/sbin/agetty -o '-p -f -- \\u' --noclear --autologin 自动登录用户名 %I $TERM
之后重启就可以看到配置已生效。
以此基础,TTY自动启动X,首先配置好startx:
如果使用Bash, 编辑 ~/.bash_profile
,加入如下内容;如果文件不存在,从 /etc/skel/.bash_profile
复制一个框架版本。
如果使用 zsh,则编辑 ~/.zprofile
。
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
exec startx
fi
串口终端配置
参考串口使用指南。
连接串口的工具除了minicom,还可以用screen(临时用)、moserial(GUI界面)等。
注意不同的设备串口设备名称可能不一样,例如:X86虚拟机是ttyS0,ARM64虚拟机是ttyAMA0
配置串口终端自动登录,编辑serial-getty的服务配置 /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf 添加内容:
[Service] ExecStart= ExecStart=-/sbin/agetty -o '-p -f -- \\u' --keep-baud --autologin 自动登录用户名 115200,57600,38400,9600 - $TERM
以上配置不足以实现免密,参考树莓派配置串口免密root登录的流程,以PVE下的debian11虚拟机配置网页串口root免密为例:
执行
cp /usr/lib/systemd/system/serial-getty@.service /etc/systemd/system/serial-getty@ttyS0.service
,注意这里@串口名要与系统中实际使用的串口名一致,然后编辑拷贝过来的service文件中[Service]下的ExecStart字段添加 --autologin 自动登录用户名 参数(改好的示例:ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud --autologin root 115200,57600,38400,9600 %I $TERM
)这里也存在前面配置tty自动登录时的问题,无法通过systemctl edit编辑配置文件,只能手动复制修改。
- 编辑/etc/pam.d/login,在顶部添加:auth sufficient pam_listfile.so item=tty sense=allow file=/etc/rootshelltty onerr=fail apply=root
- 执行
echo /dev/ttyS0 > /etc/rootshelltty
添加串口root免密权限,注意这里串口名要与系统中实际使用的串口名一致。 - 执行
systemctl daemon-reload && systemctl restart serial-getty@ttyS0.service
启用配置