linux系统的开机启动流程

  • Post author:
  • Post category:linux


按完开机键后,控制权交给主板,主板里的BIOS程序,会检测硬件的好坏,然后根据启动顺序才能把控制权交给硬盘,硬盘再去读取软件,加载到内存里面去。

先补充相关知识:

1.与关机有关的命令:

init 0

poweroff

Halt

shutdown                 (默认)1min后关机

shutdown -h now      立刻关机

shutdown -c              取消关机

2.了解开机启动流程有什么意义?

  1. 掌握如何让自己开发的程序开机启动
  2. 开机不能正常启动,是什么原因,或是那个环节出了问题
  3. 防止黑客植入木马,去查询黑客会把木马放到哪些地方

3.快照的作用:对虚拟机当前的状态做个备份,保留虚拟机的状态。但是快照会占用磁盘空间。

4.电脑的主要硬件:

主板:所有硬件的载体。在上面安装组成电脑的主要电路系统,主要作用就是将计算机各个硬件设备的工作相互连接,所有的硬件之间的数据传输靠主板传送;

CPU中央处理器:负责执行指令并处理数据;

RAM内存:用于暂时存储程序和数据;

HDD/SSD硬盘:计算机存储的主要设备,用于永久存储数据。SSD固态硬盘,HDD传统的机器硬盘,SSD硬盘的读取速度比HDD硬盘快很多;

显卡:控制图形的输出。

一、开机自检

开机启动后,主板会进行开机自检:

1.由哪个硬件或者硬件里的软件来完成工作?谁完成?

硬件:主板

主板里有个BIOS程序来完成自检工作

2.检查什么?

检查电脑里的硬件是否存在,是否能够正常工作

BIOS程序

BIOS:Basic input output system  基本输入输出系统,是电脑启动时加载的第一个软件。BIOS程序是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机自检程序和系统自启动程序,从CMOS中读取参数:了解cpu的配置,时间的配置,启动顺序的配置等。CMOS是主板上一个存储配置参数的芯片。

补充:ROM芯片为只读的存储器,特点为停电不会丢失,永久写入了;RAM芯片为随机存取存储器,特点是停电会丢失数据。

CMOS与BIOS之间的关系:

如何进入BIOS:

笔记本:F1,F2,F8,F12等

服务器:开机有提醒

台式机:del、delete

虚拟机:F2-进入BIOS;ESC:修改开机启动顺序

BIOS界面:

其中Boot启动顺序检查:

Hard Drive 从硬盘启动

CD-ROM Drive 光驱

Removable device 可移动设备(u盘、移动硬盘)

Network 网络(网络中安装服务器启动)

一开始装系统的时候选择将光驱CD-ROM调到第一启动顺序,装好后把Hard Drive调为第一启动顺序,从硬盘启动。

为了防止数据被盗,可以设置BIOS密码:进入BIOS后,选择Security标签设置密码,如下图。

二、加载主引导记录

第一启动顺序设置为硬盘,从硬盘启动后BIOS程序离场。硬盘中的一个特殊位置:MBR–主引导记录,是硬盘中非常重要的一个位置,磁盘里最开始的位置,是固定的,占一个扇区,一个扇区512个字节。

主板移交控制权给硬盘后,在MBR中读取启动程序到内存中去,MBR里面的启动程序是grub2。grub是linux里的一个引导程序,非常小;grub2是grub的升级版。

引导程序的两个阶段:

第一阶段:将硬盘中MBR分区的grub2加载到内存

第二阶段:加载文件系统的驱动,读取磁盘中的数据,找到系统内核文件并加载内核文件

三、加载内核启动服务

vmlinuz-3.10.0-1160.el7.x86_64是linux的内核文件,是一个可执行的程序;initramfs-3.10.0-1160.el7.x86_64.img压缩文件,在内存中解压,解压完成后会形成一个临时的根文件系统,给vmlinuz提供很多程序和驱动文件。

将vmlinuz、initramfs加载到内存中去后,会启动系统的第一个进程systemd进程。启动systemd进程后会启动对应运行级别里的服务。


