当linux内核执行硬件的检测,Linux系统启动流程

系统启动流程介绍

一、主要的启动流程

1、BIOS

检测所有外置设备:如显示器,内存的数量,硬盘等;

寻找启动磁盘:接着会依据

BIOS的设置,去寻找启动磁盘,通常是cdrom-硬盘-PXE

2、启动加载器

寻找硬盘的第一个扇区,也就是主要启动记录(

Master Boot Record,MBR)如果主要启动扇区中没有存储都操作系统,则寻找磁盘中标注为启动分区(Boot Partition)的第一个扇区中的操作系统。

不管是主要启动记录扇区,还是启动分区中的第一个扇区,存储操作系统的空间都只有

446字节。

3、启动内核

如果启动的是

Linux系统,那么启动加载器可以在启动Linux内核时,传递一些参数参linux内核,以便内核能够改变启动方式,或者取得启动时要的信息。

Linux内核启动时会执行如下操作:

a、检测所有硬件设备

b、驱动硬件设备

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

根文件系统中至少需包含下面几个目录:

/etc/:存储重要的配置文件

/bin/:存储常用且开机时必须用到的执行文件

/sbin/:这个目录存储着开机过程中所需的系统执行文件

/lib/:存储

/bin与 /sbin的执行文件所需的链接库,以及Linux内核模块

/dev/:存储设备文件

/etc/、

/bin/、/sbin/、/lib/、/dev/ 5大目录必须存储在根文件系统上,缺一不可

挂载根文件系统的目的有以下两个:

a、安装适当的内核模块,以便驱动某些硬件设备或启用某些功能

b、启存储于根文件系统中的

init服务,以便让init服务接手后续的启动工作

4、启动

init服务

a、找

/sbin里否有init 服务

b、

/etc/init

c、

/sbin/init

d、如果都找不到,最后就执行

/bin/sh

如果到最后内核还是找不到

init服务,rhel内核就会显示”Kernel panic not syncing:Attempted to kill init !”然后中止工作,内核再悄悄地死去。

5、执行

init服务

启动

init服务的目的,是让服务来初始化rhel系统环境,init启动后,就代表rhel已经顺利地启动了Linux内核,接着就由init服务来建立rhel的使用环境,整个系统启动工作就进入了另外一个阶段,初始化系统环境。

二、初始化系统环境

1、

/etc/rc.d/rc.sysinit

/etc/rc.d/rc/sysinit主要的工功能是设置系统的基本环境,当

init服务执行rc.sysinit时,会执行下面几项工作:

Udev与

selinux 子系统:

udev负责管理/dev/中的设备文件,selinux则可以增强rhel系统的安全性;

设置内核参数:

rc.sysinit会执行sysctl –p,以便从/etc/sysctl.conf设置rhel内核参数;

设置系统时间:

rc.sysinit会将硬件时间设置成rhel的系统时间;

加载键盘对应表:

rc.sysinit会加载键盘对应表,以便让你可以正确地输入文件,符号;

启用置换内存空间:

rc.sysinit会执行swapon –a –e命令,以便根据/etc/fstab设置启用所有的交换内存空间

设置主机名:会根据

/etc/sysconfig/network的HOSTNAME参数设置rhel的主机名

检查并挂载所有文件系统:

rc.sysinit会检查所有需要挂载的文件系统,以确保这些文件系统的完整性

初始化硬件设备:定义

/etc/modprobe.conf的模块,ISA Pnp的硬件设备,USB等

启用软件磁盘阵列与

LVM:

rc.sysinit也会启用所有的磁盘阵列,以及LVM磁盘设备

如有必要,卸载

/initrd/:

rc.sysinit会视情况卸载除始化内存磁盘,以节省更多的内存空间

清除过期的锁定文件与

IPC文件:

重新设置磁盘参数:根据

/dev/sysconfig/harddisk device配置文件重新设置该device设备的磁盘参数

2、

/etc/rc.d/rc

/etc/rc.d/rc这个

