开机启动流程

我们为什么要了解开机启动流程?

排查服务器启动不了的故障,了解原因(troubleshooting)

开机启动流程的意义:

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



开机自检:上电自检(POST,Power On Self Test)。

自检什么东西?
谁去检查?
主板—》BIOS
指计算机系统,接通电源,(BIOS程序)的行为,包括对CPU、系统主板、基本内存、扩展内存、系统ROM BIOS等器件的测试。如发现错误,给操作者提示或警告。简化或加快该过程,可使系统能够快速启动。

电脑里有哪些基本的硬件?

主板(motherboard)、cpu、内存,磁盘,网卡,显卡,声卡,电源,鼠标,键盘、显示器等

开机自检:谁去完成?
主板上的BIOS程序去完成

BIOS程序

BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。
BIOS是个人电脑启动时加载的第一个软件。
它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

bios是一个程序 app.py CMOS芯片里存放的是BIOS程序的参数 config -->cnofig.py
rom芯片:read only memory --》只读的存储器
ram芯片:随机存取存储器(random access memory的缩写)–》可读可写

CMOS:

是一个存储参数配置的芯片
BIOS是一个程序会读取CMOS芯片里的参数,了解cpu的配置,时间的配置,启动顺序的配置等

boot:引导、启动

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

MBR

不同盘片的相同磁道组成一个柱面

一个磁盘可以划分很多磁道,一个盘面63个分区,一个扇区512字节

磁盘的0磁盘0柱面1扇区—》MBR(master boot record)主引导记录

MBR就是一个扇区,占用512字节–安装了一个启动程序

MBR的组成:

分区表(64字节)

grub2(446字节)

剩余两字节

grub

grub是linux系统的启动程序(在MBR里)

grub2时grub的第二个版本

[root@centos8-zabbix boot]# ls
config-4.18.0-147.el8.x86_64                             loader
efi                                                      lost+found
grub2                                                    System.map-4.18.0-147.el8.x86_64
initramfs-0-rescue-112c6ff62f7b4177a51497a69ae6a7c8.img  vmlinuz-0-rescue-112c6ff62f7b4177a51497a69ae6a7c8

vmlinuz-----内核程序文件(皇上)

initramfs—给内核程序提供一个初始化的内存文件系统的镜像文件(政府,各个职能部门)–临时的根文件系统的镜像文件(提供程序和一些配置文件)

init 初始化
ram 内存里存储
fs 文件系统 filesystem

systemd

systemd是initramfs里的一个程序去启动的程序,需求去启动(可以通过pstree -p 查看)

centos6里的运行级别(runlevel)

0 关机

1单用户模式

2多用户模式不能使用nfs

3完全多用户模式–字符界面模式—》非常正常的模式 默认最小化安装linux系统就是这个模式

4保留没有使用

5图形界面

6重启

init 0 关机

init 6 重启

init 5 进入图形界面,但需要安装图形界面

init 3进入字符界面

[root@localhost boot]# runlevel 查看当前的运行级别
N 3
N 代表最开始进入的模式 如果是N表示没有进行模式切换 no

3 5 代表开机先进入运行级别3 ,后来切换到运行级别5

[root@localhost boot]#

[root@localhost boot]# vim /etc/inittab
[root@localhost boot]# vim /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

[root@localhost boot]# systemctl get-default  #查看默认的运行级别
multi-user.target
[root@localhost boot]systemctl set-default graphical.target #设置开机进入图形界面


cpu工作原理

cpu的工作原理

bios开机自检有什么用 简述bios开机自检的流程_bios开机自检有什么用

本地查询,要求已经安装了pstree命令的软件包
[root@localhost boot]# which pstree 查看pstree在哪里
/usr/bin/pstree
[root@localhost boot]# rpm -qf /usr/bin/pstree 查询文件是通过那个软件安装过来的
psmisc-22.20-17.el7.x86_64
[root@localhost boot]#yum install psmisc 安装
yum provides pstree 到yum源里去查询pstree是通过那个软件安装的—》要求能上网