运行级别–一个比较老的概念,在centos6里面非常流行:

0  关机

1  单用户模式(只允许一个用户登录)

2  多用户模式,不能使用网络资源

3  完全多用户模式(字符界面)

5  图形界面

6  重启

相关命令:

1.runlevel:查看运行级别

返回结果含义:N表示一开始进入没有级别;3表示现在是运行级别3。即返回结果的第一个字符表示一开始进入之前是什么级别,第二个字符表示现在是什么级别。

2.init 0:关机

3.init 6:重启

4.init [num]:进入运行级别[num]

在新版centos操作系统中,有个文件/etc/inittab还保留了这种概念,并引出新的概念:

multi-user.target:命令行界面

graphical.target:图形界面,图形界面相比命令行界面启动的程序多一些,消耗的内存和CPU多一些

根据文件/etc/inittab还可以知道命令:

1.查看默认启动模式(运行级别):systemctl get-default

2.设置默认模式:systemctl set-default multi-user.target/graphical.target

如何在linux中安装图形界面?

在安装时,选软件选择(最小安装只装最基本的软件)

选择下图三个都可以实现图形化界面,只是界面不一样

systemd进程如何管理服务?

以service结尾的文件是用来启动某个具体的服务的(对应着某个程序),想要在开机时启动服务,就要在相应的运行级别的文件夹中创建链接文件,链接到服务的源文件,这些文件均以service结尾。相应的想要设置开机不启动服务,本质就是删除链接文件。

只要是yum安装的软件,会自动创建一个service文件;编译安装的文件没有,需要自己的创建service文件。如果有了service文件,可以通过systemctl start/stop/enable/disable/restart [服务]命令管理服务,即systemd可以通过上述过程去管理服务。

以ssh服务为例,查看ssh服务对应的源文件sshd.service:

当所有的服务都启动后,会去执行/etc/rc.local脚本里的命令,可以将一些想要开机执行的脚本放在该文件中。注意:想要开机执行某脚本,要将/etc/rc.d/rc.local文件授予可执行权限,其中/etc/rc.local是一个链接文件,指向/etc/rc.d/rc.local

还会去加载/etc/fstab文件,根据该文件里的分区信息进行挂载,这样我们就知道了整个系统里的磁盘有哪些分区可以使用,加载了真正的根文件系统。

四、登录

启动好服务加载好文件后,会执行login程序,出现登录画面:输入用户名和密码,根据/etc/passwd和/etc/shadow文件验证用户信息,验证通过就会去加载环境变量的配置文件,登录画面如下图:

4个用户环境变量的配置文件:

影响某个用户:

~/.bashrc

~/.bash_profile

影响所有用户:

/etc/bashrc

/etc/profile

4个环境变量配置文件的启动顺序为:

注意:想要执行某些命令或脚本也可以潜伏在这4个环境变量配置文件中。

思考

学习完开机启动流程后,提出一些思考问题:

1.开机启动的某个环节出问题,机器是否可以正常启动,如:删除/boot分区?破坏MBR?

都不能正常启动

2.木马程序可以在哪里藏身?

1.从启动systemd进程后面的过程进行排查:异常服务、rc.local或四个环境变量配置文件中的异常命令

2.排查计划任务:crontab -l

3.查看是否有打开的可疑端口:netstat -anpltu

4.查看可疑的进程:ps aux

营救模式

营救模式适合虚拟机环境和真实机器环境。

若不小心删除了/etc/passwd或/etc/shadow文件,怎么可以恢复正常启动?

前提:开启营救模式能够恢复这两个文件的底气是系统里有备份文件passwd-和shadow-

思路:硬盘里的系统启动不了,借助光盘里的系统启动,然后去修复硬盘里的系统

操作步骤:

将光盘放入光驱,设置第一启动顺序为CD-ROM:

启动后选择Troubleshooting:

选择营救模式:

选择继续:

进入原来的根环境:

还原:

退出:

重启后记得将第一启动顺序调整回Hard Drive。



版权声明:本文为m0_69298614原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。