`

Linux系统启动流程

阅读更多

系统的引导与关机

1、加载bios的硬件信息
2、读取MBR的Boot Loader引导信息
3、加载内核
4、内核执行/sbin/init加载/etc/inittab信息执行rc.sysinit
5、启动核心的外挂模块(/etc/modules.conf)
6、init执行运行级的各个批处理文件(scripts)
7、执行/bin/login程序
8、登入后开始以shell管理主机

 

启动过程
1. BIOS自检:当识别出第一块硬盘及其空间之后,系统控制将从 BIOS 传递到引导装载程序。
2.引导装载程序:装载第一块硬盘的前 512 个字节的物理数据扇区(主引导记录,MBR)到内存中,位于此扇区开始位置的引导装载程序(如:GRUB)将接管系统控制。引导装载程序执行的命令决定了 引导进程剩余的部分。引导装载程序随后将控制传递到实际的操作系统(Linux 内核)。
3. 加载RAM盘:提供了一个最小的 Linux 环境,可在装入实际根文件系统之前执行程序。
4. 在RA M盘中运行init:

这个程序执行装入真正的根文件系统所需的所有操作。装载内核模块:根据硬件配置的不同,可能需要一些特殊的驱动程序来访问计算机的硬件部件(最重要的部件是硬盘)。要访问最终的根文件系统,内核需要装载适当的文件系统驱动程序。
管理 RA ID 和 LVM:若系统配置在 RAID 或 LVM 下保存根文件系统,则 init 将设置 LVM 或 RAID 以支持稍后对根文件系统的访问。
加载最终的根文件系统:找到根文件系统后,对其进行错误检查并装入。

运行根文件系统上的 init:若上述操作成功,将清除RAM盘并读取系统引导配置文件 /etc/inittab 执行真正的根文件系统上的 init 程序。
/etc/rc.d/rc.sysinit–系统初始化脚本

I. 挂载/proc文件系统
II. 设置系统时钟
III. 系统一般的环境变量设置(如主机名等)
IV. 初始化USB和HID设备
V. 设置PnP
VI. 加载键盘映射
VII. 加载系统字体
VIII. 加载系统模块(如声音模块等)
IX. 初始化 RAID
X. 初始化卷映射
XI. 检查文件系统
XII. 挂载文件系统
XIII. 激活磁盘限额
XIV. 激活swap分区
XV. 初始化串口设备
XVI. 生成系统启动信息的log文件
XVII. 等等
/etc/rc.d/rcX.d/[KS]* –根据运行级别(X)配置服务

5.

I. 终止以”K”开头的服务
II. 启动以”S”开头的服务

/etc/rc.d/rc.local–执行本地特殊配置
其他–不同运行级别的特殊服务
I. mingetty (除了运行级别1)
II. xdm/gdm/kdm (运行级别5)
init进程
init进程是由Linux内核引导运行的,是系统中运行的第一个进程,其进程号(PID)永远为”1″。init进程运行后将安装其配置文件,引导运行系统所需的其他进程,init进程将作为这些进程的父进程。
init进程在运行时将读取系统引导配置文件/etc/inittab中的信息。这些信息包括默认的运行级别和由init启动的进程。 文件/etc/inittab中以#开头的行为注释行,其他的每一行包括如下四个字段(每个字段用”:”间隔):
id:runlevels: action:process
其中:
id : 是各有效行的标识符。对定义getty的各行来说,该标识符指定getty运行的终端(即设备文件/dev/tty之后的
数字字符);对其他行来说,除了有长度限制外没有特殊要求,但该字段在整个文件中必须唯一。
runlevels : 指定运行级别,各运行级别由单个的数字表示,可以指定多个运行级别,但不能包含任何间隔符。
action : 指定运行状态,可以有如下的取值
respawn : 当下一个字段指定的命令结束后,重新运行该命令
wait : 执行下一个字段指定的命令,并等待其结束再运行其他命令
once : 执行下一个字段指定的命令,不等待其结束
boot : 在系统启动时执行下一个字段指定的命令,并忽略运行级别
bootwait : 在引导完成后执行下一个字段指定的命令,并等待其结束
off : 指示init撤消下一个字段指定的命令所对应的进程
initdefault : 指定首次启动时所进入的运行级别状态
sysinit : 在与系统控制台通讯时执行下一个字段指定的命令
powerwait : 当出现电源错误时执行下一个字段指定的命令,并等待其结束
powerfail : 当出现电源错误时执行下一个字段指定的命令,不等待其结束
powerokwait : 当电源恢复时执行下一个字段指定的命令
ctrlaltdel : 当按下C trl+Alt+De l组合键时执行下一个字段指定的命令
process : 该字段指定要运行的命令

下面是一个init进程配置文件/etc/inittab的例子:
# cat /etc/inittab
# 定义的各种运行级别:
# 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: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
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
# 跟踪CTRL-ALT-DELETE三键重启
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# 当系统发现UPS电源故障后2分钟后执行关机操作
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”
# 如果在2分钟之内UPS恢复正常则取消关机操作
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”
# 在2、3、4、5运行级别中启动6个虚拟控制台
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
# 在5运行级别中启动xdm管理器
x:5:respawn:/etc/X11/prefdm -nodaemon
为什么使用字符工作方式 ?
Linux是一种类UNIX操作系统。在UNIX发展的早期,类UNIX操作系统根本没有图形操作界面,只有字符工作模式。后来随着GUI的发
展,在类UNIX操作系统上开发了X Window系统,使类UNIX系统有了图形用户界面。虽然图形用户界面操作简单,但是字符操作方式仍
然沿用至今,这主要是因为:
在字符操作方式下可以高效地完成所有的任务,尤其是系统管理任务。
系统管理任务通常在远程进行,而远程登录后进入的是字符工作方式。
由于使用字符界面不用启动图形工作环境,大大地节省了系统资源开销。


虚拟控制台
当在系统启动时直接进入字符工作方式后,系统提供了多个(默认为6个)虚拟控制台。每个虚拟控制台可以独立使用,互不影响。
可以使用Alt+F1~Alt+F6 进行多个虚拟控制台之间的切换。如果用户使用startx命令在字符界面下启动了图形环境,那么可以使用C trl+Alt+F1~C trl+Alt+F6切换字符虚拟终端,使用C trl+Alt+F7 切换到图形界面。

本地用户注消
若要注销登录,用户可以在当前的登录终端上输入logout 命令或使用<C trl>+<d> 快捷键进行。
超级用户的提示符是”#”,普通用户的提示符是”$”。退出系统直接输入:#exit
1. Linux系统是严格区分大小写的,无论用户名,还是文件名、设备名都是如此。即:ABC、Abc、abc是三个不同的用户名或文件名。
2. 基于安全的考虑,一般应该使用普通用户登录系统,不要使用root用户登录,当需要进行超级用户的工作时可以使用 su – 命令切换为超级用户身份。初学者尤其要注意这一点。
系统运行级别
Linux 系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和所要达到的目的都不同。C e ntO S 设置了如下表所示的运行级,并且系统可以在这些运行级别之间进行切换,以完成不同的工作。
运行级说明
0 所有进程将被终止,机器将有序的停止,关机时系统处于这个运行级别
1 单用户模式。用于系统维护,只有少数进程运行,同时所有服务也不启动
2 多用户模式。和运行级别3一样,只是网络文件系统(NFS)服务没被启动
3 多用户模式。允许多用户登录系统,是系统默认的启动级别
4 留给用户自定义的运行级别
5 多用户模式,并且在系统启动后运行X-Window,给出一个图形化的登录窗口
6 所有进程被终止,系统重新启动

1. 如果系统启动后进入字符登录界面,则说明系统默认的运行级别为3;如果系统启动后进入图形登录界面,则说明系统默认的运行级别为5。
2. 如果用户已经启动了字符界面,想要进入图形界面可以使用如下命令:#startx

运行级的查看和切换
用户可以使用如下的命令查看当前系统的运行级
runlevel
用户可以使用如下的命令切换运行级
init [0123456Ss]
即在 init 命令后跟一个参数,此参数是要切换到的运行级的运行级代号,如:
用 init 0 命令切换至运行级别 0 ,即关机
用 init 1 命令切换至运行级别 1 ,即进入单用户运行模式
用 init 6 命令切换至运行级别 6 ,即重新启动

也可以使用 telinit 命令,在 C e ntO S 中,telinit 命令是 init 命令的符号链接。

 

关机与重新命令
系统的关机和重新启动,实际上是进行运行级别的切换。此次可以使用 init 命令进行关机和重启,命令 init 用于立即关机或重启,但是在多用户系统中,若想给用户发送关机警告信息以便各个用户完成自己的工作并注销登录,则必须使用shutdown ;halt 关闭系统最简单方式 ;reboot 快速的重新启动 ;poweroff 请linux关闭电源。
在多用户环境下,通常使用 shutdown 命令关闭和重新启动系统。shutdown 命令能够以一种比较安全的方式来关闭系统,所有登录到系统上的用户将被通知系统将要关闭,而新的登录操作将被阻止;同时所有的进程也将被通知系统将要关 闭,这样有些程序,如 vi 将能够及时保存用户编辑的文件并退出。
shutdown 命令的格式为:
shutdown [参数] time [warning-message]
其中:
time :设置多长时间后执行 shutdown 指令,可以使用如下三种格式:
hh:mm :指定绝对时间,hh用于指定小时,m m 用于指定分钟
+m :指定相对时间,m 为数字,单位为分钟
now :现在立刻进行,相当于 +0
warning-message :用于设置发给用户的警告信息
常用参数如下:

-t sec :送出警告信息和删除信息之间要延迟多少秒再通知 init 执行运行级切换
-k :并不真的关闭系统,只是给每个用户发送警告信息
-r :关闭之后重新启动系统
-h :关闭之后停止系统
-f :重新启动后不用fsck检查磁盘
-F :重新启动后强制用fsck检查磁盘


例如:
# # 警告所有用户系统将在5分钟后重新启动系统
# shutdown -r +5 ” System will be reboot in 5 minites, Please save your work.”
# # 立即关闭系统
# shutdown -h now
# # 立即重新启动系统,并在重新启动后强制用fsck检查磁盘
# shutdown -h -F now

分享到:
评论

相关推荐

    Linux系统启动过程

    关于Linux系统的启动过程分享一下,内容是关于Linux的

    Linux系统启动流程3-2

    通过视频文件"14_02_Linux系统启动流程之二 内核及init.avi",我们可以更直观地看到这些步骤的实际执行过程,包括内核加载时的屏幕输出,以及init系统如何一步步启动服务和设置环境。理解这个过程对于故障排查、性能...

    LINUX系统启动过程分析

    LINUX系统启动过程分析 LINUX系统启动过程是一个复杂的过程,涉及到多个步骤和组件。下面将对LINUX系统启动过程进行详细的分析。 BIOS自检 在PC中,LINUX系统启动从BIOS中的地址0xFFFF0处开始。BIOS的第一个步骤...

    arm linux系统启动流程

    ### ARM Linux系统启动流程详解 #### 一、加载内核 ARM Linux系统启动的第一步是加载内核。当系统上电后,Bootloader(相当于PC中的BIOS)将完成最基础的硬件初始化,并加载内核镜像到内存中。内核镜像通常存储在...

    Linux系统启动过程ppt课件.ppt

    Linux系统启动过程ppt课件 Linux系统启动过程是指从计算机电源打开到出现登录欢迎界面的整个过程。在这个过程中,Linux系统会经历多个阶段,每个阶段都完成不同的启动任务。本章节将以Red Hat Enterprise Linux 5.2...

    linux系统启动全过程.pdf

    Linux系统启动全过程是一项涉及从硬件自检到用户登录的复杂过程。在这份文档中,Greg O'Keefe详细介绍了Linux启动的每个步骤,以及如何配置和通过实际操作学习这些内容。本文将基于文档内容,介绍Linux启动过程中的...

    剖析Linux系统启动过程

    剖析Linux系统启动过程 今日,我们将深入剖析 Linux 系统启动过程,从用户打开电源到屏幕出现命令行提示符的整个过程。 1. BIOS 开机自检 当用户打开 PC 的电源,BIOS 开机自检,按 BIOS 中设置的启动设备...

    linux系统启动流程分析.docx

    通过对Linux系统启动流程的详细分析,我们可以看出这是一个多层次、多步骤的过程。从硬件的上电自检到BIOS引导,再到Boot Loader的加载和内核的启动,每一步都至关重要。了解这些基础知识不仅有助于更好地理解和使用...

    Linux系统启动流程PPT课件.ppt

    Linux系统启动流程是一个复杂但有序的过程,涉及到多个关键组件和步骤。在讲解之前,我们先澄清几个基本概念。Linux内核是操作系统的核心部分,负责硬件管理和资源调度;而Linux系统则是包含了内核以及一系列工具、...

    Linux系统启动流程详解3-1

    Linux系统启动流程详解3-1 在深入了解Linux系统启动流程之前,我们首先需要理解什么是操作系统启动。操作系统是计算机硬件和用户应用之间的桥梁,它的启动过程是计算机加电后执行的第一步,也是确保系统正常运行的...

    Linux系统启动流程 思维导图

    Linux系统启动流程的思维导图 xmind格式,常规思维导图软件即可查看。 高清干货,不容错过!

    linux系统启动过程的简要分析1

    Linux 系统启动过程的简要分析 Linux 系统的启动过程是一个复杂的过程,涉及到多个阶段和多个组件。本文将对 Linux 系统启动过程进行简要分析,从 bootloader 的启动过程到文件系统的启动过程。 bootloader 的启动...

    Linux 系统启动过程和系统目录结构

    Linux 系统启动过程和系统目录结构 Linux 系统启动过程可以分为五个阶段:内核的引导、运行 init、系统初始化、建立终端和用户登录系统。 1. 内核的引导:当计算机打开电源后,首先是 BIOS 开机自检,按照 BIOS 中...

    Linux系统启动过程.pdf

    Linux系统启动过程是一个复杂而有序的序列,涉及多个组件和步骤。以下是详细的解析: 1. **启动流程概述** - Linux系统的启动始于计算机加电,BIOS(基本输入输出系统)进行自检(POST,Power-On Self Test)并...

    linux系统启动过程分析.ppt

    Linux系统的启动过程是一个复杂而有序的序列,涉及多个关键组件和步骤。首先,当计算机加电后,BIOS(基本输入输出系统)开始执行自检(POST),检查硬件设备是否正常工作并初始化它们。接着,BIOS根据配置的启动...

    Linux 的启动流程

    在了解了上述知识点之后,我们可以更深入地了解Linux系统启动流程,以及如何调整系统启动行为来满足不同的需要。例如,可以通过编辑/etc/init.d目录下的脚本来管理服务的启动与停止,或者通过编辑/etc/inittab来修改...

    Linux系统启动过程分析[参考].pdf

    Linux系统启动过程是一个复杂而有序的系列步骤,它涉及到硬件初始化、加载启动加载器、内核启动以及初始化系统服务等多个环节。以下是对每个阶段的详细解释: 1. BIOS 初始化: 当计算机上电或重启时,基本输入/...

Global site tag (gtag.js) - Google Analytics