首页 > 代码库 > linux开机流程、模块管理与Loader(续)
linux开机流程、模块管理与Loader(续)
1.init处理系统初始化流程:
1)/etc/rc.d/rc.sysinit这个脚本用来设定系统环境,具体为:
取得网络环境与主机类型(读取/etc/sysconfig/network取得主机名与默认网关等网络环境)
测试与挂载内存装置/proc及USB装置/sys(除了挂载内存装置/proc外,还会主动侦测系统上是否具有usb的装置,若有则会注定加载usb的 驱动程序,并尝试挂载usb的文件系统)
决定是否启动SELinux
启动系统的随机数生成器
设定终端机字形
设定显示于开机过程中欢迎画面
接口设备的侦测与PnP(Plug and Play)参数的测试,根据核心在开机时侦测的结果(/proc/sys/kernel/modprobe)开始进行ide/scsi/网络/音效等接口设备的侦测,以及利用已加载的核心模块进行PnP装置的参数测试
用户自定义模块的加载,使用者可以在/etc/sysconfig/modules/*.moudles加入自定义的模块,则此时会被加载到系统当中
加载核心相关的设定,系统会主动去读取/etc/sysctl.conf这个档案的设定值,使核心功能成为我们想要的样子
设定主机与初始化电源管理模块(ACPI)
初始化软件磁盘阵列:主要是透过/etc/mdadm.conf来设定好的
初始化LVM的文件系统功能
以fsck检验磁盘文件系统:会进行filesystem check
进行磁盘配额quota的转换(非必要)
重新以可擦写模式挂载系统磁盘
启动quota功能:所以我们不需要自动定义quotaon的动作
启动系统虚拟随机生成器
清除开机过程当中的临时文件
将开机相关信息加载/var/log/dmesg档案中
2.启动系统服务与相关配置文件
加载核心让整个系统准备接受指令来工作,再经过/etc/rc.d/rc.sysinit的系统模块与相关硬件信息的初始化后,你的CentOS系统应该已经顺利工作了。只是,我们还的要启动系统所需的各项服务,这样主机才能提供我们相关的网络或者是主机功能。
3./etc/inittab中的实例:“l5:5:wait:/etc/rc.d/rc 5”解读:
1)透过外部第一号参数来取得想要执行的脚本目录。即由/etcrc.d/rc 5可以取得/etc/rc5.d/这个目录来准备处理相关的脚本程序
2)找到/etc/rc5.d/K??*开头的档案,并进行/etc/rc5.d/K??* stop
3)找到/etc/rc5.d/S??*开头的档案,并进行/etc/rc5.d/S??* start
/etc/rc5.d/S??*底下实际是一些链接档,链到/etc/init.d/目录下对应的服务程序
4.在完成预设runlevel指定的各项服务启动后,就会执行/etc/rc.d/rc.local这个档案用于用户设定自己想要的开机后执行的程序或服务。
5.在完成了系统所有服务的启动后,接下来Linux就会启动终端机或者Xwindow来等待使用者登入。另外在/etc/inittab中“x:5:respawn:/etc/X11/prefdm -nodaemon”这句的意思是当后面的指令被终止(terminal)时,init会主动的重新启动该项目,这就是为何我们登入tty1终端接口后,以exit离开后,系统还是会重新等待用户输入的原因。
本文出自 “虎哥的博客” 博客,请务必保留此出处http://7613577.blog.51cto.com/7603577/1603743
linux开机流程、模块管理与Loader(续)