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
下一篇 2016-08-23

相关推荐

  • linux 基础(8)—— 变量

    变量:命名的内存空间 1.作用:①数据存储格式                         ②参与的运算                 &nbs…

    2017-08-05
  • linux 软件包管理

    1、Linux软件包管理 Redhat, SUSE: RPM Redhat Package Manager PRM is Package Manager 前端工具:yum, apt-get 后端工具:RPM, dpt   2、rpm: 数据库:/var/lib/rpm  rpm包: 软件包作者下载源程序,编译配置完成后,制作成rpm包 格…

    Linux干货 2017-08-06
  • LVM逻辑卷管理

    为什么要用LVM?     想象一个示例,如果我们给定的分区是50G,过段时间发现空间不够用,此时我们就要重新加一块新硬盘,重新分区格式化,将原来分区上的数据复制过来,再重新挂载,整个过程会非常麻烦,LVM可以很有效的解决这个问题 LVM简介     及逻辑卷(Logical V…

    Linux干货 2016-09-01
  • Linux运维学习历程-第三天-初识Linux

    初识Linux 本章内容    初安装Linus的网络配置    防火墙的关闭    用户    终端    shell    命令纪要 安装linux之后,linux默认网卡开机不是自动激活,并且防火墙开启的,这对初期我们学习linux会…

    Linux干货 2016-08-03
  • 私人定制-linux系统和grub启动流程中问题及解决方案

    系统的启动流程;     POST加电自检–>Boot Sequence(BIOS)–>Boot Loader(MBR)–>kernel(Ramdisk)–>rootfs–>switchroot–>/sbin/i…

    Linux干货 2016-09-13