Script则用来建立Runlevel的环境, rhel借助/etc/rc.d/rc来启动或者停止不同Runlevel中的服务。

3、

/etc/rc.d/rc.local

/etc/rc.d/rc.local是整个启动过程中唯一一个可以修改的

RC Script,如果你希望在rhel启动过程中执行某些命令,或者执行某些工作的话,那么你就可以把这些工作的命令写在这个文件里

三、执行等级

自定义的

runlevel:

Runlevel0 :runlevel0 代表要开始关闭

rhel了,会进行关闭所有可登录的虚拟控制台,

结束所有启动的服务,卸载所有文件系统,停止所有的外围设备;

Runlevel1:runlevel1 会进行关闭所登录的虚拟控制台,关闭网络,关闭大部分的服务与应该程序;

Runlevel 2:runlevel2 会启动网络,以及大部分的网络服务,并开启所有的白控制台,允许本机用户登录

rhel,但是不允许域用户登录你的rhel,不会启动网域功能的服务器和客户端服务;

Runlevel 3:runlevel3 开启可登录虚拟控制台,启用本机帐号与域帐号,开启网络联机,启动所需的网络服务,不会启动

X windows System

Runlevel 4:runlevel4 目前为保留,你可以自行定义

runlevel4

Runlevel5: runlevel5 相当于

runlevel3 加上图开模式,也就是说会执行runlevel3相同的工作,加上启动X windows System

Runlevel6 :runlevel6 代表

rhel需要重启

各种

runlevel 比较表:

Runlevel

简述

可登录用户数

网络

图形模式

0

关机

1

单人模式

只有

root

2

多人模式

只有本机用户

ü

3

完整多人模式

本机用户

+域用户

ü

4

保留

本机用户

+域用户

ü

5

图形模式

本机用户

+域用户

ü

6

重启

ü

ü

1、查看目前系统的

runlevel

[root@linux ~]#runlevel

现在我处于

runlevel3中

2、切换至不同的

runlevel

在启动引导器中加载

开机后使用

init切换

使用

telinit工具切换

四、管理

init服务

1、init服务的介绍

建立系统使用环境

确保系统正常运行

监控串行端口的周边设备

拦截并处理【

ctrl+Alt+delete】事件

PID永远为

1

无法被系统管理者中止

2、配置

init服务

Init服务的配置文件

/etc/initab

字段说明

字段

说明

ID

Init服务参数的识别名称,由

1~4个字符组成

RUNLEVELS

代表在哪些

runlevel要调用这个参数

ACTIONS

Init服务执行程序的方法

PROCESS

要执行的程序文件迪,这个字段定义的名称必须是绝对路径

Inittab中的

4个字段,比较重要的是ID字段,如表:

字段

说明

Id

Rhel默认的

runlevel,当rhel启动时,没有指定进入那个runlevel时,或者结束runlevel shell时,rhel会自动进入默认的runlevel

Si

系统初始化要执行的程序,

rhel启动时会执行rc.sysinit,就是si参数定义的

10~16

进入不同的

runlevel时要执行的动作,10代表runlevel0,11代表runlevel1,依次类推

Ca

当拦截【

ctrl+alt+del】事件是要做什么,默认是重新启动的

Pf

电源失效时要执行的动作

Pr

电源恢复时要执行的动作

N

配置第

N号控制台的方法,N为虚拟控制台的编号

X

启动

X windows system的显示管理员DM的方法

3、重新启动

init服务

3种方法可以重新启动init服务:

重新启动

redhat enterprise linux,init服务启动时会读取/etc/inittab配置文件,以调用新的配置数据

传送

SIGhUP信号给init进程,当init接收到SIGHUP信号时会重新读取配置文件

执行

init q或telinit q进程

五、管理启动加载器

1、关于

grub

GRUB是

GNU的一项诚品,其设计的目标是作为GNU操作系统的启动加载器,GRUB除了可以用来启动GNU操作系统外,还可以启动员各种操作系统,当然也包括rhel系统。

GRUB具备下列几项特性:

修改过配置文件后,无须重新安装

