Linux的开机流程
- 加载 BIOS 的硬件信息,并取得第一个开机装置的代号;
- 读取第一个开机装置的 MBR 的 boot Loader (亦即是 lilo, grub, spfdisk 等等) 的开机信息;
- 加载 Kernel 操作系统核心信息, Kernel 开始解压缩,并且尝试驱动所有硬件装置;
- Kernel 执行 init 程序并取得 run-level 信息;
- init 执行 /etc/rc.d/rc.sysinit 档案;
- 启动核心的外挂模块 (/etc/modprobe.conf);
- init 执行 run-level 的各个批次档( Scripts );
- init 执行 /etc/rc.d/rc.local 档案;
- 执行 /bin/login 程序,并等待使用者登入;
- 登入之后开始以 Shell 控管主机。
启动过程
boot loader
- 整个主机在开机的时候,第一个被读取的地方, 就是 BIOS ( Basic Input Output System ),它是第一个被计算机加载的数据。这个 BIOS 里面记录了主机板的芯片组与相关的设定。读取了 BIOS 设定值之后,系统会根据 BIOS 的数据,进行开机自我测试 (power on self test, POST),
内核执行 init并由/etc/inittab取得系统登入状态
- 加载内核后,由内核第一个执行的程序便是/sbin/init,该程序的第一个目标是确定主机以怎样的模式登入,此时/sbin/init加载/etc/inittab的信息。在此文件中可以看出共有0~6种的登入状态。较常见的是3(文字界面登入)和5(图形界面登入)。不要设定我0(关机)和6(重新启动),不然系统会一直不停的关机或重新启动。
init的第一个执行内容/etc/rc.d/rc.sysinit
- 确定登入状态后,接下来把主机的信息读入Linux系统。而Linux读入的第一个数据内容就是/etc/rc.d/rc.sysinit,可以进去看看,记录了Linux系统的基本信息,主要工作很多,基本都是设定一些参数及系统相关等等。
init执行运行级的各脚本
- 由于不同的run-level需要加载的模块并不相同,所以系统为不同的run-level设定了一些批处理文件来做。在/etc/rc.d目录中,目录rc.0~rc.6分别代表着各个run-level的脚本,这些目录中的文件都以K(以K开头代表杀死该服务)或S(开始….)打头,后接两位数字(数字代表启动顺序,当然这些顺序的指定是有原因的)与该服务的名称。这些文件都是链接文件,都指向/etc/rc.d/init.d这个目录,而/etc/rc.d/init.d目录则是以Linux的RPM安装方法时用于设定一些服务的启动目录。举个例子,如果要想重新启动sendmail,且你的sendmail是以RPM方式安装的,那么输入 /etc/rc.d/init.d/sendmail restart就可以直接重新启动sendmail。
- 因此,当你的run-level内的脚本要启动哪些服务时,就将文件链接到该 init.d目录下的文件并启动即可,也就是若以为3来启动系统,说启动Linux时,经过BIOS、MBR、Kerbel、init和/etc/rc.sysinit 之后,就进入/etc/rc.d/rc3.d来启动一些服务。
- init执行/etc/rc.d/rc.local
- 在Linux系统执行完大部分的启动程序后,接下来就是执行你的Linux主机的个性化设定了。简单的说,无论你在启动时候需要写进什么指令,都可以将这在此文件写入。
- 在主机执行完上面的步骤之后,开机流程就启动完毕。
启动配置文件/etc/sysconfig
- 在启动过程中使用最多的配置文件大都放在/etc/sysconfig目录下。
- 下面说几个比较重要的:
- clock设定时间
- i18n设定语言的
- Keyboard 和 mouse 用于设定键盘和鼠标
- network可以设定主机名称和GATEWAY这两个重要信息
- network-scripts用于设定网卡。
- 变换默认的登入模式
- 主要修改/etc/inittab文件,Linux共提供了6个终端界面与1个图形界面,Ctrl+Alt+F1~F6组合来切换不同的文字登入点,Ctrl+Alt+F7切换图形界面。
- Grub
- 配置文件/etc/grub/menu.lst
Linux 系统在启动过程中,首先是固件(PC 上大多是 CMOS/BIOS)的物理检测,诸如检测系统的显卡、CPU 和硬盘等,可从系统按下电源后看到此检测信息;检测无问题,将读取硬盘的MBR(主引导记录)中的自举程序,Linux 中常用的自举程序如 LILO 和GRUB。自举程序 GRUB 在系统启动期间只有一个作用,就是载入内核,内核在引导期间有两个主要的作用,一个是驱动系统硬件,另一个将启动系统进程 init;init 进程将读取其配置文件/etc/inittab 完成后续所有的引导。