linux开机dracut界面_#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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值