主要内容
- 系统启动配置
- Grub 加固
- 服务启动管理
系统启动配置
RHEL7 依然可以通过MBR启动,MBR保存着系统的主引导程序(grub 446字节,分区表64字节,2字节校验),启动过程就是把内核加载到内存。
启动的顺序:
1、BIOS;
2、BIOS激活MBR;
3、MBR中的引导程序(grub)加载到内存,生成一个微系统(如xfs);
4、grub 读取分区表,找到引导分区;
5、grub读取自身的配置文件,找到内核文件
6、加载内核文件;
RHEL7中第一个启动进程是 systemd
1 | [root@localhost ~]#pstree -p | more |
RHEL7设置启动级别
RHEL7 不在使用 inittab
, 打开inittab
可以看到如下内容;
1 | [root@localhost ~]# vim /etc/inittab |
查看当前运行级别
1 | [root@localhost ~]# systemctlget-default |
切换运行级别
1 | [root@localhost ~]# systemctl isolate graphical.target |
设置默认的运行级别
1 | [root@localhost ~]# systemctl set-default multi-user.target |
grub引导配置
- 主要配置文件
/etc/grub2.cfg
/etc/default/grub
1 | [root@localhost ~]# ll /etc/grub2.cfg |
- 修改配置
修改系统启动参数的时候,不要直接修改 ,因为如果后期更新内核的时候,那个grub.cfg也会自动更新,先前所做的配置会全部失效,如果需要修改,建议修改/etc/default/grub,然后使用grub2-mkconfig 命令生效。这个文件是由/etc/grub.d/00_header文件调用
1 | [root@localhost ~]# vim /etc/default/grub |
Grub 加固
明文
1 | [root@localhost ~]# vim /etc/grub.d/00_header |
注意:用来加密的用户sam和系统中的用户没有任何关系, sam不是系统用户都可以。
pbkdfv2算法加密
grub1.98版之后,可以设定加密的密码
生成 pbkdfv2 加密的密码
1
2
3
4[root@localhost Desktop]# grub2-mkpasswd-pbkdf2
Enter password: #输入 123
Reenter password: #输入 123
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.8EE07022D712A9EDB5EA8CA2AA8FC8B3166D903FC2BD058FAE95F8950D115EE8722099F07EBB223D0B9475B90B01D8A6C04580273B0866674005603554AFEF0C.28A856AC620C831BC1E04C2E23B5602BEDCC6910EBFCA3D2ADEFE3F39166AAFE7DAE4EFF10E090945009DE73D2D3F0005E32930F13F8D55CD7F34ACF9C77276F将加密的密码写入/etc/grub.d/00_header文件
1
2
3
4
5
6
7[root@localhost ~]# vim /etc/grub.d/00_header
#末尾增加如下内容
cat <<EOF
set superusers="sam"
password_pbkdf2 sam grub.pbkdf2.sha512.10000.8EE07022D712A9EDB5EA8CA2AA8FC8B3166D903FC2BD058FAE95F8950D115EE8722099F07EBB223D0B9475B90B01D8A6C04580273B0866674005603554AFEF0C.28A856AC620C831BC1E04C2E23B5602BEDCC6910EBFCA3D2ADEFE3F39166AAFE7DAE4EFF10E090945009DE73D2D3F0005E32930F13F8D55CD7F34ACF9C77276F
EOF更新grub
1
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
验证:重启, 在grub页面 输入 e
; 用户 sam
; 密码 123
服务启动管理
服务启动配置
RHEL7中所有的开机启动的服务,都会在 /etc/systemd/system/multi-user.target.wants
中有对应的链接文件
将服务设置为开机自动启动,其实就是将 /usr/lib/systemd/system
目录下的服务配置文件做一个软链接到/etc/systemd/system/multi-user.target.wants/目录下
开机启动
例:安装httpd服务,并设置为开机自动启动1
2
3
4[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl enable httpd
ln -s '/usr/lib/systemd/system/httpd.service''/etc/systemd/system/multi-user.target.wants/httpd.service'开机不启动
将服务设置为自动关闭,其实就是将/usr/lib/systemd/system/目录下的服务配置文件的软链接进行删除1
2[root@localhost ~]# systemctl disable httpd
rm'/etc/systemd/system/multi-user.target.wants/httpd.service'查看服务开机启动状态
1
2[root@localhost ~]# systemctlis -enabled httpd
disabled启动和关闭服务
1
2
3[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# systemctl stop httpd
Systemd && systemV
Systemd和systemV服务启动方式对比
1)systemV 在服务启动方面采用的是顺序启动,即每一个服务都有对应的启动顺序,优先级越高那么在服务启动时就会被优先启动
2)systemd 在服务启动方面则是采用了并行启动的方式,而且按需启动,减少系统资源消耗,大大节省了系统启动的等待时间
相比较systemd而言,systemv的优势
1)原理简单,易于理解
2)依靠shell脚本控制,编写服务脚本门槛比较低
缺点:
1)服务顺序启动,启动过程比较慢
2)不能做到根据需要来启动服务,比如:通常希望在插入U盘的时候,再启动USB控制的服务,这样可以更好的节省系统资源
原本,systemv的服务启动慢,并不是一个问题,尤其是Linux系统以前主要是运行在服务器上,常年也难得重启一次,每次重启硬件检测都需要5分钟以上,相对来说系统启动已经很快了
但是随着移动互联网的到来,Systemv 服务启动慢的问题显得越来越突出,许多移动设备都是基于Linux内核,系统启动比较频繁,如果每次启动时都要等待服务顺序启动,显然难以接受,systemd就是为了解决这个问题诞生的
其他
查看系统启动时间
1 | [root@localhost ~]#systemd-analyze |
查看每个服务的启动时间
1 | [root@localhost Desktop]# systemd-analyze blame |
查看严重消耗时间的服务树状表
1 | [root@localhost ~]# systemd-analyze critical-chain |
列出所有服务并且检查是否开机启动
1 | [root@localhost ~]# systemctl list-unit-files --type service |