Linux嵌入式设备修改串口密码

参考资料:
https://blog.csdn.net/screaming/article/details/53083675
https://www.cnblogs.com/subo_peng/p/4882813.html


一、相关概念

1、在init进程启动后,进程首先执行/etc/inittab文件,inittab是一个不可执行的文本文件,它由若干行指令所组成。该文件语法下面介绍,一般包括三项内容就可以启动。其中主要的一项内容就是::sysinit:/etc/rc,目的是初始化要执行的脚本配置文件,在/etc/rc中则主要是配置系统;另一项内容是::respawn:-/usr/sbin/xxx,xxx一般为Shell;最后一个重要的项是::shutdown:/bin/umount -a -r ,在系统关机的时候执行umount命令卸载所有文件系统,并且在卸载失败时用只读模式重新安装以保护文件系统。

2、命令解析:
/sbin/getty -L ttyS0 0 vt100
监听串口的连接,如果有连接,则开启一个shell进行服务;

1) /dev/ttySn:串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。这些串行端口设备通常被称为终端设备,它的最大用途就是用来连接终端。这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0), /dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0), (4,1)等,分别对应于DOS系统下的COM1、COM2等。若要向一个端口发送数据,可以在命令行上把标准输出重定向到这些特殊文件名上即可。例如, 在命令行提示符下键入:echo test > /dev/ttyS1会把单词”test”发送到连接在ttyS1(COM2)端口的设备上。

2)VT100/ VT102 /VT200 /Xterm /linux Vshell 等有什么区别? 
    这些都是本地SecureCRT传输编码协议的选择类型,只要和被连接端保持一致即可正常通信;VT100表示终端只负责显示和输入,程序在远程主机上运行。

3) inittab文件中每一行的格式如下所示:(busybox的根目录下的example文件夹下有详尽的inittab文件范例)     

      id:runlevel:action:process

      本文用到的几个action选项定义如下:

      sysinit:为init提供初始化命令行的路径;

      respawn:每当相应的进程终止执行便会重新启动;

      shutdown:当系统关机时,执行相应的进程;

      参考:https://blog.csdn.net/the_wan/article/details/108585194


二、修改inittab配置文件


1、修改前:
# cat /etc/inittab 

::sysinit:/etc/init.d/rcS

#ttyS0::respawn:/sbin/getty -L ttyS0 0 vt100
::respawn:-/bin/sh

null::shutdown:/bin/umount -a -r

2、检测当前是哪个串口设备
        这个ttyS0是串口设备的设备文件但是不同的系统,设备文件名由于串口驱动的不同而不同,那么如何确认自己的串口设备是哪一个呢?
检测方法一:
1)cd /dev //打开显示设备文件的文件夹 dev
ls ttyS* //显示所有前四个字母是ttyS的设备文件
2)确定是哪个串口设备: echo test > /dev/ttyAMA0;只有ttyAMA0可以打印出 test 说明ttyAMA0就是我要找的串口设备文件。
# cd /dev/
# ls -al tty*
crw-rw----    1 root     root        5,   0 Jan  1 08:00 tty
crw-r--r--    1 root     root        4,   0 Jan  1 08:00 tty0
crw-r--r--    1 root     root        4,   1 Jan  1 08:00 tty1
crw-------    1 root     root      204,  64 Jan  1 08:08 ttyAMA0
crw-r--r--    1 root     root        4,  70 Jan  1 08:00 ttyH0
crw-r--r--    1 root     root        4,  64 Jan  1 08:00 ttyS0
crw-rw----    1 root     root        3,   0 Jan  1 08:00 ttyp0
crw-rw----    1 root     root        3,   1 Jan  1 08:00 ttyp1
crw-rw----    1 root     root        3,   2 Jan  1 08:00 ttyp2
crw-rw----    1 root     root        3,   3 Jan  1 08:00 ttyp3
crw-rw----    1 root     root        3,   4 Jan  1 08:00 ttyp4
crw-rw----    1 root     root        3,   5 Jan  1 08:00 ttyp5
crw-rw----    1 root     root        3,   6 Jan  1 08:00 ttyp6
crw-rw----    1 root     root        3,   7 Jan  1 08:00 ttyp7
crw-rw----    1 root     root        3,   8 Jan  1 08:00 ttyp8
crw-rw----    1 root     root        3,   9 Jan  1 08:00 ttyp9
crw-rw----    1 root     root        3,  10 Jan  1 08:00 ttypa
crw-rw----    1 root     root        3,  11 Jan  1 08:00 ttypb
crw-rw----    1 root     root        3,  12 Jan  1 08:00 ttypc
crw-rw----    1 root     root        3,  13 Jan  1 08:00 ttypd
crw-rw----    1 root     root        3,  14 Jan  1 08:00 ttype
crw-rw----    1 root     root        3,  15 Jan  1 08:00 ttypf

# echo test > /dev/ttyAMA0 
test

检测方法二:
# cat /proc/cmdline 
isolcpus=3 root= console=ttyAMA0 earlyprintk debug irqaffinity=0 pci=pcie_bus_safe

可以看到串口设备的设备文件是ttyAMA0;

3、修改inittab
将 ttyS0::respawn:/sbin/getty -L ttyS0 0 vt100 中的ttyS0替换成ttyAMA0。即为 ttyAMA0::respawn:/sbin/getty -L ttyAMA0 0 vt100 
修改后:
# cat /etc/inittab 

::sysinit:/etc/init.d/rcS

ttyAMA0::respawn:/sbin/getty -L ttyAMA0 0 vt100
#::respawn:-/bin/sh

null::shutdown:/bin/umount -a -r


三、修改串口passwd


        在命令行下敲入passwd,这时系统会提示你给root设置一个密码,设定密码并确认密码后reboot重新启动。重启后就会需要用户名跟密码。
1)串口密码123456
# passwd
Changing password for root
New password: 
Bad password: too weak
Retype password: 
passwd: password for root changed by root

# cat /etc/passwd
root:xLhgTub5K6Css:0:0:root:/:/bin/ash

2)串口密码telnetadmin
# passwd
Changing password for root
New password: 
Bad password: too weak
Retype password: 
passwd: password for root changed by root

# cat /etc/passwd
root:bN5/yzPqYKOJo:0:0:root:/:/bin/ash

退出重新登陆:
# exit
process '/sbin/getty -L ttyAMA0 0 vt100 ' (pid 832) exited. Scheduling for restart.
starting pid 5536, tty '/dev/ttyAMA0': '/sbin/getty -L ttyAMA0 0 vt100 '

(none) login: root
Password: 

BusyBox v1.30.1 (2020-06-27 14:33:25 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值