概述
一、Linux操作系统引导过程
分为5步:开机自检——MBR引导——GRUB菜单——加载Linux内核——init进程初始化
(1)、开机自检:服务器主机开启后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备初步检测,检测成功以后根据预设的启动顺序移交系统控制权,大多数会移交给本机硬盘。
(2)、MBR引导:从本机硬盘中启动系统时,首先根据硬盘第1个扇区中MBR的设置,将系统控制权传递给包含操作系统引导文件的分区,或者直接根据MBR记录中的引导信息调用启动菜单(如GRUB)
(3)、GRUB菜单:使用最广泛的多系统引导器程序了,系统控制权传递给GRUB后,将会显示启动菜单提供给用户选择,并根据所选项加载Linux内核文件,然后将系统控制权转交给内核
(4)加载Linux内核:Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权后,将完全掌控整个Linux 操作系统的运行过程
(5)init进程初始化,为完成进一步的系统引导过程,Linux内核首先将系统中的/sbin/init程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化进程
二、init进程
Linux系统中进程使用数字进行标记,每个进程的身份标记号称为PID,在引导Linux系统的过程中,、sbin/init是内核第一个加载的程序,因此init进程对应的PID号总是为1
Init进程运行后将陆续执行系统中的其他程序,不断生成新的进程,这些进程称为init进程的子进程,这些子进程可以进一步生成各自的子进程,形成进程树
init进程是维持整个Linux系统运行的所有进程的始祖,因此init进程是不允许轻易终止,需要切换不同的系统运行状态时,可以向init进程发送正确的执行参数,由init自身完成操作
三、initab各字段的意义
1、id——标记字段
标记字段可以由1到4个字符组成,用以区别于其他行的配置
2、runlevel——运行级别字段
通过将不同的系统服务进行搭配组合,来协同满足不同的功能需求,不同的服务组合其实现的功能各不相同。默认7种不同的服务搭配方式
- 0 关机状态,使用该级别时将会关闭主机
- 1 单用户模式,不需要密码验证即可登录系统,多用于系统维护
- 2 字符界面的多用户模式(不支持访问网络)
- 3 字符界面的完整多用户模式,大多数服务器主机运行在此级别
- 4 未分配利用
- 5 图形界面的多用户模式,提供了图形桌面操作环境
- 6 重新启动,使用该级别时将会重启主机
3、axtion——动作类型字段
描述了该行配置所对应的操作类别,initdefault表示设置初始化系统后默认进入的运行级别
4、process——程序或脚本字段
用于指定该行配置所对应的实际操作,可以是具体的命令、脚本程序
四、排除启动类故障
Linux系统启动过程中,涉及MBR主引导记录、GRUB启动菜单、系统初始化文件,其中任何一个环节出故障会导致系统启动的失常,必须做好相关文件的备份工作
1、MBR扇区故障
MBR引导记录位于物理硬盘的第1个扇区(512G),该扇区又称为主引导扇区,除了包含系统引导程序的部分数据以外,还包含了整个硬盘的分区表记录,主引导扇区发生故障时,将可能无法进入引导菜单,或者因无法找到正确的分区位置而无法加载系统,通过该硬盘引导主机时可能进入黑屏转态
对MBR扇区进行备份、模拟破坏、修复的过程,有3点:
- 应提前做好备份文件
- 以安装光盘引导进入急救模式
- 从备份文件中恢复
2、修复GRUB引导故障
GRUB是Linux系统默认使用的引导程序,可以通过启动菜单的方式选择进入不同的操作系统
当配置文件/boot/grub/grub.conf丢失,或者关键配置错误,或者MBR记录中引导程序遭到破坏时,Linux主机启动后可能只出现“grub>”的提示符,无法完成进一步的系统启动过程。
解决方法:
- 尝试手动输入引导命令
- 进入急救模式,重写或者从备份中恢复grub.conf
- 向MBR扇区中重建grub程序
3、遗忘root密码
忘记root用户密码时,无法登录Linux系统执行管理、维护等任务,只能通过普通用户登录使用受限制的功能,如果系统中有其他具有root权限的用户,或者拥有修改root账号密码权限的用户,也可以使用这些用户登录系统,然后重新设置root用户的密码
1、通过单用户模式重设root 账户的密码
(1)重新启动主机,出现GRUB菜单时按上、下箭头取消倒计时,并定位到要进入的操作系统选择项,按e键进入编辑模式
(2)定位到以kernel开头的一行并按e键,在行尾添加single的启动参数
(3)按enter键确认后,按b键将系统引导进入单用户模式,直接进入shell环境
(4)在单用户模式的shell环境中,可以执行passwd root 重新设置root 用户密码
2、通过急救模式重设root账号的密码
进入急救模式的shell环境,只需切换到待修复的Linux系统的根目录环境,直接执行passwd root 命令重设root用户的密码即可,或者修改/etc/shadow文件,将root 用户的密码字段清空,重启后以空密码可登录系统,
五、服务控制及优化启动过程
1、服务控制
常见的几种控制类型如下:
- start (启动) 运行指定的系统服务程序,实现服务功能
- stop(停止) 终止指定的系统服务程序,关闭相应的功能
- restart (重启)先退出,再重新运行指定的系统服务程序
- reload (重载)不退出服务程序,只是刷新配置
- status(查看状态)查看指定的系统服务的运行状态及相关信息
2、切换运行级别
(1)查看系统的运行级别
直接执行runlevel命令进行查询,显示结果中的字符表示切换前的级别和当前的级别
若之前未切换过运行级别,第一列将显示N
(2)切换系统的运行级别
用户要将系统转换为其他的运行级别时,可以通过init程序进行,只要使用与运行级别相对应的数字作为命令参数
将系统切换到字符模式后,图形桌面环境将不再可用,需要再使用图形界面时,可以执行init5切换回去
只要执行init0、init6可以实现相应的关机、重启操作
3、优化启动过程
Linux 系统每次开机后进入默认的运行级别(如字符模式或图形模式),并运行该级别中默认设为启动的各种系统服务,若要禁止系统服务自动运行,可以使用ntsysv或者chkconfig工具优化
(1)使用ntsysv工具
ntsysv工具可以在字符模式中运行,为用户提供一个仿图形的交互式操作界面,专门用于配置各种系统服务的启动转态,当需要设置多个服务的启动状态时,使用ntsysv工具非常方便
执行ntsysv命令时用于管理当前运行级别中的服务,通过–level选项可以对指定运行级别中的服务进行管理
(2)使用chkcofig工具
不提供交互式的操作界面,用于查询或设置系统服务的默认启动状态,当需要设置某一个服务在不同运行级别中的默认启动状态时,使用chkconfig工具会更有效率