#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构;

Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核;

从硬盘存储和启动操作系统的角度:

Linux的系统组成:内核 + 根文件系统(rootfs)

内核功能:进程管理,文件系统管理,内存管理,网络协议,驱动程序,安全功能,...

Linux系统的系统运行环境可以分为两部分;

内和空间:内核代码(系统调用)

就是内核进程占用的CPU和内存资源的总和;

用户空间:应用程序(进程或线程)

就是各种存储于文件系统中的应用程序,在发起为进程或线程之后,占据的CPU和内存资源的总和;

操作系统内核的设计流派:

单内核设计:

所有的功能全部集中于同一个程序;运行时表现为一个进程;

Linux就是单内核设计

Linux,我们不需要他成为最先进的,我们只是要使用它;

微内核设计:

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

Windows,Solaris都是微内核审计

Linux内核的特点:

单内核 + 模块化:内核之中的功能更 + 各种模块提供的功能之和;

为了能够提高工作效率,会为速度比较慢的iO设备提供缓冲和缓存;

Linux内核的组成部分:

内核核心文件:

/boot/vmlinuz-VERSION-release

centos5:

/boot/vmlinuz-2.6.18-398.el5

centos6:

/boot/vmlinuz-2.6.32-573.el6.x86_64

centos7:

/boot/vmlinuz-3.10.0-327.el7.x86_64

最新的内核版本:4.13-rc1

内核模块文件:

/lib/modules/KERNEL_VERSION/kernerl/

ramdisk:

centos 5:

/boot/initrd-2.6.18-398.el5.img

centos 6/7:

/boot/initramfs-2.6.32-573.el6.x86_64

/boot/initramfs-3.10.0-327.el7.x86_64.img

centos 5/6:

生成ramdisk的工具:mkinitrd

centos 7:

生成ramdisk的工具:dracut mkinitrd

rd和ramfs:

ramdisk:双缓冲和双缓存;

ramfs:提高效率,避免双缓冲和双缓存;

centos系列操作系统的启动流程(2)

基于x86架构兼容平台研究系统启动流程;

1.post:power-on self test,加电自检;

ROM:read-only memory,只读存储器;

CMOS:BIOS,basic input and output system,基本输出输出系统;

X76架构的CPU可以线性寻址的物理孔村空间:ROM + RAM

2.bootsequence:启动顺序;

作用:决定到何种硬件设备上加载操作系统;

方式;按照指定的次序查找各个引导设备,第一个被找出有引导程序的设备即为本次启动要用到的设备;

BootLoader:引导加载器,程序;

MBT:

master(main)boot recorn:

0磁道0扇区:

446byte:BootLoader

64byte:fat,file allocation table;

2byte:magic-number,55AA,表示MBR有效;

GPT:

Windows:NTLDR

Linux:

Lilo:Linux loader,有缺陷,不能支持大硬盘;不超过1024柱面;

grub:grand uniform BootLoader,全球统一引导加载器;

centos 6-:

grub 0.x:grub legacy

centos 7:

grub 1.x:grub2

grub提供的功能:

1.为用户提供一个菜单,菜单中列举的是各个可以启动的操作系统内核;

2.可以将用户选定的内核核心文件装载到RAM中,解压缩并展开,将系统控制权移交给内核;

3.交互式的命令行接口;

4.菜单及内核启动的安全保障;

3.内核的启动:

自身初始化:

1.探测能够识别到的所有的硬件设备;

2.加载硬件的驱动程序,有可能会借助于ramdisk加载驱动;

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

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

4.init:

init程序的类型:

centos 5:sysV init

配置文件:

/etc/inittab

centos 6:upstart init

配置文件:

/etc/inittab(几乎被废弃);

