Linux agetty 命令及实际应用示例

LinuxBeginner
立即练习

介绍

在本实验中,我们将探索 Linux 中的 agetty 命令及其实际应用。实验内容包括理解 agetty 命令的用途和用法、配置它以支持串行控制台访问,以及管理用户登录过程。我们将学习 agetty 如何负责显示登录提示、处理用户登录过程、初始化终端设置,并在成功登录后启动用户的 shell。此外,我们还将配置 agetty 以在系统中启用串行控制台访问。本实验将帮助你全面理解 agetty 命令及其在 Linux 环境中管理用户登录过程中的作用。

Linux 命令速查表

理解 agetty 命令的用途和用法

在这一步骤中,我们将探索 Linux 中 agetty 命令的用途和用法。agetty 命令是一个用于管理系统虚拟控制台或串行端口上用户登录过程的程序。

首先,让我们检查系统中安装的 agetty 版本:

agetty --version

示例输出:

agetty (util-linux 2.37.2)

agetty 命令负责以下任务:

  • 显示登录提示
  • 处理用户登录过程
  • 初始化终端设置
  • 在成功登录后启动用户的 shell

为了理解 agetty 的基本用法,我们可以运行以下命令:

man agetty

这将打开 agetty 命令的手册页,提供有关其选项和用法的详细信息。

配置 agetty 以启用串行控制台访问

在这一步骤中,我们将配置 agetty 以在系统中启用串行控制台访问。

首先,让我们通过检查 /etc/inittab 文件来查看 agetty 的当前配置(注意:在 Ubuntu 22.04 中,/etc/inittab 文件不再使用,因此我们将使用 systemd 配置):

sudo cat /etc/systemd/system/getty@.service

这将显示 getty 服务的默认配置,agetty 使用该服务来管理登录过程。

接下来,让我们配置 agetty 以启用串行控制台访问。我们将为串行控制台创建一个新的 systemd 服务文件:

sudo nano /etc/systemd/system/serial-getty@.service

将以下内容添加到文件中:

[Unit]
Description=Serial Getty on %I
After=systemd-user-sessions.service plymouth-quit-wait.service
[Service]
ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 --noclear %I $TERM
Type=idle
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes
[Install]
WantedBy=getty.target

此配置将 agetty 设置为在 115200、38400 和 9600 波特率的串行控制台上监听,并在服务崩溃时自动重启。

保存文件并启用新的 systemd 服务:

sudo systemctl enable serial-getty@ttyS0.service
sudo systemctl start serial-getty@ttyS0.service

这将为 ttyS0 设备上的串行控制台启动 agetty 进程。

使用 agetty 管理用户登录过程

在这最后一步中,我们将探索如何使用 agetty 命令管理用户登录过程。

首先,让我们创建一个新的用户账户,用于测试登录过程:

sudo useradd -m testuser
sudo passwd testuser

这将创建一个名为 "testuser" 的新用户账户,并为该账户设置密码。

接下来,我们可以使用 agetty 命令模拟用户登录过程。运行以下命令:

sudo agetty --login-program /bin/login --autologin testuser tty1

此命令将启动一个 agetty 进程,自动登录到 tty1 虚拟控制台上的 "testuser" 账户。

现在,你可以切换到 tty1 控制台(通常通过按 Ctrl+Alt+F1 访问),你应该会看到用户已登录为 "testuser"。

要终止 agetty 进程,请在运行 agetty 命令的终端中按 Ctrl+C。

总结

在本实验中,我们首先探索了 agetty 命令的用途和用法,该命令用于管理系统虚拟控制台或串行端口上的用户登录过程。我们了解到,agetty 负责显示登录提示、处理用户登录过程、初始化终端设置,并在成功登录后启动用户的 shell。

接下来,我们配置了 agetty 以在系统中启用串行控制台访问。我们为串行控制台创建了一个新的 systemd 服务文件,该文件设置 agetty 监听串行端口并处理串行控制台用户的登录过程。

Linux 命令速查表