最初始阶段
BIOS -> MBR -> 引导加载程序 -> 内核
- 打开计算机电源时候,回自动从主板BIOS 芯片读取其中的程序,获取硬件的配置信息,之后会读取存储盘,允许你从中选择一个来启动计算机。
- 计算机会读取所选存储设备的起始512个字节(bytes).这512个字节叫做主引导纪录,MBR(masrer boot record)。
- MBR 会告诉电脑从该设备的某一个分区(partition)在装载引导加载程序(boot loader),常用的引导加载程序有 GRUB和LILO。
- 装载引导加载程序会加载操作系统内核
内核
内核 --> init process
如果我们加载的是linux 内核,Linux 内核开始工作,内核会首先预留自己运行所需的内存空间,然后通过驱动程序(driver)监测计算机硬件,这样、操作系统就可以知道自由有哪些硬件可用,随后,内核会启动一个init 进程。
它是Linux 系统的1号进程(Linux中没有0号进程)。到此,内核就完成了再计算机启动阶段的工作,交接给init 进程来管理。
init process
(根据boot loader的选项,Linux此时可以进入单用户模式(single user mode)。在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误)
随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts。这些脚本执行如下功能:
设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络……
当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录。init会给出登录(login)对话框,或者是图形化的登录界面。
总结
BIOS -> MBR -> 引导加载程序 -> 内核 -> init process -> login