可存储

MD5加密过的密码

2、使用

grub

当你使用

grub作为系统的启动加载器启动rhel时,将看到如图:

Grub默认倒数

5秒后,自动启动默认的操作系统,如果你要启动非默认的操作系统,那么一定要在这个画面按下任意键,才能中止grub的倒数计时。

中止了

grub操作后, grub会在屏幕上显示如下图所示的菜单,让你选择你要启动那一个操作系统,你可以使用前头键,移动菜单中的光标到要启动的操作系统后。然后按下【enter】键,grub就会启动你所选择的操作系统,不过当你中止grub启动默认操作系统后,grub会静静等待你的选择,直到你按下【enter】键

grub的菜单画面中,你可以使用下表中的按键修改grub的操作系统参数

按键

说明

e

编辑选择操作系统的相关设置

使用

e按键时,GRUB会让你编辑该操作系统的全部设置

a

在启动该操作系统前,让你修改操作系统的启动参数

e键不同的是,a按键只会让你修改加在操作系统内核image的启动参数

c

直接开启一个指令列,来编辑操作系统的设置

下图是我编辑我的

rhel操作系统的画面:

在图所示的下方,提醒你可以使用下表中的按键:

按键

说明

b

启动这个操作系统

e

编辑光标所在位置

c

直接开启一个命令行来编辑该设置

o

新增一行设置

d

删除选择的位置

esc

回到上一级菜单

3、配置

grub

Grub的配置文件在

/boot/grub/grub.conf中而非/etc,因为grub在启动操作系统时才会读取配置文件,如果不小心删除了,会导致grub在启动时找不到配置文件,面造成rhel启动失败,以下是我的/boot/grub/grub.conf文件

常见的

GRUB全局参数

参数

说明

Default=NUM

默认的操作系统编号

NUM为操作系统的索引值

(index),也就是从0开始数字,因此第一个操作系统的NUM为0,第二个为1…

Timeout=SECONDS

用户选择操作的超时时间,

SECONDS单位为秒,如果用户没有选择操作系统,在SECONDS时间到达时,GRUB将会直接启动默认的操作系统

Splashimage=FILE

指定

GRUB后台图文件

Hidemenu

要求

GRUB启动的时候隐藏菜单

如果你希望

GRUB启动时显示操作系统的菜单,可以把这个参数注释掉

Grub配置文件定义的参数:

参数

说明

Title TITLESTR

用来作为显示名称,

TITLESTR则是显示名称

Root DEVICE

启动的磁盘设备,注意必须是内核存放的分区,

rhel会把linux内核安装到/boot/目录中,因此,DEVICE通常为存储在/boot/目录的分区

Kernel FILENAME

Linux内核镜像文件名,

FILENAME为内核镜像文件名

Initrd FILENAME

内核的初始化内存磁盘镜像文件名,

FILENAME为初始化内存磁盘镜像文件名

4、安装

grub

重新安装

grub请使用grub-install工具:

grub-install DEVICE 其中

DEVICE要安装的设备,如果DEVICE是一个硬盘,则GRUB就会被安装到该硬盘的主要启动记录扇区(Master Boot Recond,MBR),如果DEVICE是一个分区,GRUB就会被安装到该分区的启动扇区(Boot Sector)

以下是我把

grub安装到我的/dev/sda硬盘分区上

5、设置

grub密码

密码的类型:

启动参数密码:当用户试图去修改

GRUB启动参数时,GRUB会要求用户提供此密码,只有密码正确时,GRUB才会开启修改GRUB启动参数的菜单

操作系统启密码:当用户启动某一个操作系统时,

GRUB会要求用户提供密码,如果密码不正确,GRUB就不会启动该操作系统

这是我用

grub-md5-crypt工具产生的一个经MD5加密后的密码文字

把用

grub-md5-crypt工具产生的md5加密密码粘到这里,这是GRUB启动参数密码,password后必须批定是md5

启动该操作系统所需的密码

这里需要输入刚才生成的

md5密码

启动系统时需要输入密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值