CentOS 5和6的启动流程

Linux: kernel+rootfs 

kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能

rootfs:

glibc

库:函数集合, function, 调用接口

过程调用:procedure

函数调用:function

程序 

内核设计流派:

单内核设计:Linux

把所有功能集成于同一个程序;

微内核设计:Windows, Solaris

每种功能使用一个单独子系统实现; 

Linux内核特点:

支持模块化:.ko

支持模块的动态装载和卸载; 

组成部分:

核心文件:/boot/vmlinuz-VERSION-release

例一:内核的核心文件

[root@localhost lib]# ls /boot/
vmlinuz-3.10.0-514.el7.x86_64

ramdisk

CentOS 5: /boot/initrd-VERSION-release.img

CentOS 6: /boot/initramfs-VERSION-release.img

模块文件:/lib/modules/VERSION-release

例一:查看模块文件

[root@localhost lib]# ls /lib/modules/3.10.0-514.el7.x86_64/
build              modules.block        modules.devname      modules.softdep      vdso
extra              modules.builtin      modules.drm          modules.symbols      weak-updates
kernel             modules.builtin.bin  modules.modesetting  modules.symbols.bin
modules.alias      modules.dep          modules.networking   source
modules.alias.bin  modules.dep.bin      modules.order        updates 

CentOS 系统启动流程: 

POST:加电自检;

ROMCMOS

BIOSBasic Input and Output System

ROM+RAM

BOOT Sequence:

按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备;

bootloader: 引导加载器,程序

windows: ntloader

Linux

LILOLInux LOader

GRUB: GRand Uniform Bootloader

GRUB 0.X: GRUB Legacy

GRUB 1.x: GRUB2 

功能:提供一个菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核; 

MBR:

446: bootloader

64: fat

2: 55AA 

GRUB:

bootloader: 1st stage

disk: 2nd stage 

kernel

自身初始化:

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

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

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

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

init程序的类型:

SysV: init, CentOS 5

配置文件:/etc/inittab 

Upstart: init, CentOS 6

