搜索
首页运维CentOScentos6启动流程是什么

centos6启动流程是什么

Jun 17, 2020 am 11:58 AM
centos6

centos6启动流程是什么

centos6启动流程是什么?

  下面开始简单的了解一下CentOS6的启动流程吧。

 第一步、硬件启动阶段

  简单说一下这一步的流程:打开电源;POST自检;BIOS逐一排查设备启动顺序;如果是硬盘启动,读取硬盘的<span style="color: #ff0000;">MBR</span><span style="color: #ff0000;">BootLoader</span>。(这里默认MBR分区,暂不考虑GPT分区)

  这里主要有三个需要了解的地方BIOS启动顺序、MBR和BootLoader。BIOS启动顺序大部分人应该都知道,我就不赘述了。

(1).MBR

  MBR(Main Boot Record),是硬盘的0柱面,0磁道、1扇区(第一个扇区),称为主引导扇区,也称为主引导记录。它由三部分组成:主引导程序(BootLoader)、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。

  注:硬盘默认一个扇区大小为512字节。

  第一部分,主引导程序(BootLoader)占446个字节,负责从活动分区中装载,并运行系统引导程序

  第二部分,硬盘分区表DPT占64个字节,有4个分区表项,每个分区表项占16个字节,硬盘中分区有多少以及每一个分区的大小都记录在其中。

  第三部分,硬盘有效标志,占2个字节,固定为55AA。如果这个标志位0xAA55,就认为这个是MBR。

(2).BootLoader

  不同的系统有不同的主引导程序(BootLoader)。Windows使用的是NTLDR(NT Loader,Windows NT系列操作系统)、Bootmgr(Boot Manager,Windows Vista,7,8,10),Linux一般使用的是grub(也叫grub legacy)和grub2。

  CentOS6一般使用的是grub。GRUB(GRand Unified Bootloader)是一个来自GNU项目的多操作系统启动程序。

第二步、GRUB引导阶段

 

  简单说一下这一步的流程:GRUB程序加载执行并引导kernel(内核)程序,其中有三个阶段。

  grub引导阶段的文件都在/boot/grub/目录下

(1).Stage1阶段

  这一阶段其实执行的就是系统安装时预先写入到MBR的Bootloader程序。它的任务仅是读取(加载)硬盘的0柱面,0磁道,2扇区的内容(/boot/grub/stage1)并执行。

[root@CentOS6 ~]# ll /boot/grub/stage1 
-rw-r--r--. 1 root root 512 Mar 13  2018 /boot/grub/stage1

  这一阶段,使硬件初始化,为Stage2准备RAM空间(内存空间),读取Stage2到RAM空间(应该涉及到了Stage1.5阶段)。就是Stage1.5阶段或Stage2阶段的入口,引导进入Stage1.5阶段或Stage2阶段。

  另外,这一阶段并没有识别文件系统的能力。  

(2).Stage1.5阶段

  这一阶段是Stage1阶段和Stage2阶段的桥梁,具有识别分区文件系统的能力,此后grub程序便有能力去访问/boot/grub/stage2,并将其读取到内存执行。

[root@CentOS6 ~]# ll -h /boot/grub/stage2  //大于512字节了
-rw-r--r--. 1 root root 124K Mar 21  2018 /boot/grub/stage2
[root@CentOS6 ~]# ls /boot/grub/*stage1_5  //有各种文件系统格式
/boot/grub/e2fs_stage1_5     /boot/grub/minix_stage1_5
/boot/grub/fat_stage1_5      /boot/grub/reiserfs_stage1_5
/boot/grub/ffs_stage1_5      /boot/grub/ufs2_stage1_5
/boot/grub/iso9660_stage1_5  /boot/grub/vstafs_stage1_5
/boot/grub/jfs_stage1_5      /boot/grub/xfs_stage1_5

(3).Stage2阶段

  这一阶段会(初始化本阶段需要用到的硬件,检测系统的内存映像,)解析grub的配置文件/boot/grub/grub.cnf,根据配置文件加载内核镜像到内存中,通过initrd程序建立虚拟根文件系统,最后调用(转交)内核

