linux学习笔记:linux开机启动流程详细介绍

开机启动流程

按开机按钮到输入用户名和密码,进入系统背后发生的事情

意义

  • 掌握让某个软件开机自启
  • 开机不能正常启动,是什么原因,找出哪个环节出现了问题
  • 防止黑客植入木马,去查询黑客会把木马放到哪些地方

流程

在这里插入图片描述

1.power on开机

2.POST 开机自检

开机自检:上电自检(POST,Power On Self Test)。 指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU、系统主板、基本内存、扩展内存、系统ROM BIOS等器件的测试。如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速启动。

谁来完成开机自检—>主板上的BIOS程序

BIOS程序

BIOS程序是英文“Basic Input Output System”的缩略词,直译过来后中文名称就是基本输入输出系统,BIOS是个人电脑启动时加载的第一个软件

它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息,其主要功能是为计算机提供最底层的最直接的硬件设置和控制,此外,BIOS还下昂作业系统提供了一些系统参数,系统硬件的变化是由BIOS隐藏,程序可用BIOS功能而不是直接控制硬件,现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

rom芯片:read only memory --》只读的存储器
ram芯片:随机存取存储器(random access memory的缩写 )–》可读可写

**CMOS:是一个存储BIOS参数配置的芯片,包括cpu的配置,时间的配置,启动顺序的配置,BIOS密码,可以读写,不是只读的 **
BIOS是一个程序会读取CMOS芯片里的参数

如何进入BIOS?

VMware虚拟机:

开机按F2或者如图操作

在这里插入图片描述

台式电脑:
开机按DEL或者delete键进入
笔记本电脑:
不同的产商不同
F2
F8
F12
F2+fn
F1~F12

启动顺序

在这里插入图片描述

第1引导顺序:hard drive 硬盘
第2引导顺序:cdrom 光驱 ----》安装系统
第3引导顺序:removable device 可移动设备–》u盘,移动硬盘 --》安装系统
第4引导顺序:Network --》从网络启动–》网络中安装服务器启动 --》安装

可以通过+ -来调整启动顺序

建议给你的笔记本的BIOS设置一个密码,防止其他人通过BIOS调整你的开机启动顺序,进入u盘启动,盗取你的笔记本电脑的数据。
设置密码建议简单一点,别自己的都忘记了–》台式和笔记本都可以扣掉主板上的电池,清空所有的配置,这样达到删除密码。

3.BIOS程序读取磁盘MBR加载grub2程序到内存

MBR:主引导记录,启动linux系统的地方,属于磁盘里比较特殊的位置(0磁道1扇区->512字节),存放着真正的启动程序grub或grub2

4.grub程序读取磁盘/boot下的vmlinuz和initramfs到内存

在这里插入图片描述

vmlinuz:可引导的,压缩的linux内核

initramfs:initial ram fs 初始化随机访问存储器文件,给内核程序提供一个初始化的内存文件系统的镜像文件,包括驱动程序、工具程序,配套的文件 --》临时的根文件系统的镜像文件

lsinitrd查看内核映像初始化文件

[root@felix_server boot]# lsinitrd initramfs-3.10.0-1160.el7.x86_64.img |more

在这里插入图片描述

可以看到initramfs类似于一个根文件系统

5.systemd进程启动指定运行级别对应的服务

vmlinuz和initramfs加载到内存后,会启动第一个进程systemd,systemd进程启动指定运行级别对应的服务。

运行级别

centos7以前

运行级别: 是比较老的概念(在centos7里已经淘汰了),不同的级别里会启动不同的程序,起到一个分类的作用
0 关机 init 0
1 单用户模式
2 多用户模式,不能使用网络里的NFS功能
3 完全多用户模式,能使用网络和同时很多人登录,登录进入系统是字符界面 init 3 -->一般情况下都是运行级别3
4 没有启用
5 图形界面模式 ,能使用网络和同时很多人登录,登录进入系统是图形界面 init 5
6 重启 init 6

查看当前运行级别

[root@felix_server boot]# runlevel
N 3