/etc/init/*.conf

centos 7:systemd

配置文件:

/usr/lib/systemd/system/*

/etc/systemd/system/*0

小结:

系统初始化流程(内核级别)

post --> bootsequence(BIOS)--> BootLoader(MBR)--> kernel(内核核心文件,只能放置在基本分区上)-->

[ramdisk] --> rootfs(read-only)--> /sbin/init

centos 5的sysV init的工作过程;

centos 5 sysV init:

运行级别(run level):为了系统的运行或维护等目的而设置的管理机制;

0-6:七个运行级别;

# 0 - 关机,halt,shutdown;

# 1 - 单用户模式(single user mode),root,无需验证;维护模式;

# 2 - 多用户模式(multiuser),会启动网络功能;但是不会启动NFS,维护模式;

# 3 - 多用户模式(full multiuser mode),完全的功能模式,仅使用CLI,不激活GUI;

# 4 - 预留级别,目前无特别使用的目录;但是习惯上认为与3运行级别相同;

# 5 - 多用户模式(full multiuser mode),完全的功能模式,默认激活GUI和CLI,默认使用的是GUI;

# 6 - 重启,reboot

通常会使用3,5运行级别作为此次系统启动的默认运行级别;

查看当前系统的运行级别;

who -r

runlevel

切换运行级别:

init [0-6]

init的配置文件:/etc/inittab,此配置文件有如下功能:

1.在整个系统初始化的过程中要做那些任务;

启动或关闭哪些后台服务;

如何进行系统初始化;

在验证用户的身份无误之后,如何为用户提供登录提示符,还要区分是图形界面还是文件界面;

当备用电源失效或重新生效时,如何指挥系统操作;

定义了按下“Ctrl + Alt + delete”组合键时,系统将采取什么行为;

2.所有规定的任务如何执行;

每一行定义一种操作,格式如下:

id:runlevels:action:process

id:一种操作的唯一标识符;

l#,id,pf,pr,#,x,

runlevel:指定任务执行所依赖的运行级别;

####,#,留空,

action:在何种条件下启动此任务;

wait:等待切换至此任务所在的运行级别时,运行一次;

respawn:一旦此任务结束,就自动重新启动此任务;

initdefault:用于设定默认的运行级别,通常后面的process省略

sysinit:设置系统初始化的方式,一般情况下此处运行/etc/rc.d/rc.sysinit脚本;

powerfail:

powerokwait:

ctrlaltdel:

/etc/rc.d/rc.sysinit:

1.设置主机名称;

2.设置启动的欢迎信息;

3.激活udev和selinux;

4.挂载/etc/fstab文件中定义的所有有效文件系统;

5.激活各个swap设备;

6.检测rootfs,并且以读写的方式重新挂载rootfs;

7.设置系统时间;

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

9.激活lvm和软raid等高级逻辑设备;

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

11.完成清理工作;

/etc/rc.d/rc:

根据特定的运行级别,启动或关闭/etc/rc.d/rc$runlevel.d/*

K*:要停止的服务;K后面的两位数字表示优先级;数字越小优先级越高;依赖其他服务的服务应该优先关闭,被其他服务依赖的服务应该稍后关闭;

S*:要启动的服务;S后面的两位数字表示优先级;数字越小优先级越高;被其他服务依赖的服务应该优先开启,依赖其他服务的服务应该稍后开启;

rc脚本实际上可以接收一个运行级别作为其参数运行内容的;

脚本框架:

for i in /etc/rc.d/rc#.d/K* ; do

$i stop

done

for i in /etc/rc.d/rc#.d/S* ; do

$i start

done

mkinitrd:建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。

选项:

-f:若指定的映像问家名称与现有文件重复,则覆盖现有的文件;

-v:执行时显示详细的信息;

--omit-scsi-modules:不要载入SCSI模块;

--preload=<模块名称>:指定要载入的模块;

--with=<模块名称>:指定要载入的模块;

--version:显示版本信息。

例子:

mkinitrd -v -f myinitrd.img $(uname -r)

dracut:建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。

例子:

dracut /boot/initramfs-$(uname -r).img $(uname -r)

时间: 2024-08-07 04:15:16

#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用的相关文章

#24 centos6(RHEL)系列操作系统的启动流程、与命令chkconfig、grub的使用

所有由rc脚本关闭或启动的链接文件的原文件都存在于/etc/rc.d/init.d,系统为了方便使用,为此目录创建了链接/etc/init.d 所有/etc/inid.d(/etc/rc.d/init.d)目录中的脚本执行方式: # /etc/init.d/srv_script {start|stop|restart|status} # service srv_script {start|stop|restart|status} chkconfig命令: chkconfig - updates

#25 centos7(RHEL)系列操作系统的启动流程、systemd的特性、与命令systemctl的使用

systemd的新特性: 1.在系统引导的时候可以实现服务的并行启动: 2.能够实现按需激活进程: 在系统启动时,需要随系统启动服务,其服务进程并没有启动,但是systemd为每一个此类服务进程都注册了对应的套接字:我们称这种服务处理方式为"半激活状态": 3.能够对当前系统的用户空间的每个进程状态快照:以后如果进程出现问题或故障,可以迅速恢复进程状态至过去的某一时刻: 4.systemd内部有一种基于依赖关系来定义的服务控制逻辑: 核心管理概念:unit文件 由systemd相关的配

centos系列的启动流程及基础知识点

下面介绍的是基于Intel x86架构的CentOS系列操作系统的启动流程. 1.Linux系统基础简介 (1).Linux[系统组成]:内核+应用程序 或 内核+rootfs (2).Linux的[运行环境]:内核空间 --------内核进程占用CPU和内存资源总和 用户空间 --------应用程序占用CPU和内存资源总和 (3).[内核]主要具有6个[功能]:进程管理.文件系统管理.内存管理.网络协议管理.驱动管理.内存功能. 对于内核,有两种设计:单内核.微内核.单内核,是所有功能聚集

linux操作系统的启动流程--学生作业

首先,先不急着将启动流程,,先说下linux操作系统的相关知识 一:linux的组成部分: 内核+根(/)文件系统 1)内核: 存放位置 centos6的位置是 /boot 目录下的"vmlinuz-2.6.32-573.12.1.el6.x86_64" "2.6.32"是版本号:"573.12.1"是release号.内核的作用是负责核心的内存管理.进程管理.网络协议栈.文件系统.驱动程序.安全功能.linux内核是单内核设计,但是他支持多模块

centos操作系统的启动流程

一般情况下X86架构平台的启动流程:1.POST:Power-on Self Testing,加电自检保证硬件的正常操作,从而能够正确的使用各种硬件2.BootSequence(程序的启动顺序)决定到底从何种设备加载操作系统内核:通常可选的设备包括:光驱,硬盘,U盘,网络接口: 按照给定的顺序,依次查找各个设备,第一个被找出有引导程序(BootLoader)即为本次启动要用到的设备: Bootloader:引导程序,引导加载器GRUB:GRand Uniform BootLoader 全球统一引

CentOS系列开机启动流程

在我们使用Linux操作系统的时候,只要按下电源键,就会出现一些乱七八糟的代码,过一会就会出现登陆界面,那么在这期间系统自己都做了什么?现在就说一下在这这段时间系统做了些什么. 系统初始化流程:                                        POST-->Bootsequence(BIOS)-->Bootloader(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init()/sbin/in

linux启动流程梳理【转】

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/

Linux 的启动流程

作者: 阮一峰 半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用. 那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 这个部分比较有意思.因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但是,一旦进入操作系统,程序员几乎可以定制所有方面.所以,这个部分与程序员的关系更密切. 我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统.下面的内容针对的是Deb

linux --&gt; Linux 的启动流程

Linux 的启动流程 操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但一旦进入操作系统,程序员几乎可以定制所有方面.所以,这个部分与程序员的关系更密切,下面的内容针对的是Debian发行版. 第一步.加载内核 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件. 以我的电脑为例,/boot 目录下面大概是这样一些文件: $ ls /boot config-3.2.0-3-amd64 config-