您好,欢迎访问一九零五行业门户网

centos6启动流程是什么

centos6启动流程是什么?
下面开始简单的了解一下centos6的启动流程吧。
 第一步、硬件启动阶段
简单说一下这一步的流程:打开电源;post自检;bios逐一排查设备启动顺序;如果是硬盘启动,读取硬盘的mbr的bootloader。(这里默认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/sdadefault=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/rclrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc0.d -> rc.d/rc0.dlrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc1.d -> rc.d/rc1.dlrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc2.d -> rc.d/rc2.dlrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc3.d -> rc.d/rc3.dlrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc4.d -> rc.d/rc4.dlrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc5.d -> rc.d/rc5.dlrwxrwxrwx. 1 root root 10 mar 13 2018 /etc/rc6.d -> rc.d/rc6.ddrwxr-xr-x. 10 root root 4096 feb 18 02:17 /etc/rc.dlrwxrwxrwx. 1 root root 13 mar 13 2018 /etc/rc.local -> rc.d/rc.locallrwxrwxrwx. 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.sysinitrc 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 s80postfixk10psacct 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启动流程是什么的详细内容。
其它类似信息

推荐信息