当系统的初始化内容完成之后,系统就会调用mingetty函数,来设置终端机,并等待用户登陆!它的具体流程是这样的,init进程先fork一个子进程,然后这个子进程来exec一个getty程序。Getty程序会试着去打开一个终端,如果打开成功了,那么就会去屏幕上显示login字样,当用户键入了用户名之后,getty程序的任务就完成了!然后它在以exec的方式来调用login程序。Login程序会去读取用户名和用户密码,然后读取shadow文件来检验用户的密码是否正确。如果密码不正确,则login通过调用exit 1来退出,此时init进程重新fork来重复上述步骤。
如果密码验证成功的话,那么login程序就会设置一些系统运行的环境(比如设置工作目录,设置uid和gid,用户名等)。设置好了这些系统环境之后,login程序就会通过exec来调用shell程序,shell程序执行并读取一些启动脚本(例如/etc/bashrc等)。读取完这些启动脚本之后,shell就打印出提示符,然后等待用户键入命令!此时我们的系统就正常启动了!