Chinaunix首页 | 论坛 | 博客
  • 博客访问: 137320
  • 博文数量: 35
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-09 12:22
个人简介

http://www.76ku.cn

文章分类

全部博文(35)

文章存档

2011年(1)

2010年(17)

2007年(17)

我的朋友

分类:

2007-07-09 00:41:23

加电

系统(x86)加电后,有一个特殊的硬件电路在cpu的一个引脚上产生一个RESET逻辑值,设置寄存器的值,cpu开始执行一特定的物理地址上的代码(BIOS)

BIOS启动

BIOS进行设备初始化, 设置CMOS里的各项参数,启动自举程序, 查找主引导设备读取第一扇区的主引导记录(MBR,MBR拷贝到内存的0x7c00处(CPU跳转到此处开始执行载入的代码)

运行BootLoader

Cpu执行MBR程序,检查磁盘分区列表,运行嵌入在MBR中的bootloader(stage1阶段),进行必要的初始化,然后将此处代码转移,bootloaderstage2加载到此处,进行本阶段的初始化,检查内存映射等.如果是多操作系统,则根据选择来决定要启动的系统.找到活动分区后,将第一扇区的引导程序加载到内存开始执行,将内核映像(vmlinuz-xxx)initrd(ramdisik)读入内存,将内核解压, /dev/initrd的内容拷贝到/dev/ram0,kernel将挂载 /dev/ram0作为初始化根文件系统,执行linuxrc(包含在initrd中),然后挂载正常的根文件系统,内核成功加载后,系统提示:”ok,booting the kernel”.

四 执行/sbin/init进程(ID1)

根据/etc/inittab文件的配置信息,init进程进行一系列的外设初始化,为每个终端fork一个子进程,每个进程执行gettty,调用open以读写方式将终端(/dev/console)打开,设置文件描述符0,1,2

 login程序

当输入用户名后,调用login读取密码进行身份验证,并做以下工作:

1 将当前工作目录改为用户的超始目录(chdir)

2 调用chown改变该终端的所有权

3 将该终端设备的访问权限改为用户读和写

4 调用setgidinitgroups设置进程的组ID

5 login得到的信息初始化环境

6 login进程变为登录用户的用户ID,并调用该用户的登录shell

至此,一个用户的会话开始运行

阅读(1095) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~