CentOS 5,6 系统启动流程详解

一、linux 组成介绍

1.linux 组成:

Linux: kernel+rootfs(根文件系统)

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

rootfs: 程序和glibc

库:函数集合, function, 调用接口(头文件负责描述)

过程调用: procedure,无返回值

函数调用: function

程序:二进制执行文件

2.内核设计流派:

单内核(monolithic kernel): Linux

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

微内核(micro kernel): Windows, Solaris

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

3. Linux内核特点:

支持模块化: .ko(内核对象)

如:文件系统,硬件驱动,网络协议等

支持内核模块的动态装载和卸载

组成部分:

核心文件: /boot/vmlinuz-VERSION-release (出厂时,直接从光盘中拷贝而得)

ramdisk:辅助的伪根系统

(包含各类驱动,以供启动时加载真正的根文件系统)

/boot/initramfs-######.img   (系统安装之时才会生成)

=============================================================================================================

centos 6.8-initramfs-2.6.32-642.el6.x86_64.img  简析:

(initramfs-2.6.32-642.el6.x86_64.img 以gzip格式压缩,解压时候,需要在尾部添加.gz后缀)

解压后:

使用cpio 解压: (  cpio -id < initramfs-2.6.32-642.el6.x86_64.img.cpio)

initramfs 作为临时伪根文件系统,有类似于根的各类所需文件、驱动,可供启动时候加载真正的根文件系统

==============================================================================================================

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

修复:

救援模式下,

chroot /mnt/sysimage

cd /boot

mkinitrd initrd-`uname -r`.img  `uname -r`     (centos5 )

(第二个uname -r ,是作为initrd 的参数)

exit

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

修复: (centos 6 )

救援模式下,

chroot /mnt/sysimage

cd /boot

mkinitrd initramfs-`uname -r`.img  `uname -r`    (centos6)

exit

( centos 7 需要进入grub 修复:)

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

命令补充:   lsmod 查看加载的模块;

moinfo 查看指定模块信息

modprobe 加载模块;

rmmod  / modprobe -r  卸载模块

===============================================================================================================

二、linux 系统启动流程详解:

1. Centos  6  启动流程

2. centos6 启动流程

1.加载BIOS的硬件信息,获取第一个启动设备。

2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息

3.加载核心操作系统的核心信息,核心开始解压缩,(加载initramfs.img)并尝

试驱动所有的硬件设备。

4.核型执行init程序并获取运行信息。

5.Init执行/etc/rc.d/rc.sysinit文件。

6.启动核心的外挂模块(/etc/modprobe.conf)。

7.Init执行运行的各个批处理文件(scripts).

8.Init执行/etc/rc.d/rc.local. (出现登陆界面)

9.执行/bin/login程序,等待用户登录。

10.登录之后开始以Shell控制主机。

3.  启动流程详解:

系统整体初始化流程:

POST –> BootSequence (BIOS) –>

Bootloader(MBR) –>(进入/boot) kernel(ramdisk) –> rootfs(只读) —

> init( systemd)

POST: Power-On-Self-Test,加电自检,是BIOS功能的一个主要部

分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接

口、键盘、 CD-ROM光驱等硬件情况的检测。

ROM: BIOS, Basic Input and Output System,保存着有关计

算机系统最重要的基本输入输出程序,系统信息设置、 开机加电自检程序和

系统启动自举程序等。

RAM: CMOS互补金属氧化物半导体,保存各项参数的设定

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

bootloader: 引导加载器,引导程序 (MBR第一个扇区)

windows: ntloader,仅是启动OS

Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内

核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把

系统控制权移交给内核

LILO: LInux LOader(早期)

GRUB: GRand Unified Bootloader

GRUB 0.X: GRUB Legacy, GRUB2

MBR:

446: bootloader, 64: 分区表, 2: 55AA

(446字节内可寻找到bootloader所在盘区)

GRUB:(grub 目录下,存放着各阶段的备份文件)

primary boot loader :

1st stage–》 加载bootloader

1.5 stage–> 进入/boot目录,加载vmlinux,initramfs

