Linux启动过程,对于系统出现问题,无法正常开机,了解系统开机过程还是有用的,可能写的不够全面,欢迎大家补充~


BIOS程序读取用户的设置,来引导相应的设备,如硬盘,BIOS读取硬盘的第一个扇区MBR区域,在此会读取到硬盘的分区表,将控制权交给MRR内的引导程序,MBR内的引导程序只是指向Linux的boot load(GRUB),GRUB启动后会读取自己的配置文件/boot/grub/grub.conf,根据配置文件,加载相应的内核,驱动硬件,内核无法驱动根所在的分区,所有不能正确引导系统,只能依靠initrd(一些驱动程序),将initrd映像到内存会生成伪根,以提供根所在分区的驱动程序,以只读的方式来挂着根,然后再到/lib/modules调用模块进行驱动,内核接下来内核会启动第一个进程init,所以init的进程的pid是1(init会成为失去父进程的子进程的父进程及进入各个特殊级别),系统初始化,(加载网络等)根据init的配置文件(etc/inittab)去执行/etc/rc.d/rc*.d目录下的脚步,停止或启动相关服务,最后执行/etc/rc.d/rc.locat(这里可以放自己想开机执行的命令或脚本),最后启动多个终端(shell)等待用户下达指令。