一) Linux的开机流程
【step 1】 加载BIOS硬件信息,寻找启动磁盘(Boot Disk);
【step 2】 读取MBR中的内核加载程序(Kernel Loader, 一般是LILO或者GRUB),这个程序的作用就是加载存储在某个位置的操作系统内核;
【step 3】 加载操作系统核心Kernel。内核的主要工作就是检测所有的硬件设备,并为它们加载驱动程序。
驱动程序有两种,即静态驱动程序(static driver)和动态驱动程序(dynamic driver)。前者以内核镜像文件的形式存在,后者则存储在文件系统上。此时,文件系统尚未挂载到系统中,所以只有静态驱动程序能被使用来驱动硬件设备。
内核另一个任务是以只读方式挂载根文件系统。挂载根目录系统的过程请参看本文的第三部分。根文件系统必须包含如下几个目录,也就是说下面几个目录只能放在根目录下面:(1)/etc/;(2)/bin/;(3)/sbin/;(4)/lib/;(5)/dev/。如果这5个目录不在根目录下面,会导致系统启动失败。
挂载了根文件系统后,系统就能安装适当的内核模块,启用某些功能,并且能调用之前所说的动态驱动程序来驱动默写硬件设备;系统还能启动存储于根文件系统中的init服务,以便让它来接受后续的启动工作。
【step 4】 Kernel执行进程/sbin/init,并取得默认的运行级别(run level),在Red Hat中,init从/etc/inittab中获取run level。
【step 4.1 】init执行/etc/rc.d/rc.sysinit文件
这个script的主要功能是进行Linux系统环境的配置,诸如界面文字字体、时间、系统记录等。这里实现的功能比较多,期间还要加载Linux系统的一些内置功能及变量,如PATH或umask。
如:
* 设置主机名
if [ -f /etc/sysconfig/network ]; then
. /etc/sysconfig/network
fi