secondary boot loader :

2nd stage, 读取分区根文件系统

kernel:

自身初始化:

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

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

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

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

4.init程序的类型:

SysV: init, CentOS 5之前

配置文件: /etc/inittab

Upstart: init,CentOS 6

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

Systemd: systemd, CentOS 7

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

/etc/systemd/system

ramdisk:

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

ramdisk –> ramfs 提高速度

CentOS 5: initrd, 工具程序: mkinitrd

CentOS 6: initramfs, 工具程序: mkinitrd,  dracut(实际调用文件)

5. 运行级别

运行级别配置路径: /sbin/init   (CentOS 5 )

(/etc/inittab 下可以定义默认启动界面A)

运行级别:为系统运行或维护等目的而设定; 0-6: 7个级别

0:关机

1:单用户模式(root自动登录), single, 维护模式

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

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

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

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

6:重启

默认级别: 3, 5

切换级别: init #

查看级别: runlevel ; who -r

6.init 初始化过程详解

1) init 初始化流程:

init读取其初始化文件: /etc/inittab

初始运行级别(RUN LEVEL)

系统初始化脚本

对应运行级别的脚本目录

捕获某个关键字顺序

定义UPS电源终端/恢复脚本

在虚拟控制台生成getty

在运行级别5初始化X

2) CentOS5的inittab文件详解:

配置文件路径: /etc/inittab

———————————————————————————-

Centos 5.4 —–/etc/inittab:

# inittab       This file describes how the INIT process should set up

#               the system in a certain run-level.

#

# Author:       Miquel van Smoorenburg, <[email protected]>

#               Modified for RHS Linux by Marc Ewing and Donnie Barnes

#

# Default runlevel. The runlevels used by RHS 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:

# System initialization.

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

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

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

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

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

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes

# of power left.  Schedule a shutdown for 2 minutes from now.

# This does, of course, assume you have powerd installed and your

# UPS connected and working correctly.

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown

Cancelled"

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm -nodaemon

———————————————————————————

centos 6—–/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:5:initdefault:

——————————————————————————————

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

id:runlevel:action:process

id:它是每个登记项的标识符,用于唯一标识每个登记项,不能重复

runlevels:系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,

各级别之间直接写不用分隔符;如果为空,表示在所有的运行级别运行。Linux的运行级别有:

0:表示关机

1:表示单用户模式,在这个模式中,用户登录不需要密码,默认网卡驱动是不被

加载,一些服务不能用。

2:表示多用户模式,NFS服务不开启

3,表示命令行模式

4,这个模式保留未用

5,表示图形用户模式

6,表示重启系统

action:表示对应登记项的process在一定条件下所要执行的动作。

具体动作有:

respawn:当process终止后马上启动一个新的

wait:当进入指定的runlevels后process才会启动一次,并且到离开这个

runlevels终止

initdefault:设定默认的运行级别,即我们开机之后默认进入的运行级别,

不能是0,6

sysinit:系统初始化,只有系统开机或重新启动的时候,

这个process才会被执行一次

powerwait:当init接收到电源失败信号的时候执行相应的process,

并且如果init有进程在运行,会等待这个进程完成之后,再执行相应的process

powerfail:当init接收到电源失败信号的时候执行相应的process,并且如果

init有进程在运行,不会等待这个进程完成,它会直接执行相应的process

powerokwait:电源已经故障,但是在等待执行对应操作的时候突然来电了就执行对应

的process

powerfailnow:当电源故障并且init被通知UPS电源已经快耗尽执行相对应的process

ctrlaltdel:当用户按下ctrl+alt+del这个组合键的时候执行对应的process

boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,

也不重新启动该进程

bootwait:只有在引导过程中,才执行该进程,并等待进程的结束;当该进程死亡时,

也不重新启动该进程

off:如果process正在运行,那么就发出一个警告信号,等待20秒后,

再通过杀死信号强行终止该process。如果process并不存在那么就忽略该登记项

once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个

登记项;当该进程死亡时,init也不重新启动该进程