centos7/8/9里的第一个进程是systemd
centos6里的第一个进程是init

[root@localhost boot]# pstree -p
systemd(1)─┬─NetworkManager(13476)─┬─dhclient(33463)
           │                       ├─{NetworkManager}(13484)
           │                       └─{NetworkManager}(13488)
           ├─crond(13569)
           ├─dbus-daemon(13478)───{dbus-daemon}(13485)
           ├─login(13471)───bash(13577)
           ├─lvmetad(13474)
           ├─nginx(27561)───nginx(27562)
           ├─polkitd(13499)─┬─{polkitd}(13505)
           │                ├─{polkitd}(13508)
           │                ├─{polkitd}(13512)
           │                ├─{polkitd}(13515)
           │                ├─{polkitd}(13516)
           │                └─{polkitd}(13523)
           ├─rsyslogd(13475)─┬─{rsyslogd}(13481)
           │                 └─{rsyslogd}(13483)
           ├─sshd(13612)─┬─sshd(33487)───bash(33491)───pstree(36378)
           │             └─sshd(35945)───bash(35949)
           ├─systemd-journal(13472)
           ├─systemd-logind(13473)
           └─systemd-udevd(13470)
[root@localhost boot]#

与以前的版本相比,由于在引导期间并行执行,该脚本不会在所有其他服务之后运行。
/etc/rc.local文件会在所有的服务都运行完成后,执行这个文件里的命令
这个脚本是最后执行的,必须给这个文件可执行权限

[root@localhost multi-user.target.wants]# chmod +x /etc/rc.d/rc.local
[root@localhost multi-user.target.wants]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 521 6月  12 07:02 /etc/rc.d/rc.local
[root@localhost multi-user.target.wants]#

systemctl disable firewalld 设置firewalld服务开机不启动 --》下一次开机的问题

systemctl enable firewalld 设置firewalld服务开机启动
systemctl start firewalld 立马启动firewalld的服务 --》本次
systemctl stop firewalld 立马关闭firewalld的服务

service sshd start —> systemctl start sshd
旧式启动服务的方式 新式启动服务的方式

/etc/fstab 告诉linux系统正常启动过程中挂载那个磁盘分区

file system 文件系统–》磁盘里的分区–》一个分区对应一个文件系统

自己编写了一个程序,需要它开机自启:

1.做成服务(.server文件)
2./etc/rc.local
3.bash初始化的4个配置文件里

4.计划任务

新建普通用户的时候,/etc/shadow里的秘密字段需要为*,不是!! 怎么样实现?

不允许直接修改/etc/shadow文件里的!!为*

将设置了密码的用户在/etc/shadow里的密码字段设置为*

/etc/shadow文件的密码字段为

*表示不允许登录

!!表示为没有设置密码

不让用户登录:

passwd -l 用户 用户就不能登录了

useradd -p “*” jack

usermod -p “*” jack

man 1 passwd 查看passwd命令的使用
man 5 passwd 查看/etc/passwd文件里的配置的使用说明
[root@nginx-kafka01 ssh]# man 5 sshd_config

[root@nginx-kafka01 ~]# sed -r  -i '/tongtong/ s/:[$0-Z.!/]+:19199:/:*:19199:/' shadow

passwd  -l tongtong
/etc/passwd --->bash 修改nologin

营救模式

思考一个模式:
紧急模式(营救模式) --》需要关机重新启动,进入光驱里的系统
1.设置启动顺序–》从光驱启动
2.选择troubleshooting 故障处理
3.选择rescue 开头的
4.选择1 continue
5.输入chroot /mnt/sysimage 从光驱里的系统的根目录切换到原来的磁盘的linux系统里的根目录
6.进入相关的文件,进行修改就可以
7.exit 退出bash环境
8.reboot 启动营救环境