当前位置: 技术问答>linux和unix
Linux启动后,是如何最先自动调用login进程的?
来源: 互联网 发布时间:2015-03-15
本文导语: 偶有一个小系统,在dist目录下,dist下有一个login目录,里面放了login.c和passwd.c,用于登陆系统用的 但是不知道该怎样做,让偶的小系统一启动就运行login进程 不知道Linux自己是怎么实现的…… | ...
偶有一个小系统,在dist目录下,dist下有一个login目录,里面放了login.c和passwd.c,用于登陆系统用的
但是不知道该怎样做,让偶的小系统一启动就运行login进程
不知道Linux自己是怎么实现的……
但是不知道该怎样做,让偶的小系统一启动就运行login进程
不知道Linux自己是怎么实现的……
|
init进程是系统所有进程的起点,内核在完成核内引导以后,即在本线程(进程)空间内加载init程序,它的进程号是1。
init进程将启动运行rc脚本。在rc返回后,init将得到控制,并启动mingetty,mingetty是getty的简化。
login程序在getty的同一个进程空间中运行,接受getty传来的用户名参数作为登录的用户名。
如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。
只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
当用户登录通过了这些检查后,login将搜索/etc/passwd文件用于匹配密码、设置主目录和加载shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/sh。在将控制转交给shell以前,getty将输出/var/log/lastlog中记录的上次登录系统的信息,。在设置好shell的uid、gid,以及TERM,PATH 等环境变量以后,进程加载shell,login的任务也就完成了。
init进程将启动运行rc脚本。在rc返回后,init将得到控制,并启动mingetty,mingetty是getty的简化。
login程序在getty的同一个进程空间中运行,接受getty传来的用户名参数作为登录的用户名。
如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。
只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
当用户登录通过了这些检查后,login将搜索/etc/passwd文件用于匹配密码、设置主目录和加载shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/sh。在将控制转交给shell以前,getty将输出/var/log/lastlog中记录的上次登录系统的信息,。在设置好shell的uid、gid,以及TERM,PATH 等环境变量以后,进程加载shell,login的任务也就完成了。
|
看看init的源代码
|
init的最后一部分应该是运行login的。