process:表示启动哪个程序或脚本或执行哪个命令等

—————————————————————————————–

centos 5.4 –/etc/inittab内容示例:

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

ca::ctrlaltdel:/sbin/shutdown -t3 -r now  #定义快捷键操作

# 按下快捷键3秒后重启系统

——————————————————————————————

3)  CentOS6 /etc/inittab和相关文件

(CentOS6中,已经不再定义其他内容,进有默认开机启动流程,转用下列脚本来完成

原有执行操作)

/etc/inittab

设置系统默认的运行级别

id:3:initdefaut:

/etc/init/control-alt-delete.conf    # 定义快捷键操作

/etc/init/tty.conf   #tty 终端配置脚本

/etc/init/start-ttys.conf       #登录脚本

/etc/init/rc.conf #运行级别配置脚本

/etc/init/prefdm.conf     #定义级别5中的图形界面启动的脚本

4) /etc/rc.d/rc.sysinit

/etc/rc.d/rc.sysinit: 在所有运行级别下,init 依赖/rc.sysinit 进行系统初始化

作用:

(1) 设置主机名

(2) 设置欢迎信息

(3) 激活udev和selinux

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

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

(6) 设置系统时钟

(7) 激活swap设备

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

(9) 激活lvm及software raid设备

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

(11) 清理操作

5)rc 脚本

说明: rc N –> 意味着读取/etc/rc.d/rcN.d/下脚本

