开机的程序是这样的:
1. 加载 BIOS 的硬件信息,并取得第一个开机装置的代号;
2. 读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的开机信息;
3. 加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装置;
4. Kernel 执行 init 程序并取得 run-level 信息;
5. init 执行 /etc/rc.d/rc.sysinit 档案;
6. 启动核心的外挂模块 (/etc/modprobe.conf);
7. init 执行 run-level 的各个批次档( Scripts );
8. init 执行 /etc/rc.d/rc.local 档案;
9. 执行 /bin/login 程序,并等待使用者登入;
10. 登入之后开始以 Shell 控管主机。
boot loader 与 kernel 载入
由第一篇里面谈到的一些基础的主机硬件概念当中,我们知道整个主机在开机的时候,第一个被读取的地方, 就是 BIOS ( Basic Input Output System ) 啦,这个 BIOS 里面记录了主机板的芯片组与相关的设定, 例如 CPU 与接口设备的沟通频率啊、开机装置的搜寻顺序啊、硬盘的大小与类型啊、 系统时间啊、各周边总线的是否启动 Plug and Play (PnP, 随插即用装置) 啊、 各接口设备的 I/O 地址啊、以及与 CPU 沟通的 IRQ 岔断等等的信息都记录在此, 所以啰,系统要顺利的开机,首先就是要去读取 BIOS 的相关设定值了。
读完了 BIOS 并且了解了主要的主机硬件相关信息后,主机便会开始尝试由储存媒体加载操作系统了。 我们刚刚提到 BIOS 会记录『可用来开机的装置搜寻顺序』对吧!所以,系统会开始去第一个开机装置上面进行开机程序。 我们在第二篇的 磁盘档案系统(filesystem) 当中提到过整个储存装置的特性, 如果以硬盘来看,那么开机流程读到硬盘的过程中,第一个要读取的就是该硬盘的主要开机扇区 (Master Boot Record, MBR) 了,而系统可以由主要开机区所安装的开机管理程序 (boot loader) 开始执行核心辨识的工作。