- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linuxboot.ppt
操作系统结构 * init进程(四) (11)注册系统可执行文件格式(binfmt_setup) 每种可执行文件都用一个结构linux_binfmt表示,其中定义了其装入方法,所有的结构形成一个链表,指针formats指向该链表的表头 (12)注册所有的文件系统.(filesystem_setup()) 为每个文件系统建一个结构file_system_type 所有的结构连成一个file_systems链表. (13)安装根文件系统.mount_root() ⒈ 打开根文件系统所在的块设备.先建立两个临时结构:inode和file,该步结束后释放. 操作系统结构 * 操作系统结构 * init进程(五) ⒉ 顺序搜索链表file_systems中每个注册的文件系统类型,用其read_super函数读取设备ROOT_DEV的超级块. static struct super_block *reader_super(kdev_t dev,const char *name,int flags,void *data,int silent) data:用来确定超级块结构中联合类型里的s_mout_opt标志; silent:用来表示当此次安装不成功时,是否显示错误信息 操作系统结构 * init进程(六) ⒊如果上步装入成功,则填好它的超级块结构. ⒋如果不成功,则提示出错 2.释放初始化代码和数据占用的内存. 到此内核初始化已完成,初始化代码(.text.init)和数据(.data.init)将不再使用 执行函数free_initmem(),进行释放,获得尽可能大可用内存空间 3.打开控制台. 函数调用open(“/dev/console”,O_RDWR,0)按读写方式打开控制台:重定向三个标准的输入输出文件stdin、 stdout和stderr到控制台, 若init进程运行的程序是shell的话,需要并能拥有标准输入源 操作系统结构 * init进程(七) 4.将init进程转化为用户进程. 调用函数execve,重新装入init进程的执行映像,替换init现有的虚拟内存空间 函数执行成功后,系统切换到用户态,从装入的可执行文件的开始位置开始执行用户程序(init) 装入init进程,运行于用户态,启动其他进程 最后创建getty进程,接受用户登录,完成用户注册 init常会使用/ete/inittab,解释完后,进入等待,成为reaper进程,回收终止的进程 /etc/init.d/rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。通过按Alt+Fn(n对应1-6)可以在这6个终端中切换。在/etc/inittab中的以下6行就是定义了6个终端: 从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。同时它会显示一个文本登录界面,这个界面就是经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,如图: 对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器,如图: 用文本方式登录的情况: 在mingetty的登录界面,可以输入用户名和密码来登录系统了。 Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后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/pro
文档评论(0)