免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3455 | 回复: 0
打印 上一主题 下一主题

Linux开机启动流程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-09 00:41 |只看该作者 |倒序浏览

一 加电
系统(x86)加电后,有一个特殊的硬件电路在cpu的一个引脚上产生一个RESET逻辑值,设置寄存器的值,cpu开始执行一特定的物理地址上的代码(即BIOS)
二 BIOS启动
BIOS进行设备初始化, 设置CMOS里的各项参数,启动自举程序, 查找主引导设备读取第一扇区的主引导记录(MBR),将MBR拷贝到内存的0x7c00处(CPU跳转到此处开始执行载入的代码)
三 运行BootLoader
Cpu执行MBR程序,检查磁盘分区列表,运行嵌入在MBR中的bootloader(stage1阶段),进行必要的初始化,然后将此处代码转移,将bootloader的stage2加载到此处,进行本阶段的初始化,检查内存映射等.如果是多操作系统,则根据选择来决定要启动的系统.找到活动分区后,将第一扇区的引导程序加载到内存开始执行,将内核映像(vmlinuz-xxx)及initrd(ramdisik)读入内存,将内核解压, 将/dev/initrd的内容拷贝到/dev/ram0,kernel将挂载 /dev/ram0作为初始化根文件系统,执行linuxrc(包含在initrd中),然后挂载正常的根文件系统,内核成功加载后,系统提示:”ok,booting the kernel”.
四 执行/sbin/init进程(ID为1)
根据/etc/inittab文件的配置信息,init进程进行一系列的外设初始化,为每个终端fork一个子进程,每个进程执行gettty,调用open以读写方式将终端(/dev/console)打开,设置文件描述符0,1,2
五  login程序
当输入用户名后,调用login读取密码进行身份验证,并做以下工作:
1 将当前工作目录改为用户的超始目录(chdir)
2 调用chown改变该终端的所有权
3 将该终端设备的访问权限改为用户读和写
4 调用setgid和initgroups设置进程的组ID
5 用login得到的信息初始化环境
6 login进程变为登录用户的用户ID,并调用该用户的登录shell
至此,一个用户的会话开始运行


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/40925/showart_336465.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP