WEB开发网
开发学院手机开发Android 开发 Android Linux启动过程详解 阅读

Android Linux启动过程详解

 2010-06-01 22:50:00 来源:WEB开发网   
核心提示:打开终端线,并设置模式输出登录界面及提示,Android Linux启动过程详解(7),接受用户名的输入以该用户名作为login的参数,加载login程序注:用于远程登录的提示信息位于/etc/issue.NET中,运行着init进程,运行着一批由rc启动脚本激活的守护进程(如 inetd等),login程序在gett

打开终端线,并设置模式

输出登录界面及提示,接受用户名的输入

以该用户名作为login的参数,加载login程序

注:用于远程登录的提示信息位于/etc/issue.NET中。

login程序在getty的同一个进程空间中运行,接受getty传来的用户名参数作为登录的用户名。

如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。

只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

当用户登录通过了这些检查后,login将搜索/etc/passwd文件(必要时搜索 /etc/shadow文件)用于匹配密码、设置主目录和加载shell。如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为 /bin/sh。在将控制转交给shell以前, getty将输出/var/log/lastlog中记录的上次登录系统的信息,然后检查用户是否有新邮件(/usr/spool/mail /{username})。在设置好shell的uid、gid,以及TERM,PATH 等环境变量以后,进程加载shell,login的任务也就完成了。

bash

运行级别3下的用户login以后,将启动一个用户指定的shell,以下以/bin/bash为例继续我们的启动过程。

bash 是Bourne Shell的GNU扩展,除了继承了sh的所有特点以外,还增加了很多特性和功能。由login启动的bash是作为一个登录shell启动的,它继承了 getty设置的TERM、PATH等环境变量,其中PATH对于普通用户为"/bin:/usr/bin:/usr/local/bin",对于 root 为"/sbin:/bin:/usr/sbin:/usr/bin"。作为登录shell,它将首先寻找/etc/profile 脚本文件,并执行它;然后如果存在~/.bash_profile,则执行它,否则执行 ~/.bash_login,如果该文件也不存在,则执行~/.profile文件。然后bash将作为一个交互式shell执行~/.bashrc文件(如果存在的话),很多系统中,~/.bashrc都将启动 /etc/bashrc作为系统范围内的配置文件。

当显示出命令行提示符的时候,整个启动过程就结束了。此时的系统,运行着内核,运行着几个核心线程,运行着init进程,运行着一批由rc启动脚本激活的守护进程(如 inetd等),运行着一个bash作为用户的命令解释器。

附:XDM方式登录

上一页  2 3 4 5 6 7 8  下一页

Tags:Android Linux 启动

编辑录入:coldstar [复制链接] [打 印]
赞助商链接