(服务若在指定模式下为开启,在对应级别的rc#.d 中,为S开头,反之为K开头)

(K/S后以字符顺序排列)

(目录下全部文件均为软链接,源为init.d下的对应脚本)

K*: K##*: ##运行次序;数字越小,越先运行;数字

越小的服务,通常为依赖到别的服务

S*: S##*: ##运行次序;数字越小,越先运行;数字

越小的服务,通常为被依赖到的服务

s|k 开头脚本内容示例:

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

$srv stop

done

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

$srv start

done

=================================================================================================================================

三、chkconfig命令

chkconfig命令

(设置开启 | 关闭状态后,会在对应级别中生成 s| k 开头的服务文件)

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

chkconfig [–list] [name]

添加:(可添加自编服务脚本)

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

(无需在结尾添加.sh)

2.服务脚本内容示例:

#!/bin/bash

# chkconfig: LLLL nn mm

#LLLL 表示初始在哪个级别下启动, -表示都不启动

nn : 启动顺序号(建议自编服务号为较大数字)

mm : 关闭时的顺序号

3.chmod +x …..

4.chkconfig –add service_name

5.service ## start 即可测试添加服务脚本

删除:

chkconfig –del name

修改指定的链接类型

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

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

eg:

chkconfig –level 5 atd on | off

ntsysv命令 :(交互式服务调整,一次只能进入一个模式,默认为当前模式)

–level=#  可进入指定模式下调整

=====================================================================================================================================

四、xinetd管理服务与自定义服务

(xinetd: 超级守护进程 , 7已经取消,仅在5、6中还存在)

配置文件: /etc/xinetd.conf

瞬态( Transient)服务(非独立服务,不可独立工作)被xinetd进程所管理:

启动|关闭:  由xinetd 检查chkconfig中对应服务配置,管理其自启动状态

工作(监听):  依赖于xinetd运行,对应服务的请求,首先被xinetd代理监听,

xinetd收到请求才唤醒对应服务

chkconfig –list 中 xinetd 管理的瞬态服务项目:

修改服务自启动:/etc/xinetd.d/<service>:

修改disable 即可

或者使用chkconfig 开启也可以。

与libwrap.so文件链接

用chkconfig控制的服务:

chkconfig tftp on

service 命令:手动管理服务

service 服务 start|stop|restart

service –status-all

==========================================================================================================================================

五、/etc/rc.d/rc.local脚本

注意:正常级别下,最后启动一个服务S99local没有链接至

/etc/rc.d/init.d一个服务脚本,而是指向了

/etc/rc.d/rc.local脚本

不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且

又想开机时自动运行的命令,可直接放置于

/etc/rc.d/rc.local文件中

/etc/rc.d/rc.local在指定运行级别脚本后运行

可以根据情况,进行自定义修改

centos 5—tty 终端配置(/etc/inittab中的内容)

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

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

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

mingetty会自动调用login程序

x:5:respawn:/etc/X11/prefdm -nodaemon

六、破解root口令

启动菜单–》 按“a”–> 输入: 1|S |s |single –>进入单用户模式(root) ,此模式下,直接以root身份登录,

且无需输入密码,使用passwd命令即可修改密码

时间: 2024-10-10 23:15:48

CentOS 5,6 系统启动流程详解的相关文章

【一点一滴,成材之基!】Linux系统启动流程详解

目录:(一)了解系统启动流程(二)了解GRUB的作用(三)重置root密码(四)当GRUB丢失的时候如何修复系统(五)当/boot里缺失文件时如何修复 (一)了解系统启动流程(1.1)①在我们按下开机键以后,最先工作的是我们硬件BIOS芯片,其中BIOS芯片主要是监测主机的各项硬件包括键盘.鼠标.显示屏.硬盘等等是否都是正常工作的状态:②如果BIOS芯片检测是正常的,则会将系统的引导权交给系统的MBR(主引导记录),在MBR中其中前446B的字节主要是BootLoader引导加载器,64B的字节

linux系统启动流程详解

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

CentOS开机流程详解

CentOS开机流程详解 一.linux开机流程: BIOS:(Basic Input Output System)基本输入输出系统,它是一组固化到计算机内主板上一个ROM芯片 上的程序,保存着计算机最重要的基本输入输出的程序.开机后自检程序和系统自启动程序,可从CMOS中读写系统设置的具体信息. MBR:Master Boot Record,主要引导记录区. Boot Loader:启动引导程序. 二.详细流程 第一步:加载BIOS 打开计算机电源,计算机硬件会自动加载BIOS,读取BIOS内

Android4.0 input事件输入流程详解(中间层到应用层)

在Android系统中,类似于键盘按键.触摸屏等事件是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序进行处理.系统启动时,窗口管理服务也会启动,该服务启动过程中,会通过系统输入管理器InputManager来负责监控键盘消息.当某一个Activity激活时,会在该Service下注册一个接收消息的通道,表明可以处理具体的消息,然后当有消息时,InputManager就会分发给当前处于激活状态下的Activity进行处理. InputManager的启动

Linux启动流程详解【转载】

在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件. 我们查看一下,/boot 目录下面大概是这样一些文件: 第二步.启动初始化进程 内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境. 由于init是第一个运行的程序,它的进程编号(pid)就是1.其他所有进程都

unity3d-配置Android环境,打包发布Apk流程详解

31:unity3d-配置Android环境,打包发布Apk流程详解 作者 阿西纳尼 关注 2016.08.28 22:52 字数 498 阅读 1806评论 0喜欢 5 Unity配置Android环境,打包发布安卓流程 一:SDK与JDK下载地址:http://pan.baidu.com/s/1mhVaXHe下载完成后,解压文件 SDK文件 二.安装 JDK 运行安装程序jdk-7u67-windows-x64 Java-JDK 分别点击下一步进行安装. 安装中 在安装过程中先后会出现两次选

Linux系统启动过程详解

 Linux系统启动过程详解 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了. 启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,

ssl协议工作流程详解

SSL 协议 (HTTPS) 握手.工作流程详解 (双向 HTTPS 流程 )SSL 协议的工作流程:服务器认证阶段: 1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接; 2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的"Hello"信息时将包含生成主密钥所需的信息; 3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器; 4)服务器恢复该主密钥,并返回给客户一个用主密钥认证的信

CentOS下安装Apache步骤详解

CentOS下安装Apache步骤详解 一.实验环境 Linux: CentOS release 6.7 (Final) Apache: httpd-2.4.23.tar.gz VMware: VMware 10.0 宿主机: Win10 x64 二.Apache介绍 Apache一款 Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器