开机启动流程
我们为什么要了解开机启动流程?
排查服务器启动不了的故障,了解原因(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的工作原理
本地查询,要求已经安装了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 启动营救环境