N 表示之前没有其他运行级别
3 表示当前的运行级别

centos7后

运行级别配置文件

[root@felix_server system]# vim /etc/inittab

在这里插入图片描述

查看默认运行级别

[root@felix_server boot]# systemctl get-default
multi-user.target

修改默认运行级别

[root@felix_server system]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@felix_server system]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

.service文件与服务开机自启的关系

比如进入/etc/systemd/system/multi-user.target.wants多用户级别文件创建一个service链接到sshd服务,就能实现sshd的开机自启

多用户级别文件位置

[root@felix_server system]# cd /etc/systemd/system
[root@felix_server system]# ls

在这里插入图片描述

[root@felix_server system]# cd multi-user.target.wants/
[root@felix_server multi-user.target.wants]# ls

在这里插入图片描述

设置一个程序开机自启,其实就是创建一个.service的链接文件到这个目录下

[root@felix_server multi-user.target.wants]# systemctl disable sshd   关闭sshd服务开机自启
Removed symlink /etc/systemd/system/multi-user.target.wants/sshd.service.   取消软链接
[root@felix_server multi-user.target.wants]# systemctl enable sshd    开启sshd服务开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to  增加软链接 /usr/lib/systemd/system/sshd.service.

.service文件与systemd进程的关系

sshd.service文件的作用:其实就是告诉systemd这个服务是干什么的,如何启动,如何停止,如何重启

在这里插入图片描述

[root@felix_server system]# systemctl stop sshd
[root@felix_server system]# systemctl start sshd
[root@felix_server system]# systemctl restart sshd

systemctl背后是告诉systemd去启动,停止、重启某个服务
systemd会去调用对应的service文件,找到对应的程序的名字,执行相关的操作

yum安装的程序,都会有一个对应的service文件
但是编译安装的程序,没有service文件,需要我们自己手工的去新建一个service文件,存放到multi-user.target.wants目录下,就可以使用systemctl start 方式启动

6.当所有的服务都启动后,执行/etc/rc.local脚本里的命令

运行级别文件里的服务都启动后,会执行/etc/rc.local脚本里的命令

[root@felix_server system]# vim /etc/rc.local 

在这里插入图片描述

7.读取/etc/fstab文件,加载真正的文件系统

/etc/fstab文件作用:告诉linux系统,挂载磁盘里的其他分区,加载真正的文件系统,这样用户可以使用这个磁盘的所有分区的数据了,读取文件

8.启动login登录进程,登录用户并加载用户环境变量初始化文件

查看登录进程

[root@felix_server system]# ps aux|grep login
root        680  0.0  0.3  26384  1744 ?        Ss   14:46   0:00 /usr/lib/systemd/systemd-logind
root       1646  0.0  0.2 112828   988 pts/0    S+   16:30   0:00 grep --color=auto login

在这里插入图片描述

终端类型

登录的时候,linux系统给我们提供了6个登录终端

[root@server ~]# w
 16:40:23 up 18:36,  4 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      145月23 47.00s  0.27s  0.27s -bash
root     pts/1    192.168.223.1    14:59    7.00s  0.50s  0.00s w
root     tty2                      16:39   23.00s  0.02s  0.02s -bash
root     tty3                      16:40   15.00s  0.01s  0.01s -bash

TTY ,terminate type,linux系统里自带的终端,最正宗的,直接可以使用的终端有6个

切换方式:ctrl+alt+F1~F6

tty1 直接登录linux系统的第1个终端 ctrl+alt+F1
tty2 ctrl+alt+F2

pts ,是模拟器模拟出来的终端(伪终端),例如:xshell 远程登录工具模拟出来的
pts/0
pts/1
pts/2

在这里插入图片描述

问题

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

不能

2.木马程序可以藏身在哪里?实现开机自启

  1. 创建一个service文件在多用户级别文件目录下
  2. 加入/etc/rc.local
  3. 加载用户环境变量时,写入初始化文件~/.bashrc等
  4. 开启计划任务,定时执行

猜你喜欢

转载自blog.csdn.net/qq_57629230/article/details/130973746