[root@CentOS6 ~]# cat /boot/grub/grub.conf 
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_centos6-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0  //设置默认启动项为第一个内核
timeout=5  //菜单项等待选项时间为5秒
splashimage=(hd0,0)/grub/splash.xpm.gz  //菜单背景图片
hiddenmenu  //隐藏菜单
//这里有时候会有passwrod参数,意思是进入急救模式(单用户模式)的密码是多少,可以是明文密码,可以是加密密码
//例如password --md5 $1$1S9Xy$1MuGZSoPc2vAtkW.jvz0X/,这代表进入急救模式的password经过MD5加密,
//加密密码为$1$1S9Xy$1MuGZSoPc2vAtkW.jvz0X/
title CentOS 6 (2.6.32-642.el6.x86_64)  //菜单项名称
        root (hd0,0)  //grub查找stage2文件及kernel文件所在设备分区,grub的根。第一块硬盘的第一个分区
        //启动的内核
        kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/mapper/vg_centos6-lv_root 
        rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_centos6/lv_swap crashkernel=128M LANG=zh_CN.UTF-8 
        rd_LVM_LV=vg_centos6/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-642.el6.x86_64.img  //内核匹配的ramfs文件,img是镜像文件

第三步、内核引导阶段

  简单说一下这一步的流程:通过内存中的虚拟根文件系统,加载驱动,然后切换到真正的根文件系统,并执行/sbin/init程序。

第四步、init初始化阶段(又叫系统初始化阶段)

  简单说一下这一步的流程:/sbin/init程序会读取/etc/inittab文件确认运行级别,然后执行/etc/rc.d/rc脚本,根据确认的运行级别启动对应/etc/rc.d/rc#.d/目录下的服务(#为0~6),与此同时执行系统初始化脚本/etc/rc.sysinit(软链接,指向/etc/rc.d/rc.sysinit),还会加载/etc/rc.local(软链接,指向/etc/rc.d/rc.local文件)用户自定义服务(脚本)。

  这里有个有意思的地方,/etc/rc.d/目录下的文件几乎在上一次都有相应的软链接(也就是/etc/目录下),唯一没有的/etc/rc.d/init.d/目录又似乎与/etc/init.d/目录完全相同

[root@CentOS6 ~]# ls -ld /etc/rc*
lrwxrwxrwx.  1 root root    7 Mar 13  2018 /etc/rc -> rc.d/rc
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc0.d -> rc.d/rc0.d
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc1.d -> rc.d/rc1.d
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc2.d -> rc.d/rc2.d
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc3.d -> rc.d/rc3.d
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc4.d -> rc.d/rc4.d
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc5.d -> rc.d/rc5.d
lrwxrwxrwx.  1 root root   10 Mar 13  2018 /etc/rc6.d -> rc.d/rc6.d
drwxr-xr-x. 10 root root 4096 Feb 18 02:17 /etc/rc.d
lrwxrwxrwx.  1 root root   13 Mar 13  2018 /etc/rc.local -> rc.d/rc.local
lrwxrwxrwx.  1 root root   15 Mar 13  2018 /etc/rc.sysinit -> rc.d/rc.sysinit
[root@CentOS6 ~]# ls /etc/rc.d/
init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit
rc      rc1.d  rc3.d  rc5.d  rc.local
[root@CentOS6 ~]# diff -ruNa /etc/rc.d/init.d/ /etc/init.d/

(1)./etc/inittab文件

[root@CentOS6 ~]# cat /etc/inittab 
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Inpidual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 
id:5:initdefault:

  这个文件直接看最后一行的那个数字就好了,我这里是5,就代表启动级别是5。

  另外,还需要了解下系统的启动级别:

    0  关机

    1  单用户模式、维护模式、急救模式,都可以

    2  多用户模式,但没有网络

    3  完整的多用户模式

    4  预留级别,暂时没用,不用考虑

    5  图形界面,XWindows

    6  重启

(2)./etc/rc.d/rc#.d/目录

  在启动时执行的/etc/rc.d/rc脚本,会调用/etc/rc.d/rc#.d/目录下的文件

K01smartd        		K50dnsmasq     	   K73winbind         K88sssd          
S01sysstat       		S12rsyslog     	   S24nfslock         S26udev-post       
S82abrt-ccpp     		K02oddjobd     	   K50xinetd          K74ntpd            
K89netconsole    		S02lvm2-monitor    S13cpuspeed        S24rpcgssd           
S28autofs        		S82abrtd       	   K05wdaemon         K60nfs         
K75ntpdate       		K89rdisc       	   S08ip6tables       S13irqbalance      
S25blk-availability  	        S50bluetooth       S90crond           S80postfix
K10psacct        		K61nfs-rdma    	   K75quota_nld       K92pppoe-server  
S08iptables      		S13rpcbind     	   S25cups            S50kdump           
S95atd           		K10saslauthd   	   K69rpcsvcgssd      K76ypbind          
K95firstboot     		S10network     	   S15mdmonitor       S25netfs             
S55sshd          		S99certmonger  	   K15htcacheclean    K71cgred       
K84wpa_supplicant  		K95rdma      	   S11auditd          S22messagebus      
S26acpid         		S70spice-vdagentd  S99local           K15httpd         
K72cgconfig      		K87restorecond     K99rngd            S11portreserve   
S23NetworkManager  		S26haldaemon

  K开头的文件:要停止的服务(脚本),从01开始关闭,数字越小越优先关闭

  S开头的文件:要启动的服务(脚本),从01开始启动,数字越小越优先启动

  这些文件其实都是软链接,指向的都是/etc/rc.d/init.d/目录下的文件

[root@CentOS6 ~]# ll /etc/rc.d/rc5.d/K01smartd 
lrwxrwxrwx. 1 root root 16 Mar 13  2018 /etc/rc.d/rc5.d/K01smartd -> ../init.d/smartd

第五步、启动终端

  最后一步就是用户登录了,没什么说的。

推荐教程: 《CentOS教程

以上是centos6启动流程是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
使用CentOS:系统管理员指南使用CentOS:系统管理员指南Apr 22, 2025 am 12:04 AM

CentOS是一个基于RedHatEnterpriseLinux的开源操作系统,适合服务器环境。1.安装时选择合适的介质和选项,并配置网络、防火墙和用户权限。2.使用useradd、usermod和systemctl命令进行用户和服务管理,定期更新软件包。3.基本操作包括使用yum安装软件和systemctl管理服务,高级功能如SELinux增强安全性。4.查看系统日志解决常见错误,优化性能需监控资源和清理不必要文件。

CENTOS:安全性,稳定性和性能CENTOS:安全性,稳定性和性能Apr 21, 2025 am 12:11 AM

CentOS因其卓越的安全性、稳定性和性能成为服务器和企业环境的首选。 1)安全性通过SELinux提供强制访问控制,提升系统安全。 2)稳定性得益于长达10年的LTS版本支持,确保系统稳定。 3)性能通过优化内核和系统配置,显着提高系统响应速度和资源利用率。

CentOS替换景观:当前趋势和选择CentOS替换景观:当前趋势和选择Apr 20, 2025 am 12:05 AM

CentOS替代品应具备稳定性、兼容性、社区支持和软件包管理等特征。1.AlmaLinux提供10年支持,2.RockyLinux由CentOS创始人发起,确保与CentOS兼容。选择时需考虑迁移成本和性能优化。

CENTOS:Linux分布介绍CENTOS:Linux分布介绍Apr 19, 2025 am 12:07 AM

CentOS是一个基于RedHatEnterpriseLinux的开源发行版,专注于稳定性和长期支持,适用于各种服务器环境。1.CentOS的设计哲学是稳定,适用于Web、数据库和应用服务器。2.使用YUM作为包管理器,定期发布安全更新。3.安装简单,通过几条命令即可搭建Web服务器。4.高级功能包括使用SELinux增强安全性。5.常见问题如网络配置和软件依赖可以通过nmcli和yumdeplist命令调试。6.性能优化建议包括调整内核参数和使用轻量级Web服务器。

CENTOS IN ACTION:服务器管理和Web托管CENTOS IN ACTION:服务器管理和Web托管Apr 18, 2025 am 12:09 AM

CentOS在服务器管理和Web托管中广泛应用,具体方法包括:1)使用yum和systemctl管理服务器,2)安装并配置Nginx进行Web托管,3)利用top和mpstat优化性能,4)正确配置防火墙和管理磁盘空间以避免常见问题。

CENTOS:社区驱动的Linux分销CENTOS:社区驱动的Linux分销Apr 17, 2025 am 12:03 AM

CentOS是一个稳定的、企业级的Linux发行版,适用于服务器和企业环境。1)它基于RedHatEnterpriseLinux,提供免费、开源且兼容的操作系统。2)CentOS使用Yum包管理系统,简化软件安装和更新。3)支持高级自动化管理,如使用Ansible。4)常见错误包括软件包依赖和服务启动问题,可通过日志文件解决。5)性能优化建议包括使用轻量级软件、定期清理系统和优化内核参数。

Centos之后发生的事情:前方的道路Centos之后发生的事情:前方的道路Apr 16, 2025 am 12:07 AM

CentOS的替代方案包括RockyLinux、AlmaLinux、OracleLinux和SLES。1)RockyLinux和AlmaLinux提供与RHEL兼容的二进制包和长期支持。2)OracleLinux提供企业级支持和Ksplice技术。3)SLES提供长期支持和稳定性,但商业许可可能增加成本。

Centos:探索替代方案Centos:探索替代方案Apr 15, 2025 am 12:03 AM

CentOS的替代方案包括UbuntuServer、Debian、Fedora、RockyLinux和AlmaLinux。1)UbuntuServer适合基本操作,如更新软件包和配置网络。2)Debian适用于高级用法,如使用LXC管理容器。3)RockyLinux可通过调整内核参数优化性能。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中