分类: LINUX
2008-10-11 19:55:03
图显示了通过终端登录发生的事情。首先,init确认有一个getty 程序提供给终端连接(或控制台)。 getty侦听终端等候用户告知它要登录 (这通常意味着用户必然键入些什么)。当它注意到一个用户,getty输出一个欢迎信息(存在/etc/issue中),并提示用户名,最后运行login程序。 login作为一个参数得到用户名,并提示用户输入口令。如果正确,login启动给此用户设置的shell;否则退出并终止进程 (可能在再给用户一个机会输入用户名和口令之后)。 init注意到进程终止,就给这个终端启动一个新的getty。
图7.1:通过终端登录: init、getty、 login和shell的交互
注意唯一的新进程是由init产生的(用fork系统调用); getty和login只是替代进程运行的程序 (使用exec系统调用)。
为注意用户,串行线需要一个单独的程序,因为终端活动时可以(传统上也是)变得复杂。 getty也适应连接的速度和其他设置,这对拨号连接特别重要,因为连接和连接的参数可能不同。
getty和init 有多个版本在使用,各有优缺点。学习你的系统的版本也了解其他版本是个好主意(你可以用 Linux Software Map来找。)如果你没有拨入,可能不必考虑 getty,但 init仍然很重要。