Linux的系统引导流程如下:

1:固件firmware(CMOS-BIOS)

2:自举程序BootLoader(主要是GRUB)

3:载入内核kernel

4:启动进程init

5:读取配置文件inittab

固件firmware(CMOS-BIOS)

关于固件的定义在《操作系统概念》第七版是这样说的:“当打开电源或重启时,计算机开始运行,它需要运行一个初始化程序。该初始化程序或引导程序(bootstrap program)比较简单,通常位于ROM或EEPROM中,称为计算机硬件中的固件。”也就是固化在主板上的一段程序,所以这段程序所起的作用可以理解为CMOS,而BIOS是相对用户的操作界面,严格来说是CMOS-BIOS,不能只是CMOS或者BIOS,它也就类似于windows开机时不停按Delete或F10等等所进入的界面(BIOS)。至于功能我就不多说了,想必大家都清除。

关于固件要说明的是时间的问题,因为在固件上有一个时间,在软件上也有个时间,这里就涉及到两个命令date和hwclock(hardware-clock)。主要针对hwclock来说,date我只是简单说一下。

1:关于date的用法之前就说过,这里简单说明一下

输入date --help,显示如下:

如何引导linux系统(linux系统详细教程)(1)

由以上用法就可以修改时间了:

如何引导linux系统(linux系统详细教程)(2)

2. 这里主要介绍hwclock,同样遇到不会的命令输入hwclock --help

如何引导linux系统(linux系统详细教程)(3)

上图强调的地方一个是--hctosys(hardware-lcock to system-clock)意思说以硬件时间为参考设置软件时钟

另一个正好是相反的意思。试验效果就不演示了。。。

自举程序BootLoader

自举程序有很多主要是GRUB,它的作用主要是载入内核(kernel),固件自检没问题后就会读取MBR的第一个位置,所 谓的MBR要叫做主引导记录(master boot record)位于硬盘的0柱面,0磁头,1扇区。而BootLoader位于MBR的起始位 置大小为446byes。BootLoader的作用是载入内核,那就必须要告诉内核文件在哪个位置并加载到内存中。

由于BootLoader主要是GRUB,有个配置文件叫grub.conf,用vi查看输入命令:vi /etc/grub.conf

如何引导linux系统(linux系统详细教程)(4)

kernel /boot/vmlinuz-2.6.32-504.el6.... 也就是说内核文件是存放在boot下的vmlinuz-2.6.32-504.el6,这里需要说明 的是vmlinuz中的这个“z”表明这个内核文件是个压缩文件用z来表示,但是在载入时会解压2.6.32中的2表示主版本号,6表 示次版本号,32表示末版本号,其中比较重要的是6,如果是偶数则表示linux是正式版,奇数表示测试版。

载入内核kernel

载入内核以后,内核主要做两件事:1:驱动硬件;2:启动第一个进程init。 init启动后读取inittab文件,

执行系统缺省运行级别,从而继续做后续引导。关于inittab配置文件后续再写,今天就写到这。