- 接通电源后BIOS开机自检,对硬件进行检测
- 加载MBR(主动引导记录),从磁盘调入boot独立程序, boot把自身复制到高位地址的内存,从而为操作系统释放低位地址的内存。
MBR包括三部分内容:引导程序,分区表和分隔表示,最多512字节,引导程序最多446字节 - boot程序读取启动设备的跟目录,boot要理解文件系统和目录格式,然后boot被调入内核,控制权交给内核
- 内核启动,创建内核堆栈,识别CPU类型,计算内存,禁用中断,启动内存管理单元
- 分配一个消息缓冲区来存放调试出现的问题
- 操作系统进行自动配置,加载配置文件,检测设备,设备如果没有响应就忽略,响应则添加到已连接设备表中
- 配置完硬件后,创建进程0,设置堆栈并运行,执行初始化、配置时钟,挂载文件系统, 创建init(进程1)进程和守护进程(进程2)
- init进程会检测时为单用户服务还是多用户服务,如果是单用户,会fork一个shell进程。多用户fork创建一个运行系统初始化的shell脚本(etc/rc)进程,可以进行文件系统一致性检测,瓜汁文件系统,开启守护进程
- etc/rc进程会从/etc/ttys读取数据,/etc/ttys列出了所有的终端和属性,对于每一个启用的终端,这个进程会fork一个自身的副本,进行内部处理并运行一个getty的程序。
- getty程序会等待用户输入用户名和密码,然后启动/bin/login登录程序开始运行,检测密码,正确则用login程序以用户shell程序替换自身。