开机启动步骤:
1.加电,启动BIOS,BIOS会读取第一个可开机装置。BIOS的英文全称是:Basic Input Output System .有时候看一下全称对我的理解是很有好处的。BIOS是怎样识别接口设备的呢?那是因为BIOS会读取CMOS,而CMOS是微机主板上的一块可擦写的RAM芯 片,用来保存当前系统的硬件配置和用户对某些参数的设定。
刚才我们提到过BootLoader,而它刚好装到硬盘的第一个扇区内(MBR)。
在来介绍下MBR,MBR是主要开机记录区。也是刚才提到的硬盘的第一个扇区。
我们的开机管理程序BootLoader就是装在MBR当中。Grup就是开机管理程序运行的一套软件。BootLoader最重要的一个功能是要认识操作系统的档案格式幷据以加载核心(kernel)到主存储器中去执行。每一种的操作系统的BootLoader是不同的,因为核心不一样。这里讲的仅仅是单一操作系统。多操作系统和单一操作系统的启动流程差不多,只是开机管理的程序安装的位置不同罢了,一个装到MBR当中,其它的可以装到Bootsector当中。
Kenel的作用一是它会从新啊检测一遍周边的硬件设备,接管BIOS的工作。二是加载核心的驱动程序,幷挂在实际的根目录档案系统。
initrd 的功能是加载虚拟档案系统,加载驱动程序,建立系统所需要的各个装置。这个虚拟档案系统的作用是,kernel一开始无法识别硬盘,无法加载硬盘的驱动程序,所以需要一支可执行的程序,加载各种必要的驱动,让系统可以正常的进行后面的开机流程。
2.开机需要很多的配置文件,他们执行顺序和关系是怎样的呢?
当你的核心和服务都加载完成以后,执行的第一支程序就是/sbin/init这个命令,和c语言的Main函数作用差不多,总要有个程序运行的入口吧。大家又知道linux当中大部分的命令都是根据配置文件来执行的,所以这个命令也当然会有个配置文件了/etc/inittab,配置文件是做什幺呢,它主要就是如果我执行init这个命令,它会去做哪些事情。接下来我们就看看init到底做了些什幺事情,那这回我们就要看inittab这个配置文件了。(1)设定运行级别。
(2)通过rc.sysinit这个配置当对系统进行初始化,加载一些驱动,那幺都需要加载哪些驱动呢,就要根据这个/etc/modprobe.conf配置文件了。(3)我们的系统要想正常的运行需要各种服务,而这些服务都是放在/etc/rc+“数字“这样的目录当中,这个数字要取决于你的运行级别。/etc/rc+“数字“.d/[SK]xx 其实就是跑到 /etc/init.d/当中执行相应的脚本,前面提到过执行命令一般需要配置文件,每个服务也会有相应的配置文件,都会放在/etc/sysconfig/*当中(4)最后我们要执行的是/etc/rc.d/rc.local这个配置文件,我们可以把一些需要开机执行的脚本放到这里。
(3)kernel与驱动程序:我们的核心会加载驱动,我们的驱动会放在/lib/modules/$(uname -r)/kernel。我们的在加载驱动程序的时候,驱动程序之间幷不是独立的,他们都是有依赖关系的,具体的依赖关系会记录到/lib/modules/$(uname -r)/modules.dep这个文件当中,我们可以通过depmod这个命令去跟新驱动模块之间的依赖性,lsmod会为我们列出所有的模块,modinfo+模块驱动名称可以为查阅具体的模块驱动信息,modprobe加载相关驱动,同时也可以查看到相依性,如果我们想要修改驱动参数可以修改这个配置文件/etc/modprobe.conf。