【每日一记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。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。