yocto 默认x86根文件系统 开启 serial 登陆支持

使用yocto编译的x86 根文件系统默认是图形界面。通过修改etc/inittab的启动级别后,修改默认从字符界面启动,连接串口,默认没有shell。

解决方法:
1. 修改启动参数,添加console=ttyS0,115200
2. 修改/etc/inittab 添加 2:12345:respawn:/sbin/getty -L 115200 ttyS0

控制台和终端:
以前的计算机,控制台是直接和计算机相连接的原生设备,终端是通过电缆、网络等等和主机连接的设备。以前计算机系统信息只显示在控制台,不显示到终端。以前的计算机只有一套控制台,但可以接多个终端。
计算机的控制台类似家用电器的控制面板,如果你的家用电器支持手机控制,那么手机可以看作电器的一个终端。

下面是一个inittab的例子:
T0:134:respawn:/sbin/getty -L ttyS0 115200 vt100
T1:1:respawn:/sbin/getty -L ttyS1 115200 vt100
上面在1、3、4的运行级别中将以respawn方式运行getty程序,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户名将作为参数传给login程序来验证用户的身份。

注意:
如果想绕过登录验证过程,想直接进入shell界面的话,则把以上两行注释掉,改为:T0:134:respawn:/bin/s

getty流程:
getty进程接收到用户名后,启动login进程
login进程要求用户输入口令
用户输入口令
login进程对username和password进行检查
login启动shell进程
shell进程根据/etc/password中的shell类型,启动相应的shell.并启动/etc/profile文件和$HOME/.bash_profile文件.最后出现shell提示符,等待用户输入命令

login验证过程

Linux的帐号验证程序是login,login会接收getty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
  在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置帐户的其它信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/bash。
  login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有记录),并检查用户是否有新邮件(在/usr/spool/mail/的对应用户名目录下)。然后开始设置各种环境变量:对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其它配置文件,所有的配置文件执行后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示符,到此整个启动过程就结束了。

猜你喜欢

转载自blog.csdn.net/wdjjwb/article/details/80895107
今日推荐