• 自定义串口终端登陆界面,客制化getty


    linux在系统初始化完成后总是会提供一个登陆界面。

    这个界面是由getty或者agetty程序产生的,输入用户名后会调用login程序进行密码验证。

    现在在嵌入式arm产品的开发中遇到这样一个需求:在串口终端不登陆的情况下显示一些自定义信息,例如IP地址。

    解决方案如下:

    1.如果只是显示一些简单的静态信息,修改/etc/issue文件即可。

    2.复杂情况,需要动态生成内容或者需要与用户交互。可以考虑用自己的程序代替getty。

    我这里讲第二种情况。

    1. 找到调用getty/agetty程序的位置

    systemd系统中可能在/lib/systemd/system/serial-getty@.service。

    下图是将agetty换成了我自己的脚本mygetty。

    2. 自己的程序中重定向输入输出到终端

    我自己的登陆程序中简单的输出欢迎语句,如果用户输入1,则切换到默认的getty,否则重复显示欢迎语句。

    最关键的点就是输入输出重定向。

    脚本中$1=%I,其实就是终端名,例如ttymxc1。

    shell脚本实现如下:

    #!/bin/sh
    
    tty=$1
    
    while true
    do
            echo 'Welcome!' > /dev/$tty
            echo *Enter 1 to switch to the login terminal > /dev/$tty
            read value </dev/$tty
            if [ "$value" = '1' ];then
                    exec /sbin/agetty -8 -L $tty 115200 xterm
            fi
    done
  • 相关阅读:
    C# 文件重命名
    C# 获取图像文件
    我开通了博客
    C# 图像截取
    C# 从txt读取内容
    Linux 下查看用户组信息
    部署Jenkins完整记录
    一篇文章搞定Java注解^_^
    Java基础之接口
    枚举让盗版美国总统wcc给你整明白哈哈
  • 原文地址:https://www.cnblogs.com/real-bert/p/14782293.html
Copyright © 2020-2023  润新知