在系统启动时配置 getty
服务,通常是为了设置虚拟终端(如控制台登录)或串行终端(如通过串行端口连接的终端设备)的登录功能。以下是不同 Linux 系统中配置 getty
服务的方法:
1. 基于 SysV init 的系统(如较旧的 Ubuntu 版本)
这些系统使用 /etc/inittab
文件来管理启动服务。
- 查看当前配置:打开
/etc/inittab
文件,会看到类似以下的行:
1:2345:respawn:/sbin/getty 38400 tty1
这表示在运行级别 2、3、4、5 下,系统会在 tty1
虚拟终端上以 38400 波特率启动 getty
,并且如果 getty
进程结束,系统会自动重新启动它(respawn
)。
- 修改配置:可以手动编辑
/etc/inittab
文件来修改getty
的设置。例如,要为一个串行终端/dev/ttyS0
添加getty
服务,可以添加如下一行:
T0:2345:respawn:/sbin/getty -L ttyS0 9600 vt100
这里 -L
表示不进行调制解调器控制,9600
是波特率,vt100
是终端类型。
- 使配置生效:编辑完成后,重启系统或运行以下命令使更改生效:
sudo init q
2. 基于 systemd 的系统(如较新的 Ubuntu、CentOS 7+)
这些系统使用 systemd
来管理服务,getty
服务的配置文件通常位于 /etc/systemd/system/getty@.service.d/
或 /etc/systemd/system/getty@ttyS0.service
等位置。
- 查看当前配置:可以使用以下命令查看
getty
服务的状态:
systemctl status getty@tty1.service
这将显示 tty1
虚拟终端上 getty
服务的运行状态。
- 修改配置:如果需要修改
getty
的配置,可以创建或编辑一个服务的覆盖文件。例如,为/dev/ttyS0
串行终端创建一个覆盖文件:
sudo systemctl edit getty@ttyS0.service
在打开的编辑器中添加以下内容:
[Service]
ExecStart=
ExecStart=-/sbin/agetty -L %I 9600 vt100
这里 -L
表示不进行调制解调器控制,9600
是波特率,vt100
是终端类型。注意 ExecStart=
后面的 =
是为了清除默认设置,然后重新定义 ExecStart
。
- 使配置生效:保存文件后,运行以下命令重新加载
systemd
配置并重启getty
服务:
sudo systemctl daemon-reload
sudo systemctl restart getty@ttyS0.service
3. 配置虚拟终端和串行终端
- 虚拟终端:在大多数桌面环境中,系统默认会在多个虚拟终端(如
tty1
到tty6
)上启动getty
服务。这些服务通常由systemd
管理,可以通过上述方法进行配置。 - 串行终端:串行终端通常用于嵌入式系统或需要通过串行端口连接的设备。配置时需要指定正确的端口名称(如
ttyS0
或ttyUSB0
)和通信参数(波特率、数据位、停止位等)。
通过这些方法,你可以根据需要在系统启动时配置 getty
服务,以支持不同的终端设备和登录需求。