设为首页 收藏本站
查看: 848|回复: 0

[经验分享] CentOS5/6启动过程

[复制链接]

尚未签到

发表于 2018-4-21 14:00:33 | 显示全部楼层 |阅读模式
  CentOS系列的操作系统的架构类型是X86架构,其内核实现方式是单内核,单内核的意义的在于他对外表现为一个应用程序即一个进程启动整个系统,所有的功能都集中在这一个进程里;而windows系列的内核实现方式是微内核,每种功能使用单独一个子系统来实现;CentOS系列是由内核核心结合内核模块来一起实现内核功能的,将内核所必须的功能放入内核文件当中,而将内核不一定必须的功能放入内核模块当中,当需要这类功能时,再将内核模块插入内核中,在不使用时,再将内核模块从内核中移除即可;

  CentOS5系列操作系统的启动流程:
  CentOS5在启动时,首先要进行POST加电自检,由BIOS将ROM只读存储器加载只RAM内存当中,由RAM检查ROM是否有损坏,若无,则正常启动,若有,则启动应急方案,当加电自检没有问题后,再有BIOS按一定顺序去检索BIOS中的设备,找到第一个Bootloader,引导加载程序,则该设备便为本次启动所需要的设备;Bootloader引导加载程序接手后,BIOS就退出,由Bootloader去找设备中的内核文件,若找到,则将内核文件载入内存,至此Bootloader退出,由内核进行接下来的操作;
  Bootloader,引导加载程序;其作用在于决定到何种硬件设备下加载操作系统;Bootloader目前应用广泛的两种类型是LuLo和grub,但LuLo的缺陷在于不能支持大硬盘,常用于手机的引导加载程序,而grub就是广泛应用于Linux的操作系统引导程序,CentOS5和6的引导程序用的就是grub legacy版本,而CentOS7用的则是grub2,两种的功能相差较大;grub的主要作用是提供一个交互的菜单界面,上面列举了当前系统所有内核版本;为系统找到启动的内核,并将内核载入到RAM内存当中,将权限移交给内核;grub还可以提供一个命令行交互界面,可以读取指定磁盘内的内核信息以及init信息,从而创建一个小的Linux;grub legacy主要分为三个组成,stage1,是MBR的前446字节,而stage1.5则可以帮助stage1识别stage2的文件系统,而内核核心文件又一定与stage2放在一起,所以stage1.5就可以帮助找到系统中的核心文件,并加载到内存;
  内核,当Bootloader退出,由内核接手后,内核进行系统初始化,它可以找到系统中的硬件设备,对硬件设备进行驱动,当遇到其不能驱动的硬件设备时,就启用ramdisk程序加载驱动,然后挂载根文件系统,最后启动可以间接启动所有应用程序的那个唯一的进程/sbin/init进程;之前有说,内核包含内核核心文件以及内核模块文件,当内核需要时则将模块导入,否则删除,在这里说一些有关内核的一些基本命令;
  lsmod:显示内核核心中已经装载的内核模块;
  insmod:插入内核模块到内核核心,但这个命令并不会解决依赖关系,当依赖关系有缺失时,该命令不会生效;
  rmmod:卸载内核模块;
  modinfo:可以获取内核模块信息
  -n:获取内核模块的绝对路径;
  -a:显示模块的作者信息;
  -d:显示模块的描述;
  -F:仅显示所提取的信息,只能提一个;
  modprobe:可以动态装载内核模块以及卸载内核模块;它可以解决内核模块的依赖关系,即便缺失,也可以装载到内核中;
  modprobe 内核模块名:装载内核模块;
  modprobe -r 内核模块名:卸载内核模块;
  内核在挂载完rootfs之后,所执行的init的进程;这个进程可以说是所有应用程序或所有进程所以来的进程,启动它,就可以启动下属所有子进程;
  init进程在CentOS系列中典型的三个类别:
  CentOS5:Sysv init,其配置文件为/etc/inittab
  CentOS6:Upstart init,其配置文件为/etc/inittab
  CentOS7:Systemd,其配置文件为/etc/systemd/system
  /usr/lib/systemd/system
  CentOS7的Systemd就相当于正常意义下的init;
  首先说明一下CentOS5的Sysv init
  CentOS5的init的特点在于,他要去逐个去执行配置文件中的每个脚本来完成系统初始化;
  init的配置文件/etc/inittab:
  1.确定系统初始化所要完成的任务
  需要开启或关闭哪些服务;
  当电源失效时,需要进行什么操作;
  当验证用户身份无误时,如何提供登录提示符;
  如何完成系统初始化;
  定义了按下"Ctrl + Alt + Delete"组合键时,系统将采取什么行为;
  2.规定任务执行:
  执行任务的格式
  id:runlevel:action:process
  id:操作的唯一标识符;
  runlevel:运行级别;
  运行级别:
  0:关机;
  1:单用户模式,无需验证,直接登录;
  2:多用户模式,会启动网络功能,但不会启动NFS;
  3:多用户模式,完全的功能模式,仅使用命令行界面,不使用图形化界面;
  4:预留级别;
  5:多用户模式,可使用命令行界面,也可使用图形界面,默认使用图形界面;
  6:开机;
  action:执行任务所需要的操作;
  wait:等待切换至此任务所在的运行级别时,运行一次;
  respawn:一旦此任务结束,就自动重新启动此任务;
  initdefault:用于设定默认的运行级别,通常后面的process省略
  sysinit:设置系统初始化的方式,一般情况下此处运行/etc/rc.d/rc.sysinit脚本;
  /etc/rc.d/rc.sysinit作用:
  1.设置主机名称;
  2.设置系统欢迎语;
  3.激活swap设备;
  4.挂载/etc/fstab中的所有文件系统;
  5.激活lvm和raid设备;
  6.以读写的方式挂载rootfs文件系统;
  7.激活udev和SELinux;
  8.根据/etc/sysctl.conf文件设置内核参数;
  9.加载额外的驱动程序;

  10.完成系统清理工作;
  CentOS5中/etc/rc.d/rc.sysinit中的部分内容
DSC0000.jpg

  当执行该脚本时,执行脚本中的任务,上述任务格式,第一行表示,id为l0,执行级别为0,wait表示等待达到运行级别0时,执行/etc/rc.d/rc0脚本;
  /etc/rc.d/rc#系列脚本中,“#”表示与运行级别相对应的脚本,rc#中的脚本命名都是一些K和S开头的脚本,K表示关闭,K后面的两位数字表示优先级,数字越小优先级越高,依赖于其他服务的服务先关闭;SS表示开启,S后面的两位数字表示优先级,数字越小优先级越高,被其他服务所依赖的服务先开启;
  脚本框架:
  for i in /etc/rc.d/rc#.d/K* ; do
  $i stop
  done
  

  for i in /etc/rc.d/rc#.d/S* ; do
  $i start
  done
  所有由rc脚本关闭或启动的链接文件的源文件都存在于/etc/rc.d/init.d,系统为了方便使用,为此目录创建了链接/etc/init.d

  所有/etc/init.d(/etc/rc.d/init.d)目录中的脚本执行方式:

  # /etc/init.d/SRV_SCRIPT {start|stop|restart|status}
  # service SRV_SCRIPT {start|stop|restart|status}
  

  CentOS5启动流程:
  第一:加电自检,BIOS将ROM导入到RAM内存中,检查是否有错;
  第二:BootSequence,按一定顺序查找BIOS设备中的第一个引导程序,找到引导程序后,BIOS交权,退出;
  第三:Bootloader,引导程序通过三层stage结构,找到与stage2一块的内核文件,将内核载入内存,并交权;
  第四:内核,以只读方式挂载根文件系统,驱动物理设备,当无法驱动某个物理设备时,调用ramdisk装在驱动;执行/sbin/init命令设置默认运行级别,实现系统初始化,一个一个去开启和关闭某些服务;Ctrl+Alt+Del热键功能,UPS电源的失效与恢复之后的操作,直到生成终端[启动图形界面]
  

  CentOS6启动流程与CentOS5很相似,唯一不同在于CentOS6的init是upstart,而5的init是Sysv,6的init可以并行执行/etc/inittab中的脚本,速度比5的要快得多;
  CentOS5启动流程:
第一:加电自检,BIOS将ROM导入到RAM内存中,检查是否有错;
第二:BootSequence,按一定顺序查找BIOS设备中的第一个引导程序,找到引导程序后,BIOS交权,退出;
第三:Bootloader,引导程序通过三层stage结构,找到与stage2一块的内核文件,将内核载入内存,并交权;
第四:内核,以只读方式挂载根文件系统,驱动物理设备,当无法驱动某个物理设备时,调用ramdisk装在驱动;执行/sbin/init命令,设置默认运行级别,系统初始化,并行地去开启和关闭某些服务;
  

  

  

  

  

  

  

  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-450110-1-1.html 上篇帖子: Liunx CentOS6编译安装LAMP 下篇帖子: centos 6.5 编译安装zabbix3.2
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表