目录
Linux系统开机启动流程
为什么要了解系统开机启动流程
- 掌握让某个软件开机自动运行
- 开机不能正常启动,是什么原因,或者那个环节出现了问题
- 防止黑客植入木马,去查询黑客会把木马放到哪些地方?
电脑的硬件有哪些
目前主要的云服务器厂商:
云厂商:阿里云、腾讯云、华为云、aws等
cpu著名的厂家:
intel amd 英伟达NVIDIA
英伟达NVIDIA能崛起的原因(两个风口):
-
元宇宙:图形图像处理
-
chatGPT:消耗cpu–》深度学习,机器学习 --》openAI
我国著名的大模型厂商: 百度、360、阿里、华为、科大讯飞等
算力 --》GPU、CPU
关机的命令
关机的命令
以下是关机命令的区别:
开机流程图:
开机自检(Power-On Self-Test,POST)
1.肯定有个硬件或者硬件里的软件来完成工作?谁完成?
硬件: 主板
主板里有个BIOS程序来完成自检的工作
2.检查什么呢?
检查电脑里的硬件是否存在
主板(motherboard): 是所有的硬件的载体,插到主板上,所有的硬件之间的数据传输靠主板传送。
集成主板: 声卡,显卡,网卡都集成到主板里了
开机自检的流程:
BIOS
ROM和RAM
- 可写性:
- ROM:ROM是一种只读存储器,其中的数据在制造过程中被写入,并且无法直接修改。它通常包含固化的指令集、固件或数据,供计算机系统在启动时使用。
- RAM:RAM是一种可读写存储器,可以随时写入和读取数据。它用于暂时存储计算机运行过程中的数据和程序。
- 数据持久性:
- ROM:ROM的数据是持久的,即使在断电或重新启动后仍然保持不变。它的内容在制造过程中被固化,并且无法被修改或擦除。
- RAM:RAM的数据是临时的,当电源断开时,其中的数据会丢失。RAM需要持续的电源供应来维持存储的数据
BIOS的介绍
CMOS的介绍:
BIOS和CMOS的区别和联系
如何进入BIOS系统?
- 台式机:del键、delete
- 服务器: 开机有提醒
- 笔记本: F1,F2,F8 ,F12 、fn+F2 、fn+f8等
自己的:在Linux重新启动的一瞬间按F2就可以进入BIOS。
如何改BIOS的顺序以及为什么要改
这是我linux机器Boot的引导顺序:
Boot引导顺序如何改:
- 一旦进入BIOS设置界面,使用方向键(上、下、左、右)导航到"Boot"(启动)或类似的选项。
- 在启动选项中,可能会看到一个启动顺序列表,其中列出了可用的引导设备。
- 使用方向键将所需的设备移动到所需的引导顺序位置。通常,可以使用+/-键或其他指定的按键来更改设备的顺序。
- 保存更改并退出BIOS设置界面。通常,可以使用特定的按键(如F10键)保存更改并退出。
我将引导顺序改下如下:
- 第1引导顺序:hard drive 硬盘
- 第2引导顺序:cdrom 光驱 ----》安装系统
- 第3引导顺序:removable device 可移动设备–》u盘,移动硬盘 --》安装系统
- 第4引导顺序:Network --》从网络启动–》网络中安装服务器启动 --》安装
为什么要改
- 安全性考虑:如果希望提高系统的安全性,可以将硬盘设置为首选引导设备。这样做可以防止未经授权的可移动设备在未经许可的情况下启动您的计算机,从而增加系统的安全性。
- 系统性能:如果计算机已经安装了操作系统并且通常从硬盘启动,将硬盘设置为首选引导设备可以提高启动速度和系统响应性能。
- 操作系统安装:如果计划安装新的操作系统或从光驱启动进行系统维护和故障排除,将CD-ROM驱动器设置为较高的引导顺序可能更合适。
- 网络启动需求:如果计划使用网络启动功能进行远程操作系统部署或恢复操作,将网络启动作为较低的引导顺序可能更合适。
MBR(主引导记录)
MBR(Master Boot Record)是计算机硬盘上的一个特殊区域,包含有基本的boot loader,它是一个512字节大小的扇区,位于磁盘的第一个扇区(0磁头0磁道1扇区)。当MBR被装载到RAM中后,BIOS就会将控制权转交给MBR。
MBR:第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序
MBR的最后两个字节必须是特殊数字0xAA55
。这个数字被用作MBR的结束标志,也是对MBR有效性的校验确认。当这两个字节的值为0x55AA
时,MBR才被认为是有效的。
主boot loader的工作是寻找并加载次boot loader(内核加载程序)
装载记录
基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。
装载Grub
Grub在Linux系统中的作用是作为引导加载程序,负责选择要启动的操作系统、加载内核文件并传递参数
装载系统
GRUB把机器的控制权移交给操作系统。
Grub2
[root@ydh boot]# ls
config-3.10.0-1160.el7.x86_64
efi
grub
grub2
initramfs-0-rescue-828a183ae76a43258e638f079ed4cedf.img
initramfs-3.10.0-1160.el7.x86_64.img
initramfs-3.10.0-1160.el7.x86_64kdump.img
symvers-3.10.0-1160.el7.x86_64.gz
System.map-3.10.0-1160.el7.x86_64
vmlinuz-0-rescue-828a183ae76a43258e638f079ed4cedf
vmlinuz-3.10.0-1160.el7.x86_64
Grub2(Grand Unified Bootloader 2)是一个常用的引导加载程序,用于在Linux系统启动过程中管理和加载操作系统。
-
提供启动菜单:Grub2在计算机启动时显示一个菜单,列出可用的操作系统和内核选项。用户可以选择希望启动的操作系统或内核版本。
-
加载操作系统内核:一旦用户选择了要启动的操作系统或内核,GRUB2负责加载相应的内核文件(例如vmlinuz)到内存中。
-
加载初始RAM磁盘映像(initramfs):对于使用initramfs的Linux系统,Grub2还负责将initramfs文件加载到内存中。initramfs包含了用于引导系统的必要文件和驱动程序。
-
启动操作系统:当内核和initramfs被加载后,Grub2将控制权转交给内核,启动操作系统的初始化过程。
-
提供启动参数:Grub2允许用户在启动菜单中设置启动参数,如内核参数、运行级别等。这些参数可以影响系统的启动行为和配置。
-
支持多重引导:Grub2允许在同一计算机上安装多个操作系统,并提供方便的菜单选择界面,使用户可以轻松切换不同的操作系统。
Grub2负责加载内核、initramfs和启动操作系统,
vmlinuz-3.10.0-1160.el7.x86_64 linux的内核文件,是一个可执行的程序 --》皇上
initramfs-3.10.0-1160.83.1.el7.x86_64.img 是一个压缩文件,给vmlinuz提供很多程序和驱动的文件,在内存里形成一个临时的根文件系统
systemd
systemd是一种初始化系统和系统管理器,广泛用于现代Linux系统中。它负责在Linux系统引导过程中启动各个服务和进程,并管理系统的运行状态。
在Linux系统的开机启动流程中,systemd的作用包括以下几个方面:
-
引导管理:systemd取代了传统的SysV init和Upstart,作为Linux系统的默认初始化系统。它负责引导过程中的各个阶段,包括硬件初始化、文件系统挂载、设备驱动加载等。
-
服务管理:systemd通过服务单元(service units)的定义和管理,控制系统中各个服务的启动、停止、重启和状态监控。每个服务单元都有对应的配置文件,可以设置依赖关系、启动顺序、运行参数等。
-
并行启动:相比传统的序列启动方式,systemd支持并行启动服务,提高系统启动的效率。它通过分析服务之间的依赖关系,可以并行启动那些不相互依赖的服务,加快系统的启动速度。
-
日志管理:systemd引入了journald日志系统,负责收集和管理系统的日志信息。它提供了更强大的日志功能,支持日志的持久化存储、查询和过滤,方便系统管理员进行故障排查和性能分析。
-
用户会话管理:systemd提供了用户会话管理功能,用于启动和管理用户登录的会话。它可以在用户登录时自动启动用户相关的服务,以及在用户退出时进行清理操作。
总之,systemd的作用有:服务管理、日志管理等功能,提高了系统的启动效率和管理能力。
查看进程树
[root@ydh boot]# yum install psmisc -y
[root@ydh boot]# pstree -p
systemd(1)─┬─NetworkManager(692)─┬─{NetworkManager+
│ └─{NetworkManager+
├─VGAuthService(677)
├─agetty(709)
...
第一个进程systemd --》centos7/8/9
第一个进程init --》centos6
设定运行级别
运行级别 run level: 是比较老的概念,在centos6里非常流行,到了centos7以后,这种说法不常见
[root@ydh boot]# runlevel 查看当前的运行级别
N 3 N表示NO 开机直接进入运行级别3 没有其他的级别
[root@ydh boot]# init 5
[root@ydh boot]# runlevel
5 3 开机的时候进入的是运行级别5 现在是运行级别3
[root@ydh boot]#
因为选择的是最小安装,只有多用户模式,没有图形界面模式,因此输入init5的时候不会有响应。
[root@ydh microcode]# systemctl get-default 查看默认的启动模式(运行级别)
multi-user.target
/etc/inittab
是一个配置文件,它定义了系统的运行级别、默认的终端设备、系统启动时运行的进程和脚本等。
[root@ydh boot]# cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
如何安装图形界面模式
我们在重新安装虚拟机的时候
在软件选择
中进行设置。
我们选择上面三种都可以。
安装好虚拟机后,重启第一次进入虚拟机后会出现
这跟我们平时重新安装windows系统是差不多的。
最后出现
这样我们就按照好了图形界面模式了。
这个时候我们我们在命令行输入init 3
跳转到多用户模式了。随后输入init 5
会跳转到图形界面模式了,这个时候输入init 3 和5
就出现变化了。
在这个机器启动会进入图形界面模式。
可以通过设置默认模式来改变
[root@scnode2 microcode]# systemctl set-default multi-user.target 多用户模式
[root@scnode2 microcode]# systemctl set-default graphical.target 图形界面模式
输入 默认模式:多用户模式后
default.target -> /lib/systemd/system/multi-user.target
会出现一个软连接,输入图形界面模式default.target
会指向/lib/systemd/system/graphical.target
启动服务
例如设置开机自启 (关闭)sshd:
[root@ydh system]# ll
总用量 4
drwxr-xr-x. 2 root root 57 4月 7 13:06 basic.target.wants
lrwxrwxrwx. 1 root root 57 4月 7 13:06 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
lrwxrwxrwx. 1 root root 37 4月 7 13:08 default.target -> /lib/systemd/system/multi-user.target
drwxr-xr-x. 2 root root 87 4月 7 13:06 default.target.wants
drwxr-xr-x. 2 root root 32 4月 7 13:06 getty.target.wants
drwxr-xr-x. 2 root root 35 4月 7 13:06 local-fs.target.wants
drwxr-xr-x. 2 root root 4096 6月 29 20:59 multi-user.target.wants
drwxr-xr-x. 2 root root 48 4月 7 13:06 network-online.target.wants
drwxr-xr-x. 2 root root 6 11月 11 2022 nginx.service.d
drwxr-xr-x 2 root root 24 6月 13 19:17 redis-sentinel.service.d
drwxr-xr-x 2 root root 24 6月 13 19:17 redis.service.d
drwxr-xr-x. 2 root root 29 4月 7 13:06 sockets.target.wants
drwxr-xr-x. 2 root root 254 4月 7 13:06 sysinit.target.wants
drwxr-xr-x. 2 root root 44 4月 7 13:06 system-update.target.wants
drwxr-xr-x. 2 root root 29 4月 7 13:06 vmtoolsd.service.requires
输入下面的命令后
[root@ydh multi-user.target.wants]# systemctl disable sshd.service
可以看到
[root@ydh multi-user.target.wants]# pwd
/etc/systemd/system/multi-user.target.wants
在该目录下面以及没有sshd.service
服务了。
重新输入systemctl disable sshd.service
后。
[root@ydh multi-user.target.wants]# cat sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service] 对sshd具体的程序放在哪里进行说明
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS 启动sshd
ExecReload=/bin/kill -HUP $MAINPID 重启/杀死
KillMode=process
Restart=on-failure
RestartSec=42s
[Install] 表示可以通过systemctl来进行管理
WantedBy=multi-user.target
只要是yum安装的软件,会自动创建一个service文件
编译安装的文件没有,需要自己去创建service
systemd程序可以管理服务了,我们可以通过下面的命令
rc.loacl
当所有的服务都启动后,会去执行/etc/rc.local
脚本里的命令.
[root@ydh system]# cat /etc/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
touch /var/lock/subsys/local
必须要授予rc.local文件可执行权限,不然里面的命令不会执行.
适用场景:rc.local
文件适用于那些不适合放在单独的服务单元中管理的简单命令或脚本。例如,启动自定义服务、挂载网络共享、配置网络接口、设置环境变量等。
[root@ydh system]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 4月 7 13:06 /etc/rc.local -> rc.d/rc.local
fstab
/etc/fstab
文件是告诉linux系统,挂载磁盘里的其他分区,这样用户可以使用这个磁盘的所有分区的数据了,读取文件
加载真正的根文件系统
根据/etc/fstab
文件里的分区信息,进行挂载,这样我们就知道了整个系统里的磁盘有哪些分区可以使用
如何开机自启?
4个用户环境变量的配置文件
影响某个用户
~/.bashrc
~/.bash_profile
影响所有的用户
/etc/bashrc
/etc/profile
/etc/bashrc添加下面的命令,每个用户登录成功后都会执行
/etc/rc.local 是一个用于在 Linux 系统启动时执行自定义命令和脚本的文件
可以将想要开机自启的操作放到对应文件下面就可以了。
需要注意的是:使用/etc/rc.local
需要给可执行权限。
思考
1.开机启动的某个环节出现问题,机器是否可以启动,例如删除/boot分区,破坏MBR?
2.木马程序可以在哪里藏身?实现开机自启
从systemd后面的过程
计划任务
打开的可疑端口
7788
80
8080
22 2233
可疑的进程: ps aux 、top、htop
yum install iotop iftop nethogs
iotop: 某个进程对磁盘的读写速度 input output 磁盘
iftop: 接口的流量 interface 你的服务器和其他的电脑之间的网络流量
nethogs :查看某个网络通信的进程的流量
3重新安装系统需要注意什么?
备份重要的数据
如何制作启动u盘给电脑安装windows或者linux系统呢
工具:
大白菜
老毛桃
电脑店
u启动
准备工作:
1.准备一个u盘(32G以上)
2.下载windows的镜像、linux镜像
http://uqidong.juxiang88.cn/upqdpzzjc/upqdzz.html
启动u盘本质上就是一个安装了微型系统的硬盘,可以用来启动电脑,再给电脑安装windows10、win11等
不建议用这样的形式重装系统,可能会有病毒,还是尽可能选择更安全的方式安装系统。