【每日一记3.15】linux启动流程

   linux的启动流程:

       1.加载硬件BISO信息,获取第一个启动设备的代号。

       2.读取第一个启动设备的MBR的引导家在程序(即LILO,GRUB,SPFDISK)的启动信息。

       3.加载操作系统的核心信息,内核开始解压,并尝试驱动硬件设备。

       4.内核执行init程序并获得运行信息。

       5.init执行/etc/rc.d/rc.sysinit文件。

       6.启动内核的外挂模块。(/etc/modprobe.conf)

       7.init执行运行批处理文件。(script)

       8.init执行/etc/rc.d/rc.local文件。

       9.执行/bin/login程序,等待用户登陆。

       10.登陆之后开始以shell控制主机。


1.linux内核的引导。

   操作系统的内核是放在文件系统中的,要想正确加载内核就必须识别文件系统。系统刚启动时,需要通过引导加载程序来识别文件系统,引导核心。grub同时支持linux和windows,但windows的家在程序不支持linux文件系统,所以在多系统的时候启动程序用linux的grub来引导,所以装机的时候先装windows后装linu。

   内核文件的位置在/boot分区里,命名为/boot/vmlinz,如果没有分boot分区,则在/分区的前面放置。

   在加载内核的过程中,系统只会以只读的方式加载根目录。在系统启动的时候,会建立虚拟盘,利用initrd和linxrc。加载initrd的映像文件(boot/initrd-xxx.img),并且利用linuxrc程序来加载模块。在核心驱动外部硬件的工作完成后,initrd所建立的虚拟盘会被删除。


2.第一个程序init的加载。

   在内核加载完成后,系统准备好了等待程序的执行。整个linux系统中,第一个执行的程序是/sbin/init。init程序的工作相当多,除了利用/etc/inittab设置运行级别外,还会运行的登记来启动不同的服务(就是chkconfig service 的文件),让linux的使用环境不同。

   在/etc/inittab中的“si::sysinit:/etc/rc.d/rc.sysinit”,表明系统需要主动使用rc.sysinit这个shell脚本来设置系统环境。但这个文件名在各个版本中是不一样的,需要自行查看。


3.init的初始化流程。(/etc/rc.d/rc.sysinit)

   (1)获取网路环境和主机名。读取默认网络环境的配置文件/etc/sysconfig/network。

   (2)测试与载入内存的设备/proc及usb设备/sys。除了/proc外,系统会主动监测是否有usb设备,并主动加载usb驱动,尝试载入usb文件系统。

   (3)决定是否启动SELINUX以及检测SELINUX标签。

   (4)设置启动的banner。

   (5)初始化硬件设备。

   (6)用户自定义模块的加载。用户可以在/etc/sysconfig/modules/*.modules加入自定义的模块,此时会加载到系统中。

   (7)配置内核参数。

   (8)设置主机名及同步等待存储。

   (9)设备mapper的初始化。

   (10)设置raid及LVM等硬盘功能。

   (11)检查硬盘文件系统。

   (12)把根重新挂在为可读写的文件系统。

   (13)启动quota功能。

   (14)启动系统随机数设备。(产生随机数)

   (15)配置计算机中必要的信息,如一些需要验证和加密的文件信息。

   (16)清除启动过程中的临时文件。

   (17)启动swap分区。

   (18)将启动信息加载到/var/log/dmesg文件中。

   (19)离开rc.sysinit文件。


4.启动系统服务/etc/rc.d/rc*.d。

   在结束了rc.sysinit之后,系统可以顺利工作了,只还需要启动系统需要的各种服务,这样主机才能够提供相关的网络和主机功能。根据不同的运行级别启动不同的服务。在指定的rc*.d下启动服务。

   /etc/rc*.d/目录下的内容都是以K或S开头的链接文件,都链接到/etc/rc.d/init.d/目录下的各种shell脚本。S表示的是启动时需要start的服务内容,K表示关机时需要关闭的服务内容。如果需要自己增加启动内容时,可以在init.d目录中增加相关的shell脚本,然后在rc*.d目录中简历链接文件只想该shell脚本。这些shell脚本的启动或结束的顺序是由S或K字母后面的数字决定的。数字既执行的顺序。


5.用户自定义的引导程序。(/etc/rc.d/rc.local)

   自定义的程序只需要放在rc.local中既可执行,省去了放在/etc/rc.d/rc*.d/的繁琐。


6.启动终端和X-Window界面。

   完成了所有启动任务后,linux会启动终端或者X-Window来等待用户登录。mingetty是启动终端的命令。/etc/X11/prefdm    -nodaemon主要启动X-Window。


【每日一记3.15】linux启动流程,布布扣,bubuko.com

【每日一记3.15】linux启动流程

上一篇:Linux常用命令总结


下一篇:Hibernate实战_笔记24(主键生成策略、类映射选项)