目录
Linux的引导过程
启动系统内核
启动init进程
什么是Linux
Linux的内核最初是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的
Linux全称GUN/Linux,是一套开源的类Unix操作系统,是一个基于POSIX的多用户、多任务,支持多线程和多CPU的操作系统,支持32位和64位硬件
常用的Linux的发行版本
Ubuntu Linux 桌面市场方面
Redhat 服务器稳定版本(服务会收费)
CentOS 社区企业版(免费)
SuSE 主要用于欧洲等地区(有收费版本,有不收费版本—可以理解为欧洲版的CentOS)
Fedora Core 桌面用户测试专用
Linux与Windows的比较
| Windows | Linux |
使用权限 | 收费系统 | 开源的免费系统 |
多用户/多线程 | 支持 | 支持 |
使用场景 | 主要用于游戏玩家等个人计算机的操作系统 | 主要用作服务器的操作系统 |
系统结构 | 由一个个独立的软件模块组成 | 基于文件的操作系统 |
软件支持 | 软件数量和种类多 | 大部分位开源的免费软件,用户修改定制和再发布 |
操作习惯 | 一般使用图形化操作(也支持命令行) | 一般使用命令行来操作(也支持图形化) |
安全性 | Linux相比于Windows更加安全,Linux开源的方式能够更容易发现和修复错误 | |
可定制性 | Linux相比于Windows的定制化更高 |
Linux的引导过程
不同Linux系统的引导过程大体一致,不一样的是管理方式不一样,过程是一样的
以下的介绍是以CentOS6为例子的
启动系统内核
BIOS开机自检
BIOS开机自检也称为加电自检,是计算机BIOS的一个功能,在开机后会运行
针对计算机进行硬件检测,包含CPU、内存、硬盘等
自检过程中发现故障后会通过某些方式来提示硬件问题(告警灯、显示屏、LED等)
MBR引导
自检完成后BIOS中定义的BOOT启动项去寻找具有MBR引导程序的硬盘,启动该系统
如果启动盘有多个,则依次去检查,如果第一个启动盘有MBR引导,则就启动该启动盘,否则依次往下检查;如果检查中遇到启动盘的MBR引导程序有故障,会停留在该错误的界面,需要我们去排查故障
GRUB菜单
MBR引导结束后,进行GRUB菜单选择(如果启动盘有多个系统,选择哪个系统)
GRUB包含三个部分
Stage1 存储于MBR中前446字节,用于实现引导Stage2
Stage1.5 存储于/boot/grub目录中,用于识别内核所在分区的文件类型
Stage2 存储于/boot/grub目录中,结合grub.conf配置文件实现引导操作系统
具体工作
确定设备的MBR后,会将计算机的控制权转交给MBR中位于前446字节的Stage1
然后引导stage1.5,结合stage2实现操作系统的选择
启动Kernel
启动所选系统的内核(Kernel),再次检查硬件设备,并加载设备启动所需要的驱动
硬件设备驱动是在系统内的,我们现在还没有启动系统,如何加载驱动
需要使用内核下或者BOOT根分区下的initramfs.img文件来加载驱动
initramfs.img文件是在内核启动时提供一个基本的,最小的文件系统,以便于内核能够访问系统所需要的驱动程序和工具并启动,以此来进入到真实的系统中
kernel初始化过程
- 启动所选系统的内核
- 进行设备检查探测
- 进行驱动初始化(可能从initrd(initramfs)文件中装载设备驱动模块)
- 以只读挂载根文件系统
- 装载第一个进程init(PID:1)
启动init进程
进入到真实的操作系统中之后,此时就需要启动相关服务、进程
init进程是系统所有进程的起点(PID为1),其它进程都为此进程的子进程;作用是初始化系统环境
读取/etc/inittab配置文件——定义了系统运行级别
运行init进程需要读取的/etc/inittab配置文件,该配置文件定义了系统的运行级别、/etc/sysinit脚本、/etc/rc.d/rc脚本以及mingetty进程
系统运行进程
通过该配置文件来识别系统启动到哪个运行级别下;不同的运行级别对应不同的运行模式,不同的运行模式系统所需要提供的服务是不一样的
0级别是关机
1级别 单用户
2级别 多用户,但是没有网络服务
3级别 多用户,全功能(一般为3级别)
4级别 系统保留,不会使用
5级别 图形化界面
6级别 重启
/etc/rc.d/rc.sysinit脚本——系统初始化脚本
包含主机名、挂载的磁盘分区、关闭SELinux等初始化工作
etc/rc.d/rc脚本——各种服务的启动/关闭脚本
通过该脚本来需要开启/关闭该运行级别下需要开启/关闭的应用服务,并需要读取开机自启动文件(/etc/rc.d/rc.local文件)下的应用或服务将其开启
K开头表示关闭该服务、L开头表示开启该服务;先关闭服务,再开启服务
mingetty进程
运行mingetty进程打开登录窗口,同时执行/bin/login跳出登录界面,输入用户名密码登录到系统,进行相应的操作