Linux的系统引导流程如下:
1:固件firmware(CMOS-BIOS)
2:自举程序BootLoader(主要是GRUB)
3:载入内核kernel
4:启动进程init
5:读取配置文件inittab
固件firmware(CMOS-BIOS)
关于固件的定义在《操作系统概念》第七版是这样说的:“当打开电源或重启时,计算机开始运行,它需要运行一个初始化程序。该初始化程序或引导程序(bootstrapprogram)比较简单,通常位于ROM或EEPROM中,称为计算机硬件中的固件。”也就是固化在主板上的一段程序,所以这段程序所起的作用可以理解为CMOS,而BIOS是相对用户的操作界面,严格来说是CMOS-BIOS,不能只是CMOS或者BIOS,它也就类似于windows开机时不停按Delete或F10等等所进入的界面(BIOS)。至于功能我就不多说了,想必大家都清除。
关于固件要说明的是时间的问题,因为在固件上有一个时间,在软件上也有个时间,这里就涉及到两个命令date和hwclock(hardware-clock)。主要针对hwclock来说,date我只是简单说一下。
1:关于date的用法之前就说过,这里简单说明一下
输入date--help,显示如下:
由以上用法就可以修改时间了:
2.这里主要介绍hwclock,同样遇到不会的命令输入hwclock--help
上图强调的地方一个是--hctosys(hardware-lcocktosystem-clock)意思说以硬件时间为参考设置软件时钟
另一个正好是相反的意思。试验效果就不演示了。。。
自举程序BootLoader
自举程序有很多主要是GRUB,它的作用主要是载入内核(kernel),固件自检没问题后就会读取MBR的第一个位置,所谓的MBR要叫做主引导记录(masterbootrecord)位于硬盘的0柱面,0磁头,1扇区。而BootLoader位于MBR的起始位置大小为446byes。BootLoader的作用是载入内核,那就必须要告诉内核文件在哪个位置并加载到内存中。
由于BootLoader主要是GRUB,有个配置文件叫grub.conf,用vi查看输入命令:vi/etc/grub.conf
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配置文件后续再写,今天就写到这。