配置文件:/etc/inittab, /etc/init/*.conf 

Systemdsystemd, CentOS 7

配置文件:/usr/lib/systemd/system, /etc/systemd/system

例一:centos7 init内核配置文件

[root@localhost ~]# ls /etc/systemd/system
basic.target.wants                                       display-manager.service
bluetooth.target.wants                                   getty.target.wants

例二:centos7 init内核配置文件

[root@localhost ~]# ls /usr/lib/systemd/system
abrt-ccpp.service                        paths.target
abrtd.service                            plymouth-halt.service 

ramdisk 

内核中的特性之一:使用缓冲和缓存来回事对磁盘上的文件访问; 

ramdisk –> ramfs 

CentOS 5: initrd,  工具程序:mkinitrd

CentOS 6: initramfs, 工具程序:mkinitrd, dracut 

系统初始化:

POST –> BootSequence (BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs(只读) –> init 

/sbin/init 

CentOS 5: 

运行级别:为了系统的运行或维护等应用目的而设定; 

0-67个级别

0:关机

1:单用户模式(root, 无须登录), single, 维护模式;

2: 多用户模式,会启动网络功能,但不会启动NFS;维护模式;

3:多用户模式,正常模式;文本界面;

4:预留级别;可同3级别;

5:多用户模式,正常模式;图形界面;

6:重启 

默认级别:

3, 5 

切换级别:

init #

查看级别:

runlevel

who -r 

配置文件:/etc/inittab

每一行定义一种action以及与之对应的process

id:runlevel:action:process

action:

wait: 切换至此级别运行一次;

respawn:此process终止,就重新启动之;

initdefault:设定默认运行级别;process省略;

sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit 

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l6:6:wait:/etc/rc.d/rc 6 

说明:rc 0 –> 意味着读取/etc/rc.d/rc0.d/

K*: K##*##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务;

S*: S##*##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务;

for srv in /etc/rc.d/rc0.d/K*; do

$srv stop

done 

for srv in /etc/rc.d/rc0.d/S*; do

$srv start

done 

chkconfig命令

查看服务在所有级别的启动或关闭设定情形:

chkconfig [–list] [name]

例一:查看所有服务 

[root@localhost ~]# chkconfig --list 

例二:更改服务权限

[root@localhost ~]# chkconfig --level 3 network off

添加:

SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d) 

chkconfig –add name 

#!/bin/bash

#

# chkconfig: LLLL nn nn 

删除:

chkconfig –del name 

修改指定的链接类型

chkconfig [–level levels] name <on|off|reset>

–level LLLL: 指定要设置的级别;省略时表示2345 

注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中; 

tty1:2345:respawn:/usr/sbin/mingetty tty1

tty2:2345:respawn:/usr/sbin/mingetty tty2

tty6:2345:respawn:/usr/sbin/mingetty tty6

 mingetty会调用login程序 

/etc/rc.d/rc.sysinit: 系统初始化脚本

(1) 设置主机名;

(2) 设置欢迎信息;

(3) 激活udevselinux;

(4) 挂载/etc/fstab文件中定义的文件系统;

(5) 检测根文件系统,并以读写方式重新挂载根文件系统;

(6) 设置系统时钟;

(7) 激活swap设备;

(8) 根据/etc/sysctl.conf文件设置内核参数;

(9) 激活lvmsoftware raid设备;

(10) 加载额外设备的驱动程序;

(11) 清理操作;

 总结:/sbin/init –> (/etc/inittab) –> 设置默认运行级别 –> 运行系统初始脚本、完成系统初始化 –> 关闭对应下需要关闭的服务,启动需要启动服务 –> 设置登录终端 

CentOS 6: 

init程序为: upstart, 其配置文件:

/etc/inittab, /etc/init/*.conf 

注意:/etc/init/*.conf文件语法 遵循 upstart配置文件语法格式;

回顾:

CentOS 6启动流程:

POST –> Boot Sequence(BIOS) –> Boot Loader (MBR) –> Kernel(ramdisk) –> rootfs –> switchroot –> /sbin/init –>(/etc/inittab, /etc/init/*.conf) –> 设定默认运行级别 –> 系统初始化脚本 –> 关闭或启动对应级别下的服务 –> 启动终端

 

原创文章,作者:kang,如若转载,请注明出处:http://www.178linux.com/77615

(0)
kangkang
上一篇 2016-08-23 14:54
下一篇 2016-08-23 19:18

相关推荐

  • 网络班N22期第六周博客作业

    请详细总结vim编辑器的使用并完成以下练习题 打开文件: ~]# vim [options] [file ..]       +#:打开文件后,直接让光标处于第#行       +/PART…

    Linux干货 2016-09-26
  • 22期+第一周课堂练习

    一.计算机的组成及其功能 计算机的组成及其功能结构图      各部件的关系图          二.按系列罗列Linux的发行版,并描述不同版本之间的联系与区别 1.各版本逻辑结构图 2.各版本的介绍   Redhat,应该称为Redhat系列,包括RHEL(Redh…

    Linux干货 2016-08-15
  • ansible部署KeepAlived动态站点

    一、设计原因 利用ansible可以自动化部署KeepAlived 的双方模型(其中包括两个动态的站点),多组服务器需要一样的部署时 可以利用ansible写的程序来代替重复性的操作。 二、设计拓扑结构及服务器详情   三、详细步骤 1、环境的搭建 (1)安装ansible,同时配置私钥免密码进行通信 [root@localhost ~]# ssh…

    2015-05-13
  • ☞Nginx 代理与缓存

    Nginx 代理与缓存 代理、缓存、集群概述 缓存控制(ngx_http_proxy_module) 配置nginx代理的URI资源类型 增加X-Forwarded-For值 启用proxy缓存URL资源 封装首部(ngx_http_headers_module) 响应报文首部添加代理信息 代理调度模块(ngx_http_upstream_module) R…

    Linux干货 2016-10-30
  • TCP 的那些事儿(上)

       TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解 卷1:协议》(当然,你也可以去读一下RFC793以及后面N多的RFC)。另…

    Linux干货 2015-04-01
  • 说说web和http以及lamp/lnmp

    <span style="font-size: 24px;font-family: 宋体,SimSun">**说说web和http以及lamp/lnmp**</span> 说说web和http以及lamp/lnmp 在这篇文章当中你将看到如下内容: web与http的简介,网页的分类 度量网站流量的几个术语——知道…

    2016-05-28