Linux操作系统启动过程

在做开发的过程中,突然发现,要对系统做一些有意义的改变,必须要对操作系统的启动过程有一定的了解,不然就是修改你都不知道从哪里下手啊,然后就是找来资料看,去网上看别人的博客,有了前一周一些基本的经验,理解起来就快很多了。但是,别人的东西终究还是不适合自己,遂自己来总结一遍典型的Linux操作系统的启动过程,中间若有错误还请批评指正!

1、加电并且启动BIOS

加电也就是把电源按钮按下去,主板通电后会启动BIOS,都知道BIOS是写在单独的芯片中的,这个时候还只是BIOS来控制整个系统。

2BIOS到要引导的存储设备

BIOS启动之后会先进行POST(short for Power On Self Test),在无误通过之后,BIOS会按照用户设定的顺序依次检索存储设备,寻找引导块,如果第一顺位引导硬盘的话那就是MBR(Master Boot Record),而后,BIOS会将控制权交给MBR

3GRUB或者LILO的启动

如果是单操作系统的启动,那这一步就可以跳过了,可以直接由MBR来引导起来操作系统。但是,由于MBR只能引导一个操作系统,所以我们需要MBR来进行多系统的引导。这时候,MBR的作用是引导GRUB的运行。

4、加载内核

GRUB启动之后,会由它来引导内核的运行,也就是GRUB将配置中制定的内核映像拷贝到内存之中,并且会引导它的运行。但是,在这之前,还会有一个例程(这个没搞清楚是哪一个,还需要改天做实验)先运行起来,它会解压内核镜像,而好由解压好的内核来引导系统。

5、执行init进程

当内核完成核内引导之后就会开始加载init进程,从这里开始才是每台机子独一无二的操作,之前的大家都是一样的(除了自己编译过的内核),但是这里几乎就是每台机子都不一样了。

6、系统初始化

执行init进程后,还需要依赖于根目录下init/init.d来初始化整个系统,还有rc*.d目录下的各个链接,来对系统和各程序进行初始化。

7Login程序

在完成系统的初始化之后,就可以看到登录的画面了,这个时候就算完成了真个操作系统的启动。

原文地址:https://www.cnblogs.com/spinsoft